| |
| KISTERS 3DViewStation: Geniale 3D-Visualisierung für intuitiven HMI Einsatz, eine Pressemitteilung
|
Autor
|
Thema: Richtungsvektor/Achse von Kongruenz auslesen (340 / mal gelesen)
|
JoFa97 Mitglied Student
Beiträge: 32 Registriert: 24.10.2023 CATIA V5
|
erstellt am: 21. Aug. 2024 09:43 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, ich lese über VB.net von einer Catia-Baugruppe die Baugruppenbedingungen aus, über ProdConstraints = Rootprod.Connections("CATIAConstraints"). Auf die einzelnen Bedingungen greife ich dann in der Liste und kann zb. über Constraint.Name die Art der Bedingung auslesen (Kongruenz, Offset...), und über Constraint.GetConstraintElement(1/2).DisplayName die Namen der Bauteile die beteiligt sind. Nun ist meine Frage, ob ich eine Möglichkeit habe, zu den Bedingungen ebenfalls die Achsen oder die ausgewählten Richtungsvektoren auslesen kann, zb. über einen Befehl den ich nicht kenne? Hintergrund ist, dass ich mir aus den gesetzten Bedingungen die Freiheitsgrade von Komponenten herleiten möchte. Vielen Dank und Liebe Grüße! ------------------ Joshua Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Aug. 2024 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für JoFa97
Servus GetConstraintElement liefert dir ja eine Reference. Du kannst probieren diese direkt für eine Messung zu verwenden (Measureable). Wenn das klappt solltest du über GetDirection dann dir Richtung messen können. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoFa97 Mitglied Student
Beiträge: 32 Registriert: 24.10.2023 CATIA V5
|
erstellt am: 23. Aug. 2024 10:34 <-- editieren / zitieren --> Unities abgeben:
|
JoFa97 Mitglied Student
Beiträge: 32 Registriert: 24.10.2023 CATIA V5
|
erstellt am: 23. Aug. 2024 12:42 <-- editieren / zitieren --> Unities abgeben:
Ich würde meine Frage an der Stelle erweitern: Wenn ich damit zb von einer Kongruenzbedingung von zwei Rotationssymmetrischen Teilen die Direction auslese, kommt es vor, dass der Richtungsvektor von dem einen Teil bei 001 ist und der des anderen 010, da die sich die GetDirection-Methode auf die Achsen des Parts bezieht, und dieser nicht mit dem Vorwissen konstruiert worden ist. Gibt es hier die Möglichkeit, mich stets auf das Achsensystem des Products zu beziehen? Liebe Grüße ------------------ Joshua Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Mitglied
Beiträge: 451 Registriert: 26.03.2014 CATIA V5 R26
|
erstellt am: 23. Aug. 2024 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für JoFa97
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Aug. 2024 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für JoFa97
Servus Joshua Zeigt mal bitte einen Code Schnipsel von der Messung. Misst du in der Baugruppe oder im Part/Unterbaugruppe? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoFa97 Mitglied Student
Beiträge: 32 Registriert: 24.10.2023 CATIA V5
|
erstellt am: 02. Sep. 2024 08:43 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal! Ich zeige hier mal meinen Code, soweit hat das ganze funktioniert, es hat sich aber auch gleichzeitig eine neue Frage aufgetan.: Code:
Public Shared Function Constraints_v2() Dim CATIA As Object CATIA = GetObject(, "CATIA.Application") Dim ProdDoc As ProductDocument ProdDoc = CATIA.ActiveDocument Dim RootProd As Product Dim Liste_Parts As New List(Of String) Dim Parts_List = Get_PartList(CATIA.ActiveDocument.Product, Liste_Parts) RootProd = ProdDoc.Product Dim ProdConstraints As Constraints ProdConstraints = RootProd.Connections("CATIAConstraints") Dim constraint As Constraint Dim Liste As New List(Of String) Dim TheSPAWorkbench As SPAWorkbench Dim TheMeasureable As Measurable TheSPAWorkbench = ProdDoc.GetWorkbench("SPAWorkbench") Dim directionArray(2) Dim planeArray(8) Dim Part1_Index Dim Part2_Index Dim Directionstring_1 Dim Directionstring_2 Dim Values As New List(Of String) Dim csvFilePath = "C:\Users\Besucher\Desktop\joshua\Output\" + "Testing" + ".txt"
Dann arbeite ich die einzelnen Constraints ab, für Kongruenzen beispielsweise: Code:
Try For Each constraint In ProdConstraints ... ElseIf Name.Contains("Kongruenz") Then Dim Constr_Code = "1" Dim Part1_Name = constraint.GetConstraintElement(1).DisplayName For i As Integer = 0 To Parts_List.Count - 1 If Part1_Name.Contains(Parts_List(i)) Then Part1_Index = CStr(i) End If Next Dim Part2_Name = constraint.GetConstraintElement(2).DisplayName For i As Integer = 0 To Parts_List.Count - 1 If Part2_Name.Contains(Parts_List(i)) Then Part2_Index = CStr(i) End If Next TheMeasureable = TheSPAWorkbench.GetMeasurable(constraint.GetConstraintElement(1)) TheMeasureable.GetDirection(directionArray) directionArray = normalize(directionArray) Directionstring_1 = Join(directionArray, ";") TheMeasureable = TheSPAWorkbench.GetMeasurable(constraint.GetConstraintElement(2)) TheMeasureable.GetDirection(directionArray) directionArray = normalize(directionArray) Directionstring_2 = Join(directionArray, ";") full = Constr_Code + ";" + Part1_Index + ";" + Directionstring_1 + ";" + Part2_Index + ";" + Directionstring_2 Liste.Add(full)
Und das funktionert auch soweit wunderbar. Für Offset/Flächenkontakt kriege ich die ebene über GetPlane, und hole mir davon den Richtungsvektor. Jetzt habe ich allerdings bei "Winkel" das Problem, dass wenn ich in der Baugruppe für diese Bedingung nicht eine Achse ausgewählt habe (diese lässt sich über GetDirection abfragen), sondern eine Oberfläche, dasss ich nicht weiß wie ich diese Oberfläche bzw. Ihren Normalenvektor bekomme. GetPlane funktioniert in diesem Fall nicht. Ideal wäre etwas wie "GetSurface". Kennt da jemand was geeignetes?
------------------ Joshua Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Sep. 2024 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für JoFa97
Servus Joshua Deine Frage kann ich nicht beantworten. ein kleiner Hinweis: statt den Namen der Bedingung auszuwerten würde ich ich eher den Type nutzen (CatConstraintType) In der Doku findest du dort auch eine Übersicht welche Elementkombinationen jeweils möglich sind, Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoFa97 Mitglied Student
Beiträge: 32 Registriert: 24.10.2023 CATIA V5
|
erstellt am: 02. Sep. 2024 09:34 <-- editieren / zitieren --> Unities abgeben:
|