Autor
|
Thema: Einzelne Parts über hinterlegte Eigenschaften per Makro/Skript abfragen u. markieren (2221 mal gelesen)
|
bamigon Mitglied TZ
Beiträge: 6 Registriert: 09.02.2012 CATIA V5 R19 SP03 WinXP SP2 AMD 3800+ (2,4GHz) 4GB<P>bzw.<P>CATIA V5 R17 Win7 SP1 (64-Bit) Intel i3 (2,4GHz) 4GB
|
erstellt am: 09. Feb. 2012 14:33 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin neu hier, somit erst Mal "HALLO". Ich habe aber schon oft sehr hilfreiche Tipps von euch hier bekommen. Nur diesmal konnte ich trotz langem Suchen nichts finden, daher stelle ich diese Frage. Zu meinem "Problem": Ich habe eine Baugruppe, in der weitere Unterbaugruppen eingebaut sind. In diesen befinden sich zick weitere Parts. Nun soll ich, wenn umsetzbar, alle Normteile in ein Auswahlset mit der Bezeichnung "Normteile" einfügen bzw. ein Auswahlset mit den ganzen Normteilen erstellen. Zur Info: Ich habe in den Parts einen Parameter mit der Bezeichnung "Material", dort steht Material=Normalie --> siehe Bild im Anhang Wäre es generell möglich, diesen Parameter abzufragen und zu überprüfen, ob auch Normalie drinsteht? Ich habe mir das so überlegt: - Skript/Makro starten - in allen Parts überprüfen, ob im Parameter "Material" die Bezeichnung "Normalie" steht - wenn ja, dann markieren - wenn nein, dann zum nächsten - erstellen eines Auswahlsets mit der Bezeichnung "Normalie" Ist das überhaupt möglich? Oder auf eine andere Art und Weise nur die Normalien zu markieren o. ä.? Ich wäre schon zufrieden, wenn ich nur alle Normteile markiert hätte und dann manuell das Auswahlset erstellen müsste. Damit wäre mir schon sehr geholfen Vielen Dank schon Mal im Voraus für eure Bemühungen!!! Schöne Grüße, bamigon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Feb. 2012 23:46 <-- editieren / zitieren --> Unities abgeben: Nur für bamigon
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Prinzipiell könnte der Ablauf den du dir ausgedacht hast funktionieren. Allerdings zeigt mir die Forensuche, dann noch keiner geschafft hat ein Auswahlset per Makro zu erzeugen. Was ggf gehen könnte: ein Makro selektiert die entsprechenden Normteile und der User erstellt dann mit dieser Selektion das Auswahlset (von Hand) Der grobe Ablauf: - Schleife über alle Products der Baugruppe - Typunterscheidung: bei Parts nach dem Parameter "Material" suchen - wenn Wert der Parameters gleich "Normalie" Part (bzw Insatanz) der Selektion hinzufügen Anbei ein ungetestetes Beispiel: Code: Sub SelectNormteilParts() Dim oDoc As ProductDocument Dim doc As Document Dim osel As Selection Dim oProduct As Product Dim i As IntegerSet oDoc = CATIA.ActiveDocument Set osel = oDoc.Selection osel.Clear For i = 1 To oDoc.Product.Products.Count Set oProduct = oDoc.Product.Products.Item(i) If TypeName(oProduct.ReferenceProduct.Parent) = "PartDocument" Then On Error Resume Next If oProduct.Parameters.Item("Material").ValueAsString = "Normalie" Then osel.Add oProduct End If Err.Clear End If Next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 09. Feb. 2012 23:46 <-- editieren / zitieren --> Unities abgeben: Nur für bamigon
Hallo bamigon, aus meiner Sicht sollte das funktionieren. Prinzipiell würde ich das so machen: 1.) rekursives Durchsuchen der Struktur bis zum Part 2.) Prüfen auf Parameter "Material" mit Inhalt "Normalie" 3.) wenn gefunden, dann Erweitern der Auswahl (Selektion) mit dem Part 4.) nach Durchsuchen der Struktur Erstellen eines Auswahlsets und einfügen der in der Auswahl befindlichen Parts Da ich ähnliches schon gemacht habe, sehe ich prinzipiell keine Probleme. Du solltest nur beachten, dass das Auswahlset, soweit ich mich erinnere, "absolut" ist, d.h. Du keine untergeordneten Auswahlsets (Auswahlsets in untergeordneten Produkten bzw. Parts) siehst. Das bedeutet, wenn Du Dein Produkt in ein anderes Produkt einbaust, siehst Du das Auswahlset nicht mehr. mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bamigon Mitglied TZ
Beiträge: 6 Registriert: 09.02.2012 CATIA V5 R19 SP03 WinXP SP2 AMD 3800+ (2,4GHz) 4GB<P>bzw.<P>CATIA V5 R17 Win7 SP1 (64-Bit) Intel i3 (2,4GHz) 4GB
|
erstellt am: 10. Feb. 2012 08:34 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, erstmal Danke für die schnellen Antworten! @bgrittmann: Systeminformationen sind ausgefüllt. Ich habe den Code getestet, aber es tut sich nichts. Die Normteile werden nicht selektiert Von Ablauf her stimme ich dir Voll und Ganz zu. Das Erstellen der Auswahlsets per Hand, wäre vollkommen in Ordnung. Sind ja nur paar Klicks. Es sollte eben nur die nervige Auswahl der Normteile wegfallen. @Lusilnie: Jope, so sollte das alles funktionieren Hättest du mir dafür vielleicht auch den passenden Code? Wäre dir sehr verbunden Ich habe noch Mal ein Bild des Strukturbaums angefügt. So sieht die Struktur generell aus. Vielleicht hilft das weiter?! Schöne Grüße, bamigon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Feb. 2012 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für bamigon
Servus Sind die Namen der Paramter und der Wert korrekt? Hast du in deinem RootProduct direkt Normalien verbaut? Bei meinem Script fehlt die Rekursion, mein Script durchsucht nur die erste Ebene. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bamigon Mitglied TZ
Beiträge: 6 Registriert: 09.02.2012 CATIA V5 R19 SP03 WinXP SP2 AMD 3800+ (2,4GHz) 4GB<P>bzw.<P>CATIA V5 R17 Win7 SP1 (64-Bit) Intel i3 (2,4GHz) 4GB
|
erstellt am: 10. Feb. 2012 10:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, also in meinem RootProduct sind keine Normteile verbaut. Dort befinden sich nur die Products "Referenz", "Unterteil", "Oberteil"! Im Unter- und Oberteil werden dann jeweils die Parts, auch die Normalien, verbaut. Z. T. sind auch in dem Product "Unterteil" weitere Product verbaut, wie z.B. "Abheber". In diesem werden dann auch Normteile verbaut. Das bedeutet, dass wenn nur die erste Ebene durchsucht wird, es so für diesen Fall nichts bringt. Welche Parameternamen und welche Werte? Zur Info, ich stehe erst am "Anfang meiner Karriere" was das Programmieren betrifft, daher bitte ich Fragen, die vielleicht läppisch erscheinen, Ernst zu nehmen Danke!!! Wäre es möglich, dass du mir diese Rekursion noch in deinen Code einbaust? Wäre dir echt dankbar Schöne Grüße, bastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Feb. 2012 01:09 <-- editieren / zitieren --> Unities abgeben: Nur für bamigon
Hallo bamigon, natürlich könnte ich Dir das Script schreiben, doch dass ist weder im Interesse dieses Forums, noch in Deinen! Du willst ja an der Aufgabe wachsen und das Forum dient der Hilfestellung! Um zu sehen, wie die rekursive Abarbeitung erfolgt, kannst Du Dir die Sub-Routine "GetAbsPosition" von Script "DMUpspastekeepabsoluteposition.CATScript" aus der "V5Automation.chm" im Installations-Verzeichnis von CATIA ansehen. Wenn Du mit diesem Beispiel das Script von "bgrittmann" "erweiterst", solltest Du Deinem Ziel näher kommen! Und falls Du dann doch spezielle Fragen hast: Du weißt ja, wo Du uns findest... mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|