Autor
|
Thema: Winkel Zwischen 2 Ebenen Messen (1463 mal gelesen)
|
razzor88 Mitglied
Beiträge: 42 Registriert: 09.06.2016
|
erstellt am: 07. Jan. 2017 19:02 <-- editieren / zitieren --> Unities abgeben:
Guten Abend zusammen, ich versuche momentan den Winkel zwischen einer Ebene von einem Achsensystem und irgend einer anderen Ebene zu messen. Komischer weise hat es schon ein paar mal funktioniert aber nun will es auf einmal nicht mehr funktionieren. Kann mir vielleicht jemand sagen wo mein Fehler liegt? Ich Programmiere mit Visual Studio 2015 und arbeite mit Catia V5 R24 SP6 Code:
Dim Doc_1 As Document ' Bauteil Dokument Dim Part1 As Part ' Bauteil Part Dim Selection_1 As Selection ' Selektion Aktives Part Dim Selection_Filter(0) ' Filter für Userselektion Dim SPAWorkbench As SPAWorkbench Dim MyMeasurable As Measurable Dim Statusabfrage As String ' Status für MsgBox und Selektion Dim AXS_Bauteil As AxisSystem ' Achsensystem AXS_Bauteil Dim AXS_Bauteil_Plane_XY As Reference ' Referenz der XY-Ebene des Achsensystems AXS_Bauteil Dim AXS_Bauteil_Plane_YZ As Reference ' Referenz der YZ-Ebene des Achsensystems AXS_Bauteil Dim AXS_Bauteil_Plane_XZ As Reference ' Referenz der XZ-Ebene des Achsensystems AXS_Bauteil Dim AXS_Bauteil_X_Axis As Reference ' Richtung der X-Achse des Achsensystems AXS_Bauteil Dim AXS_Bauteil_Y_Axis As Reference ' Richtung der Y-Achse des Achsensystems AXS_Bauteil Dim AXS_Bauteil_Z_Axis As Reference ' Richtung der Z-Achse des Achsensystems AXS_Bauteil Dim AXS_Bauteil_OriginPoint As Reference ' Referenz vom OriginPoint des Achsensystems AXS_Bauteil Dim Referenzebene As Plane ' Referenzebene aus Userselektion Doc_1 = Catia.ActiveDocument Selection_1 = Doc_1.Selection Part1 = Doc_1.part SPAWorkbench = Doc_1.GetWorkbench("SPAWorkbench") Selection_Filter(0) = "Plane"' Referenzen vom "AXS_Bauteil" erstellen AXS_Bauteil_Plane_XY = Part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";1);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_Plane_YZ = Part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";2);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_Plane_XZ = Part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";3);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_X_Axis = Part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";1);None:();Cf11:());Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";3);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_Y_Axis = Part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";2);None:();Cf11:());Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";1);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_Z_Axis = Part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";3);None:();Cf11:());Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) AXS_Bauteil_OriginPoint = Part1.CreateReferenceFromBRepName("FVertex:(Vertex:(Neighbours:(Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";2);None:();Cf11:());Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";3);None:();Cf11:());Face:(Brp:(" & AXS_Bauteil.GetItem("ModelElement").InternalName & ";1);None:();Cf11:()));Cf11:());WithPermanentBody;WithoutBuildError;WithInitialFeatureSupport;MFBRepVersion_CXR15)", AXS_Bauteil) ' Userselektion Ebene für die Bohrungen auswählen Userselektion: Statusabfrage = Selection_1.SelectElement2(Selection_Filter, "Ebene für Bohrungen auswählen", False) If Statusabfrage = "Cancel" Then MsgBox("Der Vorgang wurde abgebrochen", vbCritical + vbSystemModal) Exit Sub End If If TypeName(Selection_1.Item(1).Value) = "PlanarFace" Then Referenzebene = Selection_1.Item(1).Value.Parent Else Referenzebene = Selection_1.Item(1).Value End If Selection_1.Clear() MyMeasurable = SPAWorkbench.GetMeasurable(AXS_Bauteil_Plane_XY) If Not MyMeasurable.GetAngleBetween(Referenzebene) = 0 Then Statusabfrage = MsgBox("Die ausgewählte Ebene ist ungültig", vbCritical + vbSystemModal + vbRetryCancel) If Statusabfrage = vbCancel Then Exit Sub ElseIf Statusabfrage = vbRetry Then GoTo Userselektion End If End If
[Diese Nachricht wurde von razzor88 am 07. Jan. 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: 07. Jan. 2017 19:49 <-- editieren / zitieren --> Unities abgeben: Nur für razzor88
|
razzor88 Mitglied
Beiträge: 42 Registriert: 09.06.2016
|
erstellt am: 07. Jan. 2017 19:58 <-- editieren / zitieren --> Unities abgeben:
Ja es soll eine Referenz übergeben werden. Es hat bei mir allerdings bisher auch immer geklappt die Plane direkt zu übergeben... Aber selbst wenn ich es mit der Referenz versuche kommt der gleiche Fehler... MyMeasurable.GetAngleBetween(Part1.CreateReferenceFromObject(Referenzebene)) 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. Jan. 2017 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für razzor88
Servus Klappt die Messung zwischen 2 Ebenen oder zwischen 2 Ebenen des Achsensystems? Werden die Referencen gebildet? EDIT: Irgendwie scheint die Reference über den BREP-Zugriff nicht zu passen. Wenn ich da eine andere Reference (zB der Ebene) übergebe läuft der Code zumindest durch. Beim Vergleich des BREP-Zugriff mit einer Makroaufzeichnung hab ich keinen Fehler erkennen können. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
razzor88 Mitglied
Beiträge: 42 Registriert: 09.06.2016
|
erstellt am: 08. Jan. 2017 11:19 <-- editieren / zitieren --> Unities abgeben:
Ja ich verstehe es nicht... das messen zwischen 2 erzeugten Ebenen klappt einwandfrei. Aber sobald ich zu einer Ebene vom Achsensystem messen will klappt es nicht mehr... Der BREP Zugriff müsste eigentlich korrekt sein... zumindest kann ich auch Offsetebenen erzeugen wenn ich die Ebenen vom Achsensystem als Referenz angebe. 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: 08. Jan. 2017 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für razzor88
Servus Sonderbar wenn man die Messung umdreht (Measureable mit der Reference der Ebene erzeugen und zu einem BREP-Element des Achsensystem messen) geht es. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
razzor88 Mitglied
Beiträge: 42 Registriert: 09.06.2016
|
erstellt am: 08. Jan. 2017 12:12 <-- editieren / zitieren --> Unities abgeben:
Hmm das funktioniert bei mir komischerweise auch nicht... Aber es Funktioniert wenn ich von der Ebene zu einer Achse vom Achsensystem messe... Echt seltsam.. würde zu gern wissen warum das nicht funktioniert... Was gibts denn sonst noch für Möglichkeiten zu überprüfen ob eine Ebene paralell zu einer Ebene von einem Achsensystem ist? Gibts eine Möglichkeit Hybridshapedirections direkt miteinander zu vergleichen? Oder muss man wirklich die einzelnen Komponenten der Hybridshapedirections miteinander vergleichen? [Diese Nachricht wurde von razzor88 am 08. Jan. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 08. Jan. 2017 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für razzor88
|