Autor
|
Thema: Selektion und anschließendes Suchen in Selektion (1944 mal gelesen)
|
zizorro Mitglied Dipl.-Ing. (FH)
Beiträge: 468 Registriert: 21.02.2002
|
erstellt am: 17. Sep. 2004 11:27 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich w�rde gerne �ber ein Makro erreichen, dass ein User aufgefordert wird, einen HybridBody zu selektieren und in diesem HB dann alle Elemente, die einen bestimmten Suchstring im Namen haben, sucht. Bisher sieht mein Skript so aus: Sub CATMain() Dim MyPart As Document Set MyPart = CATIA.ActiveDocument Dim Was(0) Was(0) = "HybridBody" Dim UserSel As Selection Set UserSel = CATIA.ActiveDocument.Selection UserSel.Clear MsgBox ("Bitte selektieren Sie den HybridBody") Dim SelBody As CATBSTR SelBody = UserSel.SelectElement(Was, "HybridBody w�hlen", true) MsgBox (UserSel.Item(1).Value.Name) UserSel.EndSelectElement ' ----------------------------- Suchen nach Namen Dim HB As HybridBody Set HB = UserSel Dim Liste As Collection Set Liste = CATIA.ActiveDocument.Selection Liste.Clear Liste.Search ".Name = *Suchstring_*;sel" End Sub Was mache ich da falsch? Das Makro bricht immer bei der Suche ab. Gru�, zizo
[Diese Nachricht wurde von zizorro am 17. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günter K. Mitglied
Beiträge: 21 Registriert: 16.08.2004
|
erstellt am: 17. Sep. 2004 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für zizorro
Hallo zizo, kann das sein, dass du dich einfach verschrieben hast? Der Aufruf der SelectElement-Funktion sollte ja wohl so aussehen, oder? SelBody = UserSel.SelectElement(Was, "HybridBody wählen", true) Ciao, Günter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zizorro Mitglied Dipl.-Ing. (FH)
Beiträge: 468 Registriert: 21.02.2002
|
erstellt am: 17. Sep. 2004 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Günter, uups, klar, aber das ändert nichts daran, dass das Makro bei der Search-Methode hängenbleibt. Gruß, zizo P.S. Habe den Ausgangs-thread entsprechend geändert. [Diese Nachricht wurde von zizorro am 17. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Isele Mitglied CAD System Ingenieur
Beiträge: 84 Registriert: 22.02.2001
|
erstellt am: 17. Sep. 2004 13:18 <-- editieren / zitieren --> Unities abgeben: Nur für zizorro
Hallole, Versuchs bei der Suche mal mit: Dim CATIA As INFITF.Application Set CATIA = GetObject(, "CATIA.Application") Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridShapeFactory1 As Factory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim HB As HybridBody Set HB = hybridBodies1.Item(UserSel.Item(1).Value.Name) .... keine Garantie. Gruss Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zizorro Mitglied Dipl.-Ing. (FH)
Beiträge: 468 Registriert: 21.02.2002
|
erstellt am: 17. Sep. 2004 13:36 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas, wenn ich das richtig versteh und die Suche sich hinter Dim CATIA As INFITF.Application Set CATIA = GetObject(, "CATIA.Application") verbirgt, dann funktionierts irgendwie nicht :-( Trotzdem danke, Gruß, zizo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günter K. Mitglied
Beiträge: 21 Registriert: 16.08.2004
|
erstellt am: 17. Sep. 2004 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für zizorro
Hallo zizo, ich bin's noch einmal. Ich glaube, ich habe es einigermaßen hinbekommen: Sub CATMain() Dim MyPart As Document Set MyPart = CATIA.ActiveDocument Dim Was(0) Was(0) = "HybridBody" Dim UserSel As Selection Set UserSel = CATIA.ActiveDocument.Selection UserSel.Clear MsgBox ("Bitte selektieren Sie den HybridBody") Dim SelBody As CATBSTR SelBody = UserSel.SelectElement(Was, "HybridBody wählen", true) Dim HB As HybridBody Set HB = UserSel.Item(1).Value UserSel.Clear UserSel.Add(HB) MsgBox (UserSel.Item(1).Value.Name) ' ----------------------------- Suchen nach Namen Dim Liste As Selection Set Liste = CATIA.ActiveDocument.Selection 'Liste nicht löschen! Liste.Search "Name=*Suchstring_*,sel" End Sub P.S.: Mit welchem Release arbeitest du denn? Ab R11 ist die Funktion EndSelectElement deprecated!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zizorro Mitglied Dipl.-Ing. (FH)
Beiträge: 468 Registriert: 21.02.2002
|
erstellt am: 17. Sep. 2004 14:29 <-- editieren / zitieren --> Unities abgeben:
|
em Michael Kirsch Mitglied Teamleiter KBE Methoden & Tools
Beiträge: 222 Registriert: 21.10.2002 CATIA V5 R16 CATIA V5 R18 CATIA V5 R19 NX 5 NX 6 NX 7.5
|
erstellt am: 27. Sep. 2004 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für zizorro
Hallo zizorro, Du wolltest doch die Suche auf den Hybrid Body eingrenzen, oder? Tatsächlich wird in dem Makro aber der HybridBody zunächst einmal der Selection hinzugefügt. Soweit, so gut. Aber die anschließenden Suche kann nicht auf den HybridBody beschränkt sein, da das Objekt "Selection" zum "CATIA.ActiveDocument" gehört. Die Folge: Alle Elemente innerhalb des aktiven Dokuments, die das Suchkriterium erfüllen, werden einfach in die Selection geschrieben. Ich kann keinen Bezug zu dem zuvor ausgewählten HybridBody erkennen. Grüße, Michael ------------------
www.em.ag
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |