| |
| KISTERS 3DViewStation: 3D-Visualisierung für After Sales, Service und Ersatzteile, eine Pressemitteilung
|
Autor
|
Thema: polyline aus vorhandenen punkten erstellen (1910 mal gelesen)
|
sashlanger Mitglied BA-Student
Beiträge: 31 Registriert: 17.01.2005 V5 R16
|
erstellt am: 15. Jul. 2005 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin vb-anfänger und bräuchte mal ein bissle Hilfe. Ich habe in einem Part 11 Punkte die z.B. Extremum1, Extremum2 usw heißen. Es ist ein Parameter mit dem Wert 11 vorhanden der die Anzahl der Punkte steuert. Ich möchte nun in einem VBSkript diesen Wert des Parameters auslesen und dann die sich ergebende Anzahl an Punkten zu einer Polyline verbinden. Kann mir da jemand helfen wie ich anfange? Wie lese ich das aktuelle Part ein, wie lese ich den Parameter ein und wie finde ich in einer for-Schleife die Punkte aus dem Part und wie erstelle ich daraus dann die Polyline?? Wär echt super wenn Ihr mir helfen könntet... MfG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005
|
erstellt am: 15. Jul. 2005 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für sashlanger
Hallo, probier mal folgenden code: Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set parameters1 = part1.Parameters Set intParam1 = parameters1.Item("AnzahlPunkteParameter") num_points = intParam1.Value Set hybridShapeFactory1 = part1.HybridShapeFactory Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline() Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("OpenBody.1") Set hybridShapes1 = hybridBody1.HybridShapes For i = 1 To num_points Set hybridShapePointCoord1 = hybridShapes1.Item("Extremum" & i) Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1) hybridShapePolyline1.InsertElement reference1, i Next i hybridShapePolyline1.Closure = False hybridBody1.AppendHybridShape hybridShapePolyline1 part1.InWorkObject = hybridShapePolyline1 part1.Update End Sub "OpenBody.1" und "AnzahlPunkteParameter" musst du halt noch an deine Namen anpassen, dann müssts laufen. Ciao Max [Diese Nachricht wurde von MaxZ am 15. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sashlanger Mitglied BA-Student
Beiträge: 31 Registriert: 17.01.2005 V5 R16
|
erstellt am: 15. Jul. 2005 09:46 <-- editieren / zitieren --> Unities abgeben:
erstmal vielen Dank für die super schnelle Antwort. ich habe den source jetzt so angepasst: Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set parameters1 = part1.Parameters Set intParam1 = parameters1.Item("Anzahl_der_Punkte_br") num_points = intParam1.Value Set hybridShapeFactory1 = part1.HybridShapeFactory Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline() Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Beruehrpunkte_bonnet_rear") Set hybridShapes1 = hybridBody1.HybridShapes For i = 1 To num_points Set hybridShapePointCoord1 = hybridShapes1.Item("beruehrpunkt_br." & i) Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1) hybridShapePolyline1.InsertElement reference1, i Next i hybridShapePolyline1.Closure = False hybridBody1.AppendHybridShape hybridShapePolyline1 part1.InWorkObject = hybridShapePolyline1 part1.Update End Sub leider bekomme ich ne Fehlermeldung, siehe screenshot. Mir sagt das nicht wirklich viel, aber ich probier mal ein bissle rum. Vielen Dank auf jeden Fall... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005
|
erstellt am: 15. Jul. 2005 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für sashlanger
ah, okay! dann versuch: Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set parameters1 = part1.Parameters Set intParam1 = parameters1.Item("Anzahl_der_Punkte_br") num_points = intParam1.Value Set hybridShapeFactory1 = part1.HybridShapeFactory Set hybridShapePolyline1 = hybridShapeFactory1.AddNewPolyline() Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Beruehrpunkte_bonnet_rear") Set hybridShapes1 = hybridBody1.HybridShapes For i = 1 To num_points Set hybridShapePointCoord1 = hybridShapes1.Item("beruehrpunkt_br." & i) Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1) hybridShapePolyline1.InsertElement reference1, i Next hybridShapePolyline1.Closure = False hybridBody1.AppendHybridShape hybridShapePolyline1 part1.InWorkObject = hybridShapePolyline1 part1.Update End Sub next braucht im vbscript die laufvariable nicht, in vba schon. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sashlanger Mitglied BA-Student
Beiträge: 31 Registriert: 17.01.2005 V5 R16
|
erstellt am: 15. Jul. 2005 10:04 <-- editieren / zitieren --> Unities abgeben:
ja eigentlich wollte ich das ganze auch in vba machen, aber irgendwie bekomm ich es nicht auf die Reihe das ganze im VBA zu editieren. Ich glaube ich muss mir erstmal ne Grundeinweisung geben lassen. Wenn Dein Source für VBA gedacht war dann probier ich das lieber mal hinzukriegen damit Du nicht noch mehr Arbeit hast, in VB kommt nämlich noch ein Fehler (s. Screenshot), hatte das i sogar mal selbstständig hinter dem next gelöscht ;-) Also vielen Dank nochmal... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005
|
erstellt am: 15. Jul. 2005 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für sashlanger
das dürfte die Zeile sein in der der OpenBody gewählt wird. wenn ichs laufen lass funktionierts bei mir. liegt dein Openbody ein einem anderen Körper? falls ja dürfts daran liegen und der fehler auch in VBA auftauchen. ; ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sashlanger Mitglied BA-Student
Beiträge: 31 Registriert: 17.01.2005 V5 R16
|
erstellt am: 15. Jul. 2005 10:19 <-- editieren / zitieren --> Unities abgeben:
ahaaaaaaa, jau da is noch ein anderer body drüber. ich dachte der durchsucht irgendwie alle Ebenen nach dem Body weil es sich in der Online-Hilfe auch so anhört. dann schau ich mal nach wie ich eine Ebene tiefer komme ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005
|
erstellt am: 15. Jul. 2005 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für sashlanger
kleiner tip: die zeile: Set hybridBodies1 = part1.HybridBodies durch die: Set bodies1 = part1.Bodies Set body1 = bodies1.Item("MainBody") Set hybridBodies1 = body1.HybridBodies ersetzten und wieder namen anpassen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sashlanger Mitglied BA-Student
Beiträge: 31 Registriert: 17.01.2005 V5 R16
|
erstellt am: 15. Jul. 2005 10:42 <-- editieren / zitieren --> Unities abgeben:
|