Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Aus Polylinie Koordinaten der Punkte auslesen

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:  Aus Polylinie Koordinaten der Punkte auslesen (7688 mal gelesen)
alf3k
Mitglied



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

Beiträge: 11
Registriert: 13.09.2004

erstellt am: 13. Sep. 2004 17:07    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,
ich bin noch relativ unerfahren im Makroprogrammieren und hab da ein kleines Problem.
Ich möchte aus einer Polylinie mit 4 Punkten die Koordinaten der Punkte auslesen, die einzelnen Werte verändern und dann wieder zurückschreiben. Am liebsten wäre es mir die Koordinaten in eine Textdatei zu schreiben, damit ich sie auch für andere Sachen (z.B. Koordinatentabelle) noch verwenden kann.
Vielen Dank schon mal,

Gruß, Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hammax
Mitglied
Dipl.Ing.TU Masch.Bau


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

Beiträge: 180
Registriert: 17.01.2002

privat: AutoCAD, Inventor AIS5.3
dienstl.: CATIA V5R12SP5

erstellt am: 14. Sep. 2004 06:39    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 alf3k 10 Unities + Antwort hilfreich

alf3k
Mitglied



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

Beiträge: 11
Registriert: 13.09.2004

erstellt am: 14. Sep. 2004 10:28    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

Ja, danke, das hilft mir schon sehr viel weiter.
Jetzt würde ich das ganze nur gerne für den Anwender noch komfortabler machen. Das heißt ich möchte nicht die einzelnen Punkte markieren, sondern die Polylinie und mein Makro soll selbst erkennen welche Punkte darin sind.
Noch besser wäre es sogar, wenn das Makro automatisch, ohne vorheriges Auswählen, die Polylinie erkennt. Normalerweise ist sichergestellt, dass es in meinem Part nur eine Polylinie gibt.
Hat da jemand eine Idee?
Vielen Dank,
Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steffen Hohmann
Mitglied
 


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

Beiträge: 446
Registriert: 06.03.2002

erstellt am: 14. Sep. 2004 16:19    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 alf3k 10 Unities + Antwort hilfreich

Hallo Marco,

ich würde es wie folgt machen:

'Wenn der Name der Polylinie bekannt ist, dann

Dim oPart As Part
Set oPart = CATIA.ActiveDocument.Part
Dim oPolyLine As HybridShapePolyline
Set oPolyLine = oPart.FindObjectByName("Name_der_Polylinie")

'oder auswählen lassen
Dim oSelection 'As Selection
Dim aSel(0)
aSel(0) = "HybridShapePolyline"
Set oSelection = oDoc.Selection
oSelection.SelectElement2 aSel, "Polylinie auswählen", False
Set oPolyLine = oSelection.Item(1).Value

'Danach Schleife aufbauen und Punktkoordinaten auslesen
Dim i As Long
Dim P_X, P_Y, P_Z As Double
Dim oPolyLineElement As HybridShapePointCoord 'Objekt auf Punkt der Polylinie
Dim oRefPolyLineElement As Reference 'Referenz auf Punkt der Polylinie
Dim oElementRadius As Length
For i = 1 To oPolyLine.NumberOfElements
    oPolyLine.GetElement i, oRefPolyLineElement, oElementRadius
    Set oPolyLineElement = oPart.FindObjectByName(oRefPolyLineElement.DisplayName)
    P_X = oPolyLineElement.X.Value
    P_Y = oPolyLineElement.Y.Value
    P_Z = oPolyLineElement.Z.Value

    'Anstelle die Werte auszulesen, kann man diese auch setzen
    'oPolyLineElement.X.Value = 100.0
    usw.
    'Hier noch die Schreiboperation in Datei einfügen
Next i


Ich hoffe, es ist verständlich, ansonsten nochmal posten.

Gruss
Steffen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

alf3k
Mitglied



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

Beiträge: 11
Registriert: 13.09.2004

erstellt am: 14. Sep. 2004 17: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

Vielen Dank erst mal,
du hast mir wirklich weitergeholfen. Ich mußte zwar noch ein bisschen was abändern, aber das Makro läuft. Ich bekomme aber leider noch die falschen Werte heraus. Ich lasse mir zur Kontrolle die Koordinaten ausgeben, aber die sind alle falsch. Außerdem möchte ich mir den Radius noch ausgeben lassen, weiß aber nicht genau wie. Hast du eine Idee?
Danke, Marco

For i = 1 To oPolyLine.NumberOfElements
    oPolyLine.GetElement i, oRefPolyLineElement, oElementRadius
    Set oPolyLineElement = oPart.FindObjectByName(oRefPolyLineElement.DisplayName)
    oPolyLineElement.GetCoordinates Koord
    P_X = Koord(0)
    P_Y = Koord(1)
    P_Z = Koord(2)
    MsgBox ("x=" & P_X & "y=" & P_Y&"z="&P_Z)
Next

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steffen Hohmann
Mitglied
 


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

Beiträge: 446
Registriert: 06.03.2002

erstellt am: 14. Sep. 2004 17:18    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 alf3k 10 Unities + Antwort hilfreich

Hallo,

der Radius steckt im Length-Objekt 'oElementRadius'. Den Wert kann man mit .Value abfragen.

Die Art der Abfrage der Koordinaten hängt von der Art der Punkte ab, über die die Polylinie erzeugt wurde. In Meinem Fall wurde die Polyline über Koordinatenpunkte erzeugt. Für beliebige Punkte gibt es die GetCoordinates-Methode, die du ja auch verwendet hast. Warum falsche Koordinatenwerte herauskommen, kann ich nicht sagen.
Das ganze funktioniert aber nur, wenn keine Scheitelpunkte für die Definition verwendet werden, da dann die Referenz auf ein Vertex-Element verweist, dessen Koordinaten, glaube ich, nicht ermittelbar sind.

Gruss
Steffen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

alf3k
Mitglied



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

Beiträge: 11
Registriert: 13.09.2004

erstellt am: 15. Sep. 2004 10:36    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,
das mit dem Radius hatte ich sogar schon hinbekommen. Ich hatte nur zuerst den Fehler gemacht den Radius ohne weitere Bedingung direkt in der Schleife abzufragen. Einen Radius kann ich aber erst beim zweiten Punkt der Polylinie abfragen. Dieses Problem hab ich also gelöst.

Dafür hab ich jetzt ein anderes. Wie schon gesagt bekomme ich nicht die richtigen Koordinaten der Punkte ausgegeben. Das liegt daran, dass z.B. die Punkte "Point.1", "Point.2" usw. gesucht und die Koordingten ausgelesen werden. In meinem Part gibt es aber noch mehr Punkte die den selben Namen besitzen, z.B. in verschiedenen Skizzen. Gibt es eine Möglichkeit anzugeben, dass ich nur die Koordinaten der Punkte der Polylinie will und nicht die mit dem Namen "Point.1" etc?
Vielen Dank,
Gruß, Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bartleby
Mitglied



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

Beiträge: 102
Registriert: 17.06.2004

Win XP V5R12 SP3, SP5
Win 2000 SP4 V5R12 SP3

erstellt am: 15. Sep. 2004 13:31    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 alf3k 10 Unities + Antwort hilfreich

Hallo alf3k,

Wenn die Punkte deiner Polylinie "direkte Kinder" der Polylinie sind dann gehts einfach mit der Suche nach der Polylinie und dann nach den Punkten in der Polylinie aber wenn die Punkte irgendwo anders in einem open Body hängen und der Punkt in der Polylinie nur eine Referenz ist dann wirds schwierig. Dann kommst Du nur noch über Polylinie.value.Parent.item(..)[Point]ran und das ist knifflig

sel muss polylinie sein

polylinie(n) suchen und item für item
oder selektieren lassen mit selectelement2

Sub CATMain()
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim selection1 As Selection
Set selection1 = partDocument1.Selection
selection1.Search "((((CATStFreeStyleSearch.Point + CATSketchSearch.2DPoint) + CATDrwSearch.2DPoint) + CATPrtSearch.Point) + CATGmoSearch.Point),sel"
End Sub

MfG Ronny

[Diese Nachricht wurde von Bartleby am 15. Sep. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

alf3k
Mitglied



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

Beiträge: 11
Registriert: 13.09.2004

erstellt am: 16. Sep. 2004 12:41    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

Danke für alle Antworten.
Mein Makro läuft und tut sogar was ich will. :-)
Gruß,
Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

chris3004
Mitglied
Student

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

Beiträge: 3
Registriert: 01.04.2005

erstellt am: 07. Apr. 2005 16:06    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 alf3k 10 Unities + Antwort hilfreich

Hallo,

ist es möglich ein solches Makro analog für Splines zu erstellen?
Oder ist dies aufgrund der Definition (erzeugung) von Splines in
Catia nicht möglich?
Mein Problem ich möchte auch Punkte des Splines auslesen die zwischen den Punkten liegen mit denen ich den Spline definiert habe.

Grüße
Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ladde2008
Mitglied



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

Beiträge: 10
Registriert: 21.04.2008

erstellt am: 06. Mai. 2008 14: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 alf3k 10 Unities + Antwort hilfreich

Zitat:
Danke für alle Antworten.
Mein Makro läuft und tut sogar was ich will. :-)
Gruß,
Marco

UND WIE ????
Hänge am selben Problem
Danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pgmuer
Mitglied



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

Beiträge: 111
Registriert: 22.01.2002

Catia V5 R18 Sp8
Catia V5 R19 Sp6

erstellt am: 18. Feb. 2009 10:58    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 alf3k 10 Unities + Antwort hilfreich

Hallo zusammen

Ich möchte das Thema auch noch einmal aufwärmen..

Ich habe ebenfalls das Problem, dass zur Erzeugung der Polylinie Vertexe verwendet werden. Werte ich die Punkte der Polylinie aus, so erhalte ich für X,Y,Z -> 0,0,0

Gibt es da wirklich keine Möglichkeit die Stützpunkte einer Polylinie (egal welcher Art) auszuwerten?

Gruss
Philipp

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

FiRo
Mitglied
Skript-Student


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

Beiträge: 26
Registriert: 07.11.2007

V5R17

erstellt am: 23. Feb. 2009 15:24    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 alf3k 10 Unities + Antwort hilfreich

ich hatte glaub mal ein aehnliches problem.

meine loesung war auf die vertexe einen 'einfachen' (HybridShapePointCoord) draufzusetzen (also mit koordinaten 0,0,0 und referenz zu dem vertex), dann die koordinaten des neuen punktes auslesen (geht mit der SPAWorkbench prima) und den punkt wieder zu loeschen.

ist nicht die feinste art, aber ich hatte fuer meinen fall keine bessere loesung gefunden.

------------------
no milk today...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Elsass-Franz
Mitglied
CAD Administrator


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

Beiträge: 26
Registriert: 16.03.2006

V5R19

erstellt am: 07. Mrz. 2009 01:21    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 alf3k 10 Unities + Antwort hilfreich

Hallo alf3k.

Ich habe in diesem Forum nach einer moeglichkeit gesucht, Geometrie Daten einer Polyline auszulesen, und bin auf deinen Beitrag gestossen.

Ich habe unter v4, ein IUA Programm geschrieben, dass solche Daten ausliesst, und in ein Textfile schreibt.

Da unsere Firma jetzt (endlich) auf V5 ungestiegen ist, und da Ich keine Ahnung von CATScript, oder VBscript habe, wollte Ich wissen ob Du mir dein Programm zukommen lassen wuerdest ?

Im vorraus danke.    Elsass-Franz

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