| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation - Der Schlüssel zur Einsparung von CAD-Lizenzen, eine Pressemitteilung
|
Autor
|
Thema: CatiaV5 - Type eines Shapes auselesen (810 / mal gelesen)
|
Phil1234 Mitglied
 Beiträge: 3 Registriert: 20.01.2016
|
erstellt am: 20. Jan. 2016 13:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich programmiere derzeit mit Python eine Schnittstelle zwischen Catia und Excel und habe dabei folgendes Problem: Ich würde gerne den "Type" eines Shapes abfragen, also ob es sich bei dem Shape z.B. um ein Pad oder um eine Chamfer handelt. Für Constraints habe ich das schon hinbekommen. Sieht wie folgt aus: Sket = part.Mainbody.Sketches for a in range (1,Sket.Count+1): for b in range (1,Sket.Item(a).Constraints.Count+1): if (Sket.Item(a).Constraints.Item(b).Type) == 5: Ich durchlaufe also meine Skizzen und in jeder Skizze nochmal die Bedingungen. Dann folgt für jede Bedingung die Abfrage nach dem Typ. Wenn dieser gleich 5 ist (für Längen), dann kann der weitere Code ausgeführt werden. So etwas benötige ich jetzt auch für Shapes, damit ich abfragen kann ob es sich um einen Block oder eine Fase oder sonst etwas handelt. Für mich war folgende Abfrage naheliegend: Shp = part.Mainbody.Shapes for a in range (1,Shp.Count+1): if (Shp.Item(a).Type) == ? Das funktioniert aber nicht. Scheinbar hat ein Shape keinen Typ!? Hat jemand eine Idee, wie es klappen könnte? Oder wie der Type bei der Klasse Shape richtig heißt/angesteuert werden kann? Gruß Phil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Jan. 2016 14:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Phil1234
|
Phil1234 Mitglied
 Beiträge: 3 Registriert: 20.01.2016
|
erstellt am: 20. Jan. 2016 15:53 <-- editieren / zitieren --> Unities abgeben:         
Hi, wenn ich deinen Code so eingebe, dann wird mir folgender Fehler angezeigt: NameError: Name "TypeName" is not defined Ich nehme an, das liegt daran, dass python nicht erkennt, dass es sich um eine Methode handelt. Weißt du (oder irgendjemand) wie ich die Methode Nutzen kann? Kann / muss ich da irgendetwas importieren? Oder muss ich die Methode ähnlich wie Parts "ansteuern"? Also irgendwas vor TypeName wie z.B.: Pfad.Activedocument.Methods.TypeName Gruß Philipp
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Jan. 2016 16:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Phil1234
|
Phil1234 Mitglied
 Beiträge: 3 Registriert: 20.01.2016
|
erstellt am: 22. Jan. 2016 12:54 <-- editieren / zitieren --> Unities abgeben:         
Hi also ich hab jetzt eine ganze Weile versucht, das Problem zu lösen, aber irgendwie will es mir nicht gelingen. in Python gibt es die Methode "type", diese gibt den Typ zurück (also wenn ich ein x vom Typ int habe und type(x) eingebe kommt int raus, bzw. "type 'int'". Meiner Vorstellung nach sollte sie eigentlich das gleiche bewirken wie die VBA Methode TypeName, macht sie aber nicht. Wenn ich sie auf CATIA anwende, erhalte ich als Ergebnis "type 'instance'"... und damit kann ich irgendwie nix anfangen. Dann hab ich noch die Methode StringType gefunden, diese spuckt mir "COMObjekt Item" aus. Auch das hilft mir nicht wirklich Hat noch irgendjemand eine Idee? Bzw. den passenden Python-Begriff/Code für die Aufgabe, die die VBA Methode TypeName erfüllt? Ich denke, dass das genau der richtige Ansatz ist, aber ich bekomm es in Python nicht umgesetzt. Ich habe jetzt schon sehr viele Versuche gestartet (oben sind nur 2 Auszüge von etlichen), aber es mag nicht funktionieren.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |