Autor
|
Thema: Unterschied zwischen CATScript und VBA (1366 mal gelesen)
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 03. Nov. 2015 13:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, dieses Makro funktioniert unter VBA7 problemlos. Ich möchte aber als CATScript auch laufen lassen. Es läuft ab und zu auf Fehler. Code:
Dim sName(10) As StringDim documents1 As Documents Dim partDocument1 As PartDocument Dim part1 As Part Dim hybridBodies1 As HybridBodies Dim hybridBodies2 As HybridBodies Dim selection1 Dim hybridBody1 As HybridBody Dim Pfad As String Dim i As Integer Sub CATMain()
Set documents1 = CATIA.Documents Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set selection1 = partDocument1.Selection Set hybridBodies1 = part1.HybridBodies
sName(0) = selection1.Item(1).Value.Name Pfad = sName(0)
Set hybridBody1 = selection1.FindObject("CATIAHybridBody") i = 1 Call ReadTree(hybridBody1) MsgBox Pfad End Sub Sub ReadTree(hybridBody1) sName(i) = hybridBody1.Name Pfad = Pfad & " / " & sName(i) Set hybridBodies2 = hybridBody1.Parent If hybridBodies2.Name <> "HybridBodies" Then 'unter CATScript gibt es manchmal keine Name mit "HybridBodies" i = i + 1 Call ReadTree(hybridBodies2) End If End Sub
Könnt Ihr mal bitte weiterhelfen? Danke im Voraus 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: 03. Nov. 2015 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für imation1999
Servus Kannst du nicht einfach in der IF-Bedingung den Typ des "hybridBodies2.Parent" auswerten? (zB if TypeName(hybridBodies2.Parent) = "HybridBodies") Gruß Bernd PS: ggf bekommst du den Pfad schnell über "GetNameToUseInRelation" ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 03. Nov. 2015 14:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für die Antwort. Mit "TypeName(hybridBodies2.Parent) = "HybridBodies"" wird nicht das komplett Baum ausgelesen. Mit GetNameToUseInRelation funktioniert natürlich, aber ich will das ganzes Makro jetzt nicht umschreiben. Bitte den "Punkt2" selektieren (siehe Bild), dann das Makro einmal als CATScript, dann als VBA laufen lassen. Ich möchte gerne wissen, warum kriege ich verschiedene Ergebnis? 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: 03. Nov. 2015 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für imation1999
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 03. Nov. 2015 15:14 <-- editieren / zitieren --> Unities abgeben:
mit TypeName(hybridBodies2) <> "Part" thenCATSript - Point2 selektiert: Pfad = Point.2 / Geoset2 / Geoset1 CATSript - Point1 selektiert: Pfad = Point.1 / Geoset1 / HybridBodies VBA - läuft auf Fehler Ich verstehe es nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 04. Nov. 2015 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für imation1999
Was denn für ein Fehler an welcher Stelle? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 04. Nov. 2015 18:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry,
Code:
Sub ReadTree(hybridBody1) sName(i) = hybridBody1.Name Pfad = Pfad & " / " & sName(i) Set hybridBodies2 = hybridBody1.Parent If TypeName(hybridBodies2) <> "Part" Then 'unter VBA wird die TypeName nie "PART" sein, deswegen sName(10) wird voll sein. i = i + 1 Call ReadTree(hybridBodies2) End If End Sub
[Diese Nachricht wurde von imation1999 am 04. Nov. 2015 editiert.] 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: 04. Nov. 2015 18:56 <-- editieren / zitieren --> Unities abgeben: Nur für imation1999
Servus Klar dass da ein Fehler kommt, "hybridBodies2" ist ja auch "Hybridbodies" dimensioniert da können die Objekte nicht zusammenpassen. Besser zB so aufbauen: Code: If TypeName(hybridBody1.Parent) <> "Part" Then Set hybridBodies2 = hybridBody1.Parent
Gruß Bernd PS: So lange du schon rumporbierts, hättest du auch meine alternativen Lösungsvorschlag verwirklichen können. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 04. Nov. 2015 19:10 <-- editieren / zitieren --> Unities abgeben:
Danke Bernd, ich habe schon am Vormittag das ganze Makro mit Hilfe von "GetNameToUseInRelation" eigentlich fertig gemacht. Aber wie gesagt, mein erstes Post funktioniert ganz schön unter VBA. Ich wollte / will wissen, warum geht als CATScript nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |