Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Polylinien Makro

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:  Polylinien Makro (1871 mal gelesen)
nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 18. Jan. 2008 13:00    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


part_1.JPG


part_2.JPG

 
Hallo Forengemeinde

Ich habe ein Problem mit einem Macro welches ich Schreiben möchte, ich bin leider noch nicht so Fit da drin Aber ich komme mal zum Punkt.

Ich möchte ein Makro schreiben welches mir aus einer Anzahl aus 360 Punkten eine Polylinie erzeugt...
Zum Allgemeinem Verständniss befindet sich im anhang ein Screenshot auf dem man den Aufbau meines .Parts sieht

Die Punkte die ich verwenden möchten liegen im GEO SET "POINTS" siehe screenshot ( part_2 )

Die Polylinie soll im GEO SET "CURVE" erstellt werden siehe screenshot ( part_1 )

So nun meine Idee, ich habe mit dem Makrorecorder mal eufgezeichnet was passiert wenn ich mal 2 Punkte verbinden möchte
Dann habe ich den Code ein wenig zurechtgerückt und das Makro so wie es jetzt ist ausgeführt, welches auch super funktioniert hat.
Aber es hat mir halt nur 2 Punkte verbunden was ja auch klar ist...

Nun habe ich mir überlegt wenn ich jetzt eine For-Next Schleife mache die ich halt 360 mal durchlaufen lasse
sollte das ja funktionieren, ich muss dafür aber natürlich bei jedem Durchlauf einige Zahlenwerte um 1 Hochsetzen

Z.B. Point.1 zu Point.2 ... Point.3 ... usw ....

Das würde ich ja mit einem Zähler umsetzen können
Nun kommt es zum eigentlichen Problem, ich weiss einfach nicht wie ich den Zähler an die Parameter Point.ZÄHLER weitergeben soll
Es kommt dabei zu Fehlermeldungen bezüglich CODE DEBUGGING bla bla ....

Lange Rede kurzer Sinn, hier ist mal der Makro Code im Funktionstüchtigem Zustand ( er erstellt aber halt nur eine Polylinie aus 2 Punkten )

Code:

Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline()
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("POINTS")
Set hybridShapes1 = hybridBody1.HybridShapes

' PUNKT 1 Wird hinzugefügt


Set hybridShapePointCoord1 = hybridShapes1.Item("Point.0" )

Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)

hybridShapePolyline1.InsertElement reference1, 1


' PUNKT 2 Wird hinzugefügt

Set hybridShapePointCoord2 = hybridShapes1.Item("Point.1")

Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord2)

hybridShapePolyline1.InsertElement reference2, 2

hybridShapePolyline1.Closure = False
Set hybridBody2 = hybridBodies1.Item("CURVE")
hybridBody2.AppendHybridShape hybridShapePolyline1
part1.InWorkObject = hybridShapePolyline1
part1.Update

End Sub



Mein Grundgedanke war halt das ich das MAKRO Folgendermaßen aufbauen könnte

Code:

Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline()
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("POINTS")
Set hybridShapes1 = hybridBody1.HybridShapes

' PUNKT 1 Wird hinzugefügt


Dim PUNKT, ZAEHLER

ZAEHLER = 1

For PUNKT = 1 To 360 Step 1

Set hybridShapePointCoordZAEHLER = hybridShapes1.Item("Point.PUNKT")

Set referenceZAEHLER = part1.CreateReferenceFromObject(hybridShapePointCoordZAEHLER)

hybridShapePolyline1.InsertElement referenceZAEHLER, ZAEHLER

ZAEHLER = ZAEHLER + 1

Next

hybridShapePolyline1.Closure = False
Set hybridBody2 = hybridBodies1.Item("CURVE")
hybridBody2.AppendHybridShape hybridShapePolyline1
part1.InWorkObject = hybridShapePolyline1
part1.Update



Ich wäre echt Dankbar für eine Hilfe von euch !!! Ich verzweifle langsam da dran !!!

PS: Lasst euch bitte nicht von den Screenshot Namen verwirren ( Part_1 und Part_2 ) Ich habe sie nur so zur Trennung benannt... Beide GEO SETS befinden sich Natürlich in einem PART ...

Mfg: Nreim

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 18. Jan. 2008 15:02    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 nreim1 10 Unities + Antwort hilfreich

Hi nreim1,

Willkommen im Forum.

OHNE es getestet zu haben würde ich folgendes machen:


Code:

Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline()
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("POINTS")
Set hybridShapes1 = hybridBody1.HybridShapes

' PUNKT 1 Wird hinzugefügt


Dim PUNKT

For PUNKT = 1 To hybridShapes1.Count

Set ref = part1.CreateReferenceFromObject(hybridShapes1.Item(PUNKT)

hybridShapePolyline1.InsertElement ref, PUNKT

Next

hybridShapePolyline1.Closure = False
Set hybridBody2 = hybridBodies1.Item("CURVE")
hybridBody2.AppendHybridShape hybridShapePolyline1
part1.InWorkObject = hybridShapePolyline1
part1.Update


Das funktioniert aber nur, wenn in Geoset POINTS keine weiteren
Element drin liegen.

Gruß
Proofin

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 18. Jan. 2008 15: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

SSSSSSUUUUUUUPPPPPPEEEEEERRRRRR  PROOFIN

Das hat einwandfrei geklappt, du hast zwar eine ) Vergessen in dem Absatz

Code:

For PUNKT = 1 To hybridShapes1.Count

Set ref = part1.CreateReferenceFromObject(hybridShapes1.Item(PUNKT)) <---

hybridShapePolyline1.InsertElement ref, PUNKT


Nachdem ich die hinzugefügt hatte hat alles Super Funktioniert .... Es waren im GEO SET POINTS Natürlich keine weiteren Elemente !!!

ICH DANKE DIR VIELMALS FÜR DEINE MÜHEN UND ZEIT DIE DU INVESTIERT HAST ...

           

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