Autor
|
Thema: Positionierung auf einer Leitkurve (983 mal gelesen)
|
Student051089 Mitglied
Beiträge: 44 Registriert: 23.08.2017 Catia V5 R26
|
erstellt am: 01. Sep. 2017 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich stehe vor folgendem Problem. Ich würde gerne auf einer Leitkurve in einem gewissen Abstand Positionierungen vornehmen. Als Grundgerüst erstelle ich jeweils eine Ebene mit gewissen Abstand zur Hauptebene. Jede Ebene wird als Intersect mit der Leitkurve verwendet. Das Intersect gilt als Positionierungsursprung. Mein Problem ist, dass die Leitkurve irgendwann aufhört. Gerne würde ich eine If- Abfrage aufbauen, welche untersucht ob das Intersect die Leitkurve "schneitet". Falls ja soll im gewissen Abstand ein neues Offset der Ebene und ein neues Intersect entstehen. Falls nein [There is no solution for this operation], soll das Makro einfach weiter laufen. Weiß jemand ob das so geht wie ich mir das vorstelle? Wenn ja wie baue ich die If abfrage auf? Code:
If... 'Offset Plane XZ 150 Dim hybridShapePlaneOffset2 As HybridShapePlaneOffset Set hybridShapePlaneOffset2 = hybridShapeFactory1.AddNewPlaneOffset(hybridShapePlaneNormal2, 150#, True) hybridBody4.AppendHybridShape hybridShapePlaneOffset2 hybridShapePlaneOffset2.Name = "Offset.Plane_XZ_150"'Intersect XZ150 Flaeche Dim voIntersection4 As HybridShapeIntersection Set voIntersection4 = hybridShapeFactory1.AddNewIntersection(hybridShapePlaneOffset2, hybridShapeCurvePar3) hybridBody4.AppendHybridShape voIntersection4 voIntersection4.Name = "Intersect.Plane_XZ_150_Flaeche" part1.UpdateObject hybridBody4 End If
Catia V5 R26
[Diese Nachricht wurde von Student051089 am 01. Sep. 2017 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: 01. Sep. 2017 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für Student051089
Servus Willkommen im Forum. Du könntest kurzfristig die Fehlerbehandlung ausschalten, dann das Update ausführen und dann den Fehler auswerten. zB Code: 'Fehlerbehandlung ausschalten on error resume next part1.Update 'Fehler abfragen if Err.Number <> 0 then MsgBox "Fehler aufgetreten" 'Aufräumen zB Elemente löschen, Fehler zurücksetzen und Update hybridShapeFactory1.DeleteObjectForDatum(hybridShapeIntersection1) Err.clear part1.Update 'und ggf exit for um die Schleife zu beenden end if 'Fehlerbehandlung einschalten!! On error goto 0
Hier findest du Beispiele zu Fehlerbehandlung in VBA. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Student051089 Mitglied
Beiträge: 44 Registriert: 23.08.2017 Catia V5 R26
|
erstellt am: 01. Sep. 2017 10:32 <-- editieren / zitieren --> Unities abgeben:
Hi Bernd, danke für die schnelle Antwort! Ich weiß leider nicht wie ich die If- Abfrage aufbaue, die mir dann Automatisch ein neues Offset mit Intersect mit neuem Abstand erstellt. Weißt du da auch eine Antwort? Grüße 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: 01. Sep. 2017 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Student051089
Servus Wie wäre es wenn du über eine Schleife (zB for-next) die Ebenen und Verschneidungen erzeugst. Falls ein Fehler auftritt die Schleife verlassen. Grobe Struktur: Code: for i= 1 to 100 'maximal 100 Ebenen 'Ebene erzeugen mit Abstand i * 100mm 'Verschneidung erzeugen 'if-Bedingung: ' - falls Fehler: Ebene und Verschneidung löschen ' - exit for 'end if next
Oder du misst erste den Abstand zum Ende der Leitkurve, dann kannst du die Anzahl der Schleifenabläufe direkt bestimmen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Student051089 Mitglied
Beiträge: 44 Registriert: 23.08.2017 Catia V5 R26
|
erstellt am: 04. Sep. 2017 10:00 <-- editieren / zitieren --> Unities abgeben:
|