Autor
|
Thema: 3D Section automatisch umbenennen (747 mal gelesen)
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 07. Nov. 2016 14:32 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Product mit mehreren Parts. Darin stelle ich alle Parts bis auf das, was ich brauche ins Hide und mache durch das sichtbare Part einen 3D Schnitt - Section. Ich möchte jetzt diese Section per Macro so bearbeiten, dass unter Name: Section1 der Name des geschnittenen Parts erscheint und möchte den Schnitt mit dem Namen exportieren. Geht so was? THX 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: 07. Nov. 2016 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 07. Nov. 2016 15:30 <-- editieren / zitieren --> Unities abgeben:
Servus, ich habe das Macro gerade erst im Kopf und hänge gedanklich am BEfehl: Erstelle 3D Schnitt. Habe ich bisher nicht gefunden. Und was noch nicht geht, bzw. hier bekomme ich i mKurzmacro eine Fehlermeldung: Set productDocument1 = CATIA.ActiveDocument Set selection1 = productDocument1.Selection selection1.Search "Name='Section.100',all" selection1.Name = "XYZ" --> hier kommt die Fehlermeldung. THX 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: 07. Nov. 2016 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Dann schau mal in die Doku (V5Automation.chm) nach "Sections". Da sollt stehen wie meine Section anlegt Dass dein Code nicht funktioniert ist klar: du musst auch das selektierte Objekt ansprechen und nicht die ganze Selektion (es könnten ja verschiedenst Dinge selektiert sein) Code: selection1.item2(1).Value.Name = "Bla"
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 09. Nov. 2016 13:43 <-- editieren / zitieren --> Unities abgeben:
Das ist eigenartig. Gestern ging das Makro ohne Probleme und heute kommt eine Fehlermeldung gerade in der Zeile von dir Bernd: selection1.item2(1).Value.Name = ".." Meldung:Laufzeitfehler, Objekt erforderlich: selection1.item2(...) Ich habe keine Änderungen vorgenommen. Weißt du was das sein kann? 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. Nov. 2016 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Wurde was selektiert ( oseletion1.count auswerten)? ggf ist es einfach über GetTechnologicalObject("Sections") auf die Sections zuzugreifen (siehe Doku, dortgibt es auch ein gutes Beispiel) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 09. Nov. 2016 13:55 <-- editieren / zitieren --> Unities abgeben:
Servus, das ist mein gesamtes Makro: Sub CATMain() Set productDocument1 = CATIA.ActiveDocument myPartNumber1 = productDocument1.Product.Products.Item( 1).Name Set selection1 = productDocument1.Selection selection1.Search "Name='Section.1',all" selection1.item2(1).Value.Name = myPartNumber1 End Sub Ich möchte einfach nur den Name des ersten Parts im Product abgreifen und meinen Schnitt, der Section.1 heißt so benennen. Gruß 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. Nov. 2016 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Nochmal: - Wurde was selektiert? (Count der Selektion auswerten) - Wurde der richtige Name ausgelesen (ggf mit MsgBox prüfen) - Macht es Sinn ohne Filter auf die Section zugreifen? Was passiert wenn ein Part/Tasche/Verschneidung "Section.1" heißt? Es ist dein Code, du musst ihn verstehen. Das Forum ist nicht dafür da deinen Code zu schreiben. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 10. Nov. 2016 10:46 <-- editieren / zitieren --> Unities abgeben:
Es wird die richtige Section gefunden und auch als einziges. Es besteht keine Möglichkeit, dass was Anderes gefunden wird, deshalb muss man nicht so in die Granularität einsteigen. Der Name der Section wird mit der letzten Zeile dennoch nicht geändert, was aber genau so a mTag zuvor funktioniert hat. Ich bin im vb.NET unterwegs. In welcher Bibliothek befinden sich die Sections? MECMOD ist es nicht, INFITF ist es nicht ProductStruktureLyb ist es nicht.. Ich wollte den Weg gehen eine Variable zu erzeugen Dim myCut As "Bibliothek".Sections ich habe es versucht mit ProductStructureLyb.RefObj in der Hoffnung dass ich GetTechnologicalObject("Sections") unter RefObj finden würde. Leider nichts. Gruß 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. Nov. 2016 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Folgender Code läuft unter CATScript: Code: Sub CATMain() Dim cSections As Sections Set cSections = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Dim oSection As Section Set oSection = cSections.item(1) MsgBox oSection.Name oSection.Name = "BlaBla" End Sub
Das gehört zur SPAWorkbench. Den genaue Bibliothek kenne ich nicht (bin nicht in .net unterwegs) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 10. Nov. 2016 13:36 <-- editieren / zitieren --> Unities abgeben:
Servus, ich habe dein Code unverädert laufen lassen und bekomme sofort eine Fehlermeldung schon in der Erstn Zeile Dim cSection ...; s. Anhang. Das verstehe ich nicht. Kann in meinen Einstellungen etwas geändert worden sein durch ein Update? Gruß 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. Nov. 2016 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 10. Nov. 2016 13:41 <-- editieren / zitieren --> Unities abgeben:
Jetzt habe ich es so umgeschrieben dass nichts mehr mit Dim ... drin steht und es funktioniert: Sub CATMain() Set oprod = CATIA.ActiveDocument.Product Set TheSections = oprod.GetTechnologicalObject("Sections") Set mySection = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Set oSection = oprod.GetTechnologicalObject("Sections") Set oSection = mySection.item(1) MsgBox oSection.Name oSection.Name = "BlaBla" End Sub Verstehe aber trotzdem nicht, wo der Fehler war ... Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 11. Nov. 2016 19:22 <-- editieren / zitieren --> Unities abgeben:
Lösung in vb.NET: Dim mySection As SPATypeLib.Sections For i = 1 To myProductDoc.Product.Products.Count() myPartNumber = myProductDoc.Product.Products.Item(i).Name mySection = myCatiaApp.ActiveDocument.Product.GetTechnologicalObject("Sections") mySection.Item(i).Name = myPartNumber Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |