Autor
|
Thema: CATIA selection (1304 mal gelesen)
|
MrAnnonymos4 Mitglied
Beiträge: 3 Registriert: 07.12.2015
|
erstellt am: 07. Dez. 2015 11:14 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, ich habe vor kurzem begonnen die Wirtschaftsinformatik Dual ( 3 Monate Uni, 3 Monate Unternehmen) zu studieren. Meine erste richtige Aufgabe ist es nun, ein CATIA Macro zu programmieren, wobei ich seit 3 Tagen immer mit dem gleichen Problemen zu kämpfen habe - deswegen dieser Beitrag. Das Macro soll aus einer relativ grossen Baugruppe alle Parts kopieren, die aus einem bestimmten Material "ABC" besteht. Wenn ich "von Hand" eine Suche mit dem Parameter:
Code:
Name in Graph="*ABC*,all"
starte und diese mir Ctrl+c / Ctrl+v in einem anderen Produkt einfüge, funktioniert alles wunderbar. Wie erziehle ich aber das gleiche Ergebnis mit einem Macro? Bei allen Versuchen die ich bis jetzt gestartet habe, kamen im anderen Produkt nur einzelne Parameter, nicht aber Parts an... Ich denke das Problem liegt darin, dass die Suche wirklich NUR das Material auswählt, und nicht wie von Hand den ganzen dazugehörigen Part.
Code:
theSearch.Search "NameInGraph=*ABC*,all"
Ihr habt bestimmt Ideen wie man das machen kann - ich wäre euch wirklich dankbar. Viele Grüsse, MrAnnonymos Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 07. Dez. 2015 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für MrAnnonymos4
Hallo, also von Hand durchgeführt und mit dem Makrorekorder aufgenommen, kommt folgendes bei raus: Language="VBSCRIPT" Sub CATMain() Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = partDocument1.Selection selection1.Search "CATProductSearch.MatMaterialType.Name=*16' 'Mn*,all" End Sub Daran denken das die Suche Sprachabhängig ist. Gruß Randle [Diese Nachricht wurde von Randle am 07. Dez. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MrAnnonymos4 Mitglied
Beiträge: 3 Registriert: 07.12.2015
|
erstellt am: 07. Dez. 2015 13:07 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort. Mit dem Recorder habe ich auch schon rumprobiert, allerdings hat er mir nicht helfen können, weil er zum kopieren einfach direkt die Namen der gefundenen Parts verwendet hat, und sie sich nicht irgendwie aus der Selection nachvollziehbar rausgesuchte. Wenn ich deinen Code benutze, dann habe ich ein ähnliches Ergebnis wie zuvor. Mit Copy/Paste wird aus 39 entsprechenden Parts das kopiert, was ich hier als Foto angehängt habe. Was mache ich noch falsch ? Grüsse, MrAnnonymos4
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 07. Dez. 2015 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für MrAnnonymos4
mehr hast ja auch nicht ausgewählt. Du müsstest nach der Auswahl von jedem selektierten Item(Material) das dazugehörige Part/Product kopieren. Mit osel.Item2(n).LeafProduct.Name o.ä. kommst an die Instanz ran. Hierbei steht osel für die Selektion und n für den Index innerhalb der Selektion. Kleine Gemeinheit dabei: Du musst die erste Selektion zwischenbunkern, etwa in einem Array. Danach über die Array-Elemente einzeln die Parts rausfinden und zu einer neuen Selektion addieren. Dann kopieren u pasten. Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 07. Dez. 2015 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für MrAnnonymos4
Hallo, Also die vom Makrorekorder genutzten Namen müsstest du dann natürlich noch "neutralisieren", es ging mir hier eher erst mal um das generelle Vorgehen. Zum Kopieren der Parts müsstest du das Suchergebnis (enthält ja nur Materialeinträge) innerhalb des Makros noch mal einzeln durchgehen und das jeweilige Elternobjekt (das Part) des Materialparameters zwischenspeichern (z.B. in einer Collection). Abschließend dann das Suchergebnis leeren (selection.clear) und die Objekte aus der Zwischenspeicherung der Selection hinzufügen, diese dann kopieren und wieder einfügen. Gruß Randle
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MrAnnonymos4 Mitglied
Beiträge: 3 Registriert: 07.12.2015
|
erstellt am: 08. Dez. 2015 15:05 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|