selection d'une note pour le text [resolu]

vos questions concernant les API SolidWorks

selection d'une note pour le text [resolu]

Messagepar desaint » Jeu 09 Oct 2008, 12:26

bonjour,

voila je sélectionne une note avec cette commande
Code: Tout sélectionner
retval = swDraw.Extension.SelectByID("Objet de détail28@Fond de plan" & i, "NOTE", 0.2743925716499, 0.1919397908598, 0, False, 0, Nothing)




donc jusque la pas de problème seulement je voudrais récupéré le texte de cette note ?

et je ne trouve pas

merci pour tout :wink:
Dernière édition par desaint le Mer 15 Oct 2008, 14:09, édité 1 fois.
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Jeu 09 Oct 2008, 13:14

Salut desaint,

Voici un exemple SW qui fonctionne bien(sur sw2008...). Cet exemple permet de récupérer toutes les notes d'une mise en plan et de récupéré leur nom et valeur.

Code: Tout sélectionner
'---------------------------------------------

'

' Preconditions: Drawing document is open.

'

' Postconditions: All notes in the drawing template are selected.

'

'----------------------------------------------

Option Explicit

Sub main()

    Dim swApp                       As SldWorks.SldWorks

    Dim swModel                     As SldWorks.ModelDoc2

    Dim swDraw                      As SldWorks.DrawingDoc

    Dim swView                      As SldWorks.View

    Dim swNote                      As SldWorks.note

    Dim swAnn                       As SldWorks.Annotation

    Dim bRet                        As Boolean

    Set swApp = CreateObject("SldWorks.Application")

    Set swModel = swApp.ActiveDoc

    Set swDraw = swModel

    Set swView = swDraw.GetFirstView        ' This is the drawing template

    Set swNote = swView.GetFirstNote

   

    swModel.ClearSelection2 (True)

   

    Debug.Print "File = " & swModel.GetPathName

   

    Do While Not swNote Is Nothing

        Set swAnn = swNote.GetAnnotation

       

        bRet = swAnn.Select2(True, 0)

        Debug.Assert bRet

       

        Debug.Print "  " & swNote.GetName

        Debug.Print "    " & swNote.GetText

   

        Set swNote = swNote.GetNext

    Loop

End Sub

'---------------------------------------------
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar desaint » Jeu 09 Oct 2008, 13:25

mookymook a écrit:Salut desaint,

Voici un exemple SW qui fonctionne bien(sur sw2008...). Cet exemple permet de récupérer toutes les notes d'une mise en plan et de récupéré leur nom et valeur.



salut mooky

merci mais le truc en faite c'est que je veux pouvoir récupérer le texte seulement de l'annotation que j'ai sélectionner


le truc c'est que je la sélectionne ( sa pas de problème ) et après j'e veux récupère le texte mais comment ?
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Re: selection d'une note pour le text

Messagepar mookymook » Jeu 09 Oct 2008, 13:46

J't'ai bricioler un ptit bout de code rapide, mais je ne l'ai pas tester. Je l'ai fait a partir d'un autre exemple(entre nous je n'aime pas la déclaration des objets, ce n'ai pas propre...).

Il faudra peut-être que tu le retravaille en fonction de ton code existant pour qu'il fonctionne. Mais dans tout les cas, ce code t'explique la démarche à suivre.

Tiens moi au courant :wink:

Code: Tout sélectionner

Dim swApp As Object   

Dim Model As Object

Dim SelMgr As Object   

Set swApp = CreateObject("SldWorks.Application")

Set Model = swApp.ActiveDoc

Set SelMgr = Model.SelectionManager() 

retval = swDraw.Extension.SelectByID("Objet de détail28@Fond de plan" & i, "NOTE", 0.2743925716499, 0.1919397908598, 0, False, 0, Nothing)

' If user has selected something

If (SelMgr.GetSelectedObjectCount <> 0) Then 

' Get the first item in the selection list

Set selObj = SelMgr.GetSelectedObject2(1) 

' If selected object is a note

If (SelMgr.GetSelectedObjectType(1) = 15) Then

debug.print selObj.GetText()   

End If

Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar desaint » Jeu 09 Oct 2008, 14:26

wé nickel mooky !!

une dernière question par quoi je doit remplacer le
Code: Tout sélectionner
"Objet de détail28@Fond de plan" & i


pour avoir ma note en haut a droite a coup sur ?
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Jeu 09 Oct 2008, 15:34

Je ne comprend pas ta question Desaint, peux-tu préciser ?
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar desaint » Jeu 09 Oct 2008, 16:13

mookymook a écrit:Je ne comprend pas ta question Desaint, peux-tu préciser ?


en faite si ma note et mon fond de plan sont différent que
Code: Tout sélectionner
"Objet de détail28@Fond de plan" & i


sa plante !

Donc je demande ce que je doit faire pour mette dans la commande sélect

ex:

"Objet de détail28@Fond de plan" & i

si sa change en

"Objet de détail2555@Fond de plan" & i

sa plante :cry:

merci
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Jeu 09 Oct 2008, 17:16

Quel est la donnée qui te permet de déterminer la note qu'il faut sélectionner ?

Exemple : - son nom
- Sa position sur le plan
- Sa police d'écriture
- ....

:?:
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar desaint » Jeu 09 Oct 2008, 17:19

mookymook a écrit:Quel est la donnée qui te permet de déterminer la note qu'il faut sélectionner ?

Exemple : - son nom
- Sa position sur le plan
- Sa police d'écriture
- ....

:?:


ba a vrai dire c'est la position en haut a gauche ! :?
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Jeu 09 Oct 2008, 21:42

Bon alors il n'y a qu'une solution,

Il faut récupérer toutes les notes de la mise en plan, et récupérer les coordonées de positionnement de chaqu'une. Ensuite on détermine laquelle se trouve le plus en haut à gauche du plan pour enfin récupérer sa valeur.

Je regarderai ça demain, à moins que tu veuille le programmer tout seul. Tiens moi au courant. :wink:
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar Chico » Jeu 09 Oct 2008, 23:32

Là Desaint, tu te surpasses, mais pas dans le bon sens. :roll:

Vraiment Desaint, ce serait bien si tu faisais un peu plus attention à faire des recherches avant de poster. À presque 400 messages, tu devrais avoir appris un peu.

Pourquoi je dis que tu te surpasses, parce que ce topic est exactement le même qu'une autre question que TU as déjà posé :roll:
http://www.logiciel-cao.com/forum/viewtopic.php?t=5982

De plus, tu utilises cette logique dans le post suivant :
http://www.logiciel-cao.com/forum/viewtopic.php?t=5989

Et j'ai réutilisé ton code pour aider Kitcarflo dans ces deux posts :
http://www.logiciel-cao.com/forum/viewtopic.php?t=6069
http://www.logiciel-cao.com/forum/viewtopic.php?t=6360

Évidemment, tu ne peux pas tout savoir, mais en faisant une recherche, je suis sûr que tu serais tombé sur l'un de ces posts. Et probablement sur d'autres, car je n'ai fait la recherche que dans ma mémoire, et non pas sur le forum.

Avec la logique de cette macro que TU as développé, il te reste seulement à établir des critères qui te permettront de choisir qu'elle note est la bonne, que ce soit sa position ou sa police. :wink:
Il vaut mieux poser une question et risquer d'avoir l'air idiot
une journée que de se taire et d'être bête toute sa vie.

8wd a dit : LA FONCTION RECHERCHE EST TON AMIE
http://www.logiciel-cao.com
Avatar de l’utilisateur
Chico
Esprit Jedi Solidworks
 
Messages: 3120
Inscription: Mer 12 Mar 2008, 19:16
Localisation: Mauricie (Québec) ------SW 2006 SP0.0

Messagepar desaint » Ven 10 Oct 2008, 8:01

Chico a écrit:Là Desaint, tu te surpasses, mais pas dans le bon sens. :roll:

Vraiment Desaint, ce serait bien si tu faisais un peu plus attention à faire des recherches avant de poster. À presque 400 messages, tu devrais avoir appris un peu.

Pourquoi je dis que tu te surpasses, parce que ce topic est exactement le même qu'une autre question que TU as déjà posé :roll:
http://www.logiciel-cao.com/forum/viewtopic.php?t=5982

De plus, tu utilises cette logique dans le post suivant :
http://www.logiciel-cao.com/forum/viewtopic.php?t=5989

Et j'ai réutilisé ton code pour aider Kitcarflo dans ces deux posts :
http://www.logiciel-cao.com/forum/viewtopic.php?t=6069
http://www.logiciel-cao.com/forum/viewtopic.php?t=6360

Évidemment, tu ne peux pas tout savoir, mais en faisant une recherche, je suis sûr que tu serais tombé sur l'un de ces posts. Et probablement sur d'autres, car je n'ai fait la recherche que dans ma mémoire, et non pas sur le forum.

Avec la logique de cette macro que TU as développé, il te reste seulement à établir des critères qui te permettront de choisir qu'elle note est la bonne, que ce soit sa position ou sa police. :wink:


oui tout sa je sais chico seulement c'est la sélection d'une note bien précise mais qui change de nom a chaque fois donc je suis perdu

tout ce que je suis sur c'est quelle ce trouve dans un périmètre en haut a droite et sa je ne voit pas comment faire
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Ven 10 Oct 2008, 9:07

Ptite question,

La note à récuérer fait-elle partie de la mise en plan, ou d'une vue ?
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Messagepar desaint » Ven 10 Oct 2008, 9:14

mookymook a écrit:Ptite question,

La note à récuérer fait-elle partie de la mise en plan, ou d'une vue ?


elle fait partie du fond de plan !
Avatar de l’utilisateur
desaint
Chevalier Jedi SolidWorks
 
Messages: 436
Inscription: Mer 09 Mai 2007, 16:09
Localisation: toulouse(31)

Messagepar mookymook » Ven 10 Oct 2008, 9:50

Voici un code qui de donne le nom et la valeur de la note le plus en haut à droite d'une mise en plan( toutes notes confondu) : Excuse si le code n'est pas très didactique mais je l'ai fais à l'arrache)

Code: Tout sélectionner
Option Explicit

Sub main()

    Dim swApp                       As SldWorks.SldWorks

    Dim swModel                     As SldWorks.ModelDoc2

    Dim swDraw                      As SldWorks.DrawingDoc

    Dim swView                      As SldWorks.View

    Dim swNote                      As SldWorks.note

    Dim swAnn                       As SldWorks.Annotation

    Dim bRet                        As Boolean

    Set swApp = CreateObject("SldWorks.Application")

    Set swModel = swApp.ActiveDoc

    Set swDraw = swModel

    Set swView = swDraw.GetFirstView        ' This is the drawing template

   

   

    swModel.ClearSelection2 (True)

   

    Debug.Print "File = " & swModel.GetPathName

        While Not swView Is Nothing

        Debug.Print "    " & swView.GetName2 & " [" & swView.Type & "]"

       
Dim posnote(500, 2) As Double

Dim compte As Integer

Dim Ntext(500, 2) As String

Dim tempval As Variant

Set swNote = swView.GetFirstNote


    Do While Not swNote Is Nothing
        compte = compte + 1
        Set swAnn = swNote.GetAnnotation

       

        bRet = swAnn.Select2(True, 0)

        Debug.Assert bRet

       

        Ntext(compte, 1) = swNote.GetName

        Ntext(compte, 2) = swNote.GetText
       
        tempval = swNote.GetTextPoint
        posnote(compte, 1) = tempval(0)
        posnote(compte, 2) = tempval(1)
        Debug.Print posnote(compte, 1) & " / " & posnote(compte, 2)
        Set swNote = swNote.GetNext

    Loop


        Set swView = swView.GetNextView

    Wend
   
Dim i As Integer
Dim dist As Double
Dim numGRtext As Integer
dist = 0


For i = 1 To compte

    If (posnote(i, 1) + posnote(i, 2)) > dist Then
       
        dist = (posnote(i, 1) + posnote(i, 2))
       
        numGRtext = i
       
    End If

Next i

MsgBox "La note qui se trouve le plus en haut à droite du plan est : " & Ntext(numGRtext, 1) & " et sa valeur est : " & Ntext(numGRtext, 2)

End Sub


Dis moi ce que cela donne :wink:
Avec les API, faites vous servir le café par votre PC !
Pensez à mettre[RESOLU] dans le titre de votre sujet
La fonction Rechercher est votre ami !
Téléchargez des Utilitaires Gratuits ICI
Création site internet
Avatar de l’utilisateur
mookymook
Membres du Conseil SolidWorks
 
Messages: 1690
Inscription: Mer 13 Fév 2008, 16:26
Localisation: Angers / Saumur (Laménitré) - SW2006 SP2.2

Suivante

Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

banniere