Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  GetCoordinates

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  GetCoordinates (2539 mal gelesen)
AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


Sehen Sie sich das Profil von AlfaRomeo75 an!   Senden Sie eine Private Message an AlfaRomeo75  Schreiben Sie einen Gästebucheintrag für AlfaRomeo75

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Günter K. an!   Senden Sie eine Private Message an Günter K.  Schreiben Sie einen Gästebucheintrag für Günter K.

Beiträge: 21
Registriert: 16.08.2004

erstellt am: 25. Aug. 2005 12:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlfaRomeo75 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von AlfaRomeo75 an!   Senden Sie eine Private Message an AlfaRomeo75  Schreiben Sie einen Gästebucheintrag für AlfaRomeo75

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Günter K. an!   Senden Sie eine Private Message an Günter K.  Schreiben Sie einen Gästebucheintrag für Günter K.

Beiträge: 21
Registriert: 16.08.2004

erstellt am: 26. Aug. 2005 08:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlfaRomeo75 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von AlfaRomeo75 an!   Senden Sie eine Private Message an AlfaRomeo75  Schreiben Sie einen Gästebucheintrag für AlfaRomeo75

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Bild3.JPG

 
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


Sehen Sie sich das Profil von Filippo an!   Senden Sie eine Private Message an Filippo  Schreiben Sie einen Gästebucheintrag für Filippo

Beiträge: 168
Registriert: 09.11.2003

erstellt am: 26. Aug. 2005 12:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlfaRomeo75 10 Unities + Antwort hilfreich

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



Ingenieur (m/w/d) - Strassenbau - Infrastruktur und Siedlungswasserwirtschaft

Zur Verstärkung unseres motivierten Teams suchen wir zum nächstmöglichen Zeitpunkt für den Standort Husum oder Leck einen/eine

INGENIEUR (M/W/D)

FACHRICHTUNG STRASSENBAU - INFRASTRUKTUR - SIEDLUNGSWASSERWIRTSCHAFT

Wir sind eine insbesondere national (Norddeutschland) tätige Ingenieurgesellschaft mit dem Hauptsitz in Husum und einer Zweigstelle in Leck....

Anzeige ansehenBauwesen
AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


Sehen Sie sich das Profil von AlfaRomeo75 an!   Senden Sie eine Private Message an AlfaRomeo75  Schreiben Sie einen Gästebucheintrag für AlfaRomeo75

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz