Autor
|
Thema: GetCoordinates (2539 mal gelesen)
|
AlfaRomeo75 Mitglied Dipl.Ing. - Flächenkonstrukteur/Methodenplaner
Beiträge: 174 Registriert: 06.12.2004 ----------------- Windows XP professional Version2002 Service Pack 2 ----------------- CATIA V5 R16 SP5 ----------------- Intel Pentium 4 3,4GHz 4 GB RAM -----------------
|
erstellt am: 25. Aug. 2005 11:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Hab da mal 'ne Frage zum Thema GetCoordinates! Ich möchte die Koordinaten eines beliebigen Punktes ermitteln. Funktioniert soweit auch prima. Nun möchte ich das Makro erweitern um jede Art von Punkt anwählen zu können und ändere die Zeile Was(0) = "Point" in Was(0) = "Vertex" Nun funktioniert das ganze nicht mehr. Wieso ist das so und wie kann ich die Koordinaten eines belieben "Vertex" ermitteln. Das Problem ist, das ich eine Linie an einen belieben "Vertex" einer Flaeche setzen möchte. Funktioniert soweit auch. Die Aktualisierung schlägt dann aber fehl, da der vorher gewählte "Vertex" nicht mehr erkannt wird. (Verstehe ich ehrlich gesagt nicht!) Um diesen Fehler zu umgehen möchte ich die "Vertex"-Koord. abfragen und an dieser Stelle einen Punkt erzeugen an den ich meine Linie "hänge". Hier nun der Code zur Abfrage der Koordinaten: Sub CATMain () Dim Was(0) Was(0) = "Point" Dim UserSel As Selection Set UserSel= CATIA.ActiveDocument.Selection UserSel.Clear Dim E As CATBSTR E = UserSel.SelectElement(Was, "Du kannst jetzt einen Punkt wählen!", true) If E = "Normal" Then Else MsgBox ("Abbruch") End If Dim MySelection as Selection Set MySelection = UserSel.Item(1).Value MsgBox (MySelection.Name) Dim MyPointCoord(2) MySelection.GetCoordinates MyPointCoord Dim Coord_X,Coord_Y,Coord_Z Coord_X = MyPointCoord(0) Coord_Y = MyPointCoord(1) Coord_Z = MyPointCoord(2) MsgBox ("X="&Coord_X &",Y="& Coord_Y &",Z="& Coord_Z) UserSel.EndSelectElement UserSel.Clear End Sub Vielen Dank für Eure Antworten! Gruß Thomas
------------------ ------------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günter K. Mitglied
Beiträge: 21 Registriert: 16.08.2004
|
erstellt am: 25. Aug. 2005 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für AlfaRomeo75
Hallo Thomas, wieso nutzt du nicht einfach die Funktion "GetPoint" der Messung?: Sub GetPoint( CATSafeArrayVariant oCoordinates) Retrieves the position of the point. Parameters: oCoordinates The coordinate of the point with respect to the product coordinate system: oCoordinates(0) is the X coordinate oCoordinates(1) is the Y coordinate oCoordinates(2) is the Z coordinate Example: This example retrieves the coordinate of the point of NewMeasurable measure. Dim Coordinates (2) NewMeasurable.GetPoint Coordinates Gruß, Günter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlfaRomeo75 Mitglied Dipl.Ing. - Flächenkonstrukteur/Methodenplaner
Beiträge: 174 Registriert: 06.12.2004 ----------------- Windows XP professional Version2002 Service Pack 2 ----------------- CATIA V5 R16 SP5 ----------------- Intel Pentium 4 3,4GHz 4 GB RAM -----------------
|
erstellt am: 26. Aug. 2005 07:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Günter, vielen Dank für Deine Antwort! Leider habe ich noch nicht mit dieser Funktion gearbeitet! Hab es jetzt schon mehrfach versucht aber bekomme immer die Fehlermeldung, das das Objekt die Methode oder Eigenschaft nicht unterstützt! Habe den Code wie folgt umgestrickt: Sub CATMain () Dim Was(0) Was(0) = "Point" Dim UserSel As Selection Set UserSel= CATIA.ActiveDocument.Selection UserSel.Clear Dim E As CATBSTR E = UserSel.SelectElement(Was, "Du kannst jetzt einen Punkt wählen!", true) If E = "Normal" Then Else MsgBox ("Abbruch") End If Dim MySelection as AnyObject Set MySelection = UserSel.Item(1).Value MsgBox (MySelection.Name) Dim MyPointCoord(2) MySelection.GetPoint MyPointCoord Dim Coord_X,Coord_Y,Coord_Z Coord_X = MyPointCoord(0) Coord_Y = MyPointCoord(1) Coord_Z = MyPointCoord(2) MsgBox ("X="&Coord_X &",Y="& Coord_Y &",Z="& Coord_Z) UserSel.EndSelectElement UserSel.Clear
End Sub
Gruß Thomas
------------------ ------------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günter K. Mitglied
Beiträge: 21 Registriert: 16.08.2004
|
erstellt am: 26. Aug. 2005 08:32 <-- editieren / zitieren --> Unities abgeben: Nur für AlfaRomeo75
Hallo Thomas, die Funktion GetPoint ist eine Methode des Objekts Measurable. Ich habe deinen Code entsprechen angepasst und getestet. Es sollte nun laufen: Sub CATMain () Dim Was(1) Was(0) = "Point" Was(1) = "Vertex" Dim UserSel As Selection Set UserSel= CATIA.ActiveDocument.Selection UserSel.Clear Dim E As CATBSTR E = UserSel.SelectElement(Was, "Du kannst jetzt einen Punkt wählen!", true) If E = "Normal" Then Else MsgBox ("Abbruch") End If Dim MySelection as AnyObject Set MySelection = UserSel.Item(1).Value MsgBox (MySelection.Name) Dim TheSPAWorkbench As Workbench Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ("SPAWorkbench") Dim TheMeasurable As Measurable Set TheMeasurable = TheSPAWorkbench.GetMeasurable(MySelection) Dim MyPointCoord(2) TheMeasurable.GetPoint MyPointCoord Dim Coord_X,Coord_Y,Coord_Z Coord_X = MyPointCoord(0) Coord_Y = MyPointCoord(1) Coord_Z = MyPointCoord(2) MsgBox ("X="&Coord_X &",Y="& Coord_Y &",Z="& Coord_Z) UserSel.EndSelectElement UserSel.Clear End Sub Schönen Gruß, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlfaRomeo75 Mitglied Dipl.Ing. - Flächenkonstrukteur/Methodenplaner
Beiträge: 174 Registriert: 06.12.2004 ----------------- Windows XP professional Version2002 Service Pack 2 ----------------- CATIA V5 R16 SP5 ----------------- Intel Pentium 4 3,4GHz 4 GB RAM -----------------
|
erstellt am: 26. Aug. 2005 09:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Günter! Vielen Dank für Deine Antwort. Habe den Code gleich getestet! Funktioniert auch bei echten Punkten! Bei einem Vertex (z.B. bei einem Flaecheneckpunkt) bricht das Makro aber leider mit der angehängten Fehlermeldung(siehe Bild) ab! Gruß Thomas
------------------ ------------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Filippo Mitglied CAx-Systemverwalter
Beiträge: 168 Registriert: 09.11.2003
|
erstellt am: 26. Aug. 2005 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für AlfaRomeo75
Hallo AlfaRomeo75, versuche damit. Sub CATMain() Dim Was(0) Was(0) = "Vertex" '"Point" Dim UserSel 'As Selection Set UserSel = CATIA.ActiveDocument.Selection UserSel.Clear Dim E E = UserSel.SelectElement(Was, "Du kannst jetzt einen Punkt wählen!", True) If E = "Normal" Then Else MsgBox ("Abbruch") End If Dim MySelection 'As Selection Set MySelection = UserSel.Item(1) '.Value MsgBox (MySelection.Name) Dim MyPointCoord(2) MySelection.GetCoordinates MyPointCoord Dim Coord_X, Coord_Y, Coord_Z Coord_X = MyPointCoord(0) Coord_Y = MyPointCoord(1) Coord_Z = MyPointCoord(2) MsgBox ("X=" & Coord_X & ",Y=" & Coord_Y & ",Z=" & Coord_Z) MachPoint Coord_X, Coord_Y, Coord_Z UserSel.EndSelectElement UserSel.Clear End Sub Sub MachPoint(x, y, z) Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Add() Dim hybridShapeFactory1 As HybridShapeFactory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim hybridShapePointCoord1 As HybridShapePointCoord Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(x, y, z) hybridBody1.AppendHybridShape hybridShapePointCoord1 part1.InWorkObject = hybridShapePointCoord1 part1.Update End Sub Ciao Filippo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
AlfaRomeo75 Mitglied Dipl.Ing. - Flächenkonstrukteur/Methodenplaner
Beiträge: 174 Registriert: 06.12.2004 ----------------- Windows XP professional Version2002 Service Pack 2 ----------------- CATIA V5 R16 SP5 ----------------- Intel Pentium 4 3,4GHz 4 GB RAM -----------------
|
erstellt am: 26. Aug. 2005 12:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Filippo, jau man jetzt funzt es! Dann war ich ja gar nicht so weit weg mit meiner ersten Version! Vielen Dank!!! Und noch ein Schönes Wochenende! Ich mache jetzt erstmal Urlaub!!! Gruß Thomas
------------------ ------------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |