Autor
|
Thema: Bei GetMeasurable andere Achse verwenden (1290 mal gelesen)
|
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 27. Sep. 2008 14:33 <-- editieren / zitieren --> Unities abgeben:
Hallo V5 Gemeinde, ich sitze hier vor einem Problem. Ist es möglich für die Funktion GetMeasurable eine andere Achse zu wählen als die Absolute. Ich versuche mir die Koordinaten eines Flächenschwerpunktes von einer zuvor selektierten Achse auszugeben. Oder ist das eventuell auch mathematisch zu lösen. mfg INLU [Diese Nachricht wurde von INLU am 28. Sep. 2008 editiert.] 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: 30. Sep. 2008 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für INLU
Ich glaube das geht nur mathematisch, sollte aber kein Problem darstellen. GetMeasurable ist glaube ich immer absolut. Also die Kooridnaten des gewählten Achsensystems holen und dann über Rotation und so errechnen. ------------------ 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 |
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 30. Sep. 2008 14:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, vielen Dank für die Antwort. Vielleicht gibt es ja noch eine andere Möglichkeit die Koordinaten eines Punkte ( selektierter Vertexpunkt) auszugeben. Du kennst nicht zufällig eine Quelle, wo ich eine solche Formel beziehen könnte? Mfg INLU 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: 30. Sep. 2008 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für INLU
*g* Du wirst nicht glauben wie oft ich vor genau diesem Problem stehe... Und ich muss Dir sagen, dass ich leider noch immer keine Lösung dafür gefunden habe, zumindest kann ich mich nicht erinnern. Die Lösung, die ich glaube ich immer nutze ist an die gleiche Stelle einen realen Punkt zu setzen und diesen dann in's Measurable zu stecken... Aber Ansich kannst du dann immer von deinem Vertex den Abstand zu den Ebenen (XY, XZ, ZX, ...) messen und daher auf deine Rotation schließen. Den Abstand zu messen ist dann ja egal zu welchem Bezugsachsensystem. Bei der Rotation einen Tipp: Du musst ja über den Kosinus der jeweiligen Normalenvektoren der Ebenen gehen. Wenn du die Ebenen geschickt wählst ist der Kosinus immer zur 3. nicht verwendeten Achse. Also wenn du aus einen Vertex mal ordentliche Koordinaten bekommst würde mich das auch mal interessieren. ------------------ 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 |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 30. Sep. 2008 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für INLU
Hallo, schon mal versucht an Fläche ein Punkt oder Plane als Referenz zu definieren und die abzufragen, siehe CAA This example retrieves in oRefAxis the reference Axis System for PointCoord feature. Dim oRefAxis As CATIAReference Set oRefAxis = PointCoord.RefAxisSystem Dim referenceObject As referenceObject Set referenceObject = "GetReference" Dim TheSPAWorkbench As Workbench Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" ) Dim TheMeasurable As Measurable Set TheMeasurable = TheSPAWorkbench.GetMeasurable(referenceObject) Vielleicht kannst du damit was anfangen
Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 01. Okt. 2008 17:47 <-- editieren / zitieren --> Unities abgeben:
Hallo ogard1, ich glaube das diese Funktion nur bei einem Punkt funktioniert, der über Koordinaten erzeugt wurde. zitat CAA :" Returns or Sets the reference Axis System for PointCoord feature " Ich habe aber einen Vertex-punkt, also einen Punkt, den ich von einer Flächenkante selektiert habe. @ Henry Die Koordinaten bekomme ich aus einem selektierten Vertex-punkt. Leider aber nur zur Absoluten Achse. Code: inputobjecttype(0) = ("Vertex") usersel1 = Selection.SelectElement2(inputobjecttype, "Flächenpunkt selektieren", False) Set punkt1 = Selection.Item(1).Value Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set TheMeasurable = TheSPAWorkbench.GetMeasurable(punkt1) Msgbox("X=" & punkt1(0) & Chr(13) & "Y=" & punkt1(1) & Chr(13) & "Z=" & punkt1(2)) Gruß INLU
[Diese Nachricht wurde von INLU am 01. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 02. Okt. 2008 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für INLU
Hallo zusammen, Das alles ist nur ein bischen Vektorrechung und funktioniert immer nach dem gleichen Prinzip. Unten ein Beispiel für Achsensysteme (d.h. hier wird mit zwölfspaltigen Vektoren gerechnet, also Arrays mit Index 0 bis 11, siehe auch Onlinedoku). Der Code ist ein Auszug zum Umrechen der Transformation (Verschiebung, Rotaion) von Parts / Products innerhalb einer Struktur, d.h. von ganz unten ausgehend (dem Part) werden die Transformationsvektoren uber alle Strukturebenen bis zum Root umgerechnet. Das funtioniert (natürlich angepasst) für das hier vorliegende Problem (ausgehend vom Measurable) analog.
Code: Public Function Func_Transform(oProdForTrans) Dim a(11) Dim b(11) Dim res(11) oProdForTrans.Position.GetComponents a Set oProdForTrans_Parent = oProdForTrans.Parent.Parent If oRoot.Product.Name <> oProdForTrans_Parent.Name Then Do oProdForTrans_Parent.Position.GetComponents b SUB_Matrix a, b, res Set oProdForTrans_Parent = oProdForTrans_Parent.Parent.Parent For i = 0 To 11 a(i) = res(i) Next Loop Until oRoot.Product.Name = oProdForTrans_Parent.Name End If Func_Transform = a End FunctionSub SUB_Matrix(a, b, res) res(0) = a(0) * b(0) + a(1) * b(3) + a(2) * b(6) res(3) = a(3) * b(0) + a(4) * b(3) + a(5) * b(6) res(6) = a(6) * b(0) + a(7) * b(3) + a(8) * b(6) res(1) = a(0) * b(1) + a(1) * b(4) + a(2) * b(7) res(4) = a(3) * b(1) + a(4) * b(4) + a(5) * b(7) res(7) = a(6) * b(1) + a(7) * b(4) + a(8) * b(7) res(2) = a(0) * b(2) + a(1) * b(5) + a(2) * b(8) res(5) = a(3) * b(2) + a(4) * b(5) + a(5) * b(8) res(8) = a(6) * b(2) + a(7) * b(5) + a(8) * b(8) res(9) = a(9) * b(0) + a(10) * b(3) + a(11) * b(6) + b(9) res(10) = a(9) * b(1) + a(10) * b(4) + a(11) * b(7) + b(10) res(11) = a(9) * b(2) + a(10) * b(5) + a(11) * b(8) + b(11) End Sub
wobei oProdForTrans ein .....Products.Item(n) (also eineInstanz) innerhalb der Struktur und oRoot das Catia.ActiveDocument Ich hoffe das hilft irgendwem weiter. Gruß TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 08. Okt. 2008 12:34 <-- editieren / zitieren --> Unities abgeben:
Hallo TomTom, danke für die Antwort. Leider weiß ich nicht, wie man das für meinen Fall anwenden muss. Ich meine in deinem Code erkannt zu haben, das du die Koordinaten der Verschiebung des Parts umrechnest. Aber in deinem fall auch nur zum absoluten Nullpunkt, oder? Kann mir jemand aufs Pferd helfen? Mfg INLU [Diese Nachricht wurde von INLU am 08. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 03. Dez. 2008 11:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, Ich habe das Problem jetzt so gelöst, das ich die Achse und den Messpunkt selektieren lasse. Danach erzeuge ich mir ein Part und eine Transformation des Punktes zur Absoluten Achse. Der Punkt muss ein AddNewPointDatum sein, da ich Ihn sonst nicht mit GetMeasurable nicht messen kann (Keine Ahnung warum ). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |