| |  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | | |  | Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
|
Autor
|
Thema: Abschlussarbeit - Makroprogrammierung (2080 mal gelesen)
|
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 19. Jun. 2015 16:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo, im Rahmen meiner Abschlussarbeit bin ich auf dieses tolle Forum gestoßen. Thema der Arbeit ist die Programmierung eines Makros. Ziel dessen Automation soll sein, ein Konstruktionselement entlang einer Spline, im vom User gewählten Abstand, mehrfach aus einer Powercopy heraus einzufügen. Der Konstrukteur soll anhand von Eingabemasken die Variante des einzufügenden Elements, die Spline und die Abstände wählen können. Ich beschäftige mich erst seit wenigen Wochen mit dem Thema und würde als Einstieg gern einen allgemeinen VBA-Code schreiben, welcher eine Powercopy in ein Part einfügt (KT1-Lizenz vorhanden). Ganz allgemein gefragt: Wie funktioniert die Übergabe eines, z.B. einfachen Blocks mittels einer Powercopy an eine bestimmte Stelle eines Parts? Würde gern klein anfangen. Ich bin für eure Hilfe sehr dankbar. Viele Grüße und ein schönes Wochenende. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Jun. 2015 16:59 <-- editieren / zitieren --> Unities abgeben:          Nur für denniszappi
Servus Willkommen im Forum. Schon mal hier im Forum und in der Doku nach "InstanceFactory" geschaut. Da solltest du ein Beispiel finden. Gemäß Doku sollte mit "PutInputData" der Input für die PowerCopy (zB den Einfügepunkt, Referenzebene je nach dem was in der PowerCopy als Input notwendig ist) definiert werden können. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 23. Jun. 2015 11:16 <-- editieren / zitieren --> Unities abgeben:         
Vielen lieben Dank! Das Einfügen einer Powercopy via Makro hab ich nun mit Hilfe des Beispiels verstanden und erledigt. Als nächstes brauche ich einen einfachen Weg, der es mir erlaubt die vorkonstruierte Geometrie, je nach Userwunsch beliebig oft an Punkten einzufügen (der Code zeigt exemplarisch 5 Punkte). Anbei der Code, so wie ich ihn mir vorgestellt hatte. Jedoch wird das Template immer nur am zuletzt genannten Punkt eingefügt. Sub CATMain()
Dim PartDocument1 As PartDocument Set PartDocument1 = CATIA.ActiveDocument Dim Part1 As Part Set Part1 = PartDocument1.Part '------------------------------------------------------------------ Dim factory As InstanceFactory Set factory = Part1.GetCustomerFactory("InstanceFactory") '------------------------------------------------------------------ factory.BeginInstanceFactory "Retainer", "L:\MACROS\Clip_Retainer\CLIP_RETAINER.CATPart" '------------------------------------------------------------------ factory.BeginInstantiate '------------------------------------------------------------------ Dim Point1, Point2, Point3, Point4, Point5 As Object Set Point1 = Part1.FindObjectByName("Point.1") Set Point2 = Part1.FindObjectByName("Point.2") Set Point3 = Part1.FindObjectByName("Point.3") Set Point4 = Part1.FindObjectByName("Point.4") Set Point5 = Part1.FindObjectByName("Point.5") factory.PutInputData "Point.1", Point1 factory.PutInputData "Point.1", Point2 factory.PutInputData "Point.1", Point3 factory.PutInputData "Point.1", Point4 factory.PutInputData "Point.1", Point5 '------------------------------------------------------------------ Dim Instance As ShapeInstance Set Instance = factory.Instantiate '------------------------------------------------------------------ factory.EndInstantiate '------------------------------------------------------------------ factory.EndInstanceFactory '------------------------------------------------------------------ Part1.Update End Sub Vielen Dank im Voraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Jun. 2015 11:36 <-- editieren / zitieren --> Unities abgeben:          Nur für denniszappi
Servus Vermutlich muss du für jeden einzeln Punkt folgende Zeilen ausführen (hab die Lizenz nicht um es zu testen: Code: actory.BeginInstantiate factory.PutInputData "Point.1", Point1 Dim Instance As ShapeInstance Set Instance = factory.Instantiate factory.EndInstantiate
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 23. Jun. 2015 13:43 <-- editieren / zitieren --> Unities abgeben:         
Grandios, voll ins Schwarze! Der Tipp hat mich an mein 2. Zwischenziel gebracht. Als nächstes möchte ich, dass der User die gewünschten Positionen für die Clip-Retainer entlang einer Linie, Kurve, Spine, Pattern..., je nach Bauteilgeometrie, im gewünschten Abstand per UserForm festlegen kann. Falls hier jemand Denkanstöße hat, weil er Vergleichbares bereits programmiert hat, gern raus damit. Bin dankbar für Alles! Vielen Dank an Dich, Bernd, für die schnelle und wertvolle Antwort. Beste Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 24. Jun. 2015 09:51 <-- editieren / zitieren --> Unities abgeben:         
|
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 25. Jun. 2015 09:43 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen allerseits! Ich habe eine Powercopy mit Parametern erstellt, welche ich gern mit in meinem Part einfügen möchte. Unter Relations steht vor jedem Parameter ein "deleted". Die Verknüpfung wird also irgendwie nicht hergestellt. Anbei mein Code: Sub CATMain() Dim PartDocument1 As PartDocument Set PartDocument1 = CATIA.ActiveDocument Dim Part1 As Part Set Part1 = PartDocument1.Part '------------------------------------------------------------------ Dim factory As InstanceFactory Set factory = Part1.GetCustomerFactory("InstanceFactory") '------------------------------------------------------------------ factory.BeginInstanceFactory "PowerCopy.1", "L:\MACROS\Clip_Retainer\CLIP_RETAIN.CATPart" '------------------------------------------------------------------ Dim Point1, Point2, Point3, Point4, Point5 As Object Dim Instance As ShapeInstance 'Parameter erzeugen '------------------------------------------------------------------ Dim parameters1 As Parameters Set parameters1 = Part1.Parameters Dim Wert As Double Wert_material_thickness = InputBox("Bitte die Materialstärke eingeben [0,8 mm]:") Wert_ball_corner = InputBox("Bitte den Radius eingeben [0,5 mm]:") Wert_width_out = InputBox("Bitte die Breite eingeben [18 mm]:") Wert_length_out = InputBox("Bitte die Länge eingeben [36 mm]:") Wert_offset_out = InputBox("Bitte die Y-Lage eingeben [11 mm]):") Dim length1 As Dimension Set length1 = parameters1.CreateDimension("material_thickness", "LENGTH", Wert_material_thickness) Set length1 = parameters1.CreateDimension("ball_corner", "LENGTH", Wert_ball_corner) Set length1 = parameters1.CreateDimension("width_out", "LENGTH", Wert_width_out) Set length1 = parameters1.CreateDimension("length_out", "LENGTH", Wert_length_out) Set length1 = parameters1.CreateDimension("offset_out", "LENGTH", Wert_offset_out) 'Einfügepunkte ermitteln und Powercopy einfügen '------------------------------------------------------------------ Set Point1 = Part1.FindObjectByName("Point.1") Set Point2 = Part1.FindObjectByName("Point.2") Set Point3 = Part1.FindObjectByName("Point.3") Set Point4 = Part1.FindObjectByName("Point.4") Set Point5 = Part1.FindObjectByName("Point.5") factory.BeginInstantiate factory.PutInputData "Point.1", Point1 Set Instance = factory.Instantiate factory.EndInstantiate factory.BeginInstantiate factory.PutInputData "Point.1", Point2 Set Instance = factory.Instantiate factory.EndInstantiate factory.BeginInstantiate factory.PutInputData "Point.1", Point3 Set Instance = factory.Instantiate factory.EndInstantiate factory.BeginInstantiate factory.PutInputData "Point.1", Point4 Set Instance = factory.Instantiate factory.EndInstantiate factory.BeginInstantiate factory.PutInputData "Point.1", Point5 Set Instance = factory.Instantiate factory.EndInstantiate '------------------------------------------------------------------ factory.EndInstanceFactory '------------------------------------------------------------------ Part1.Update End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
     
 Beiträge: 3437 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 25. Jun. 2015 10:52 <-- editieren / zitieren --> Unities abgeben:          Nur für denniszappi
Hallo denniszappi, wenn du Formeln in der PC hast musst du diese in der PC im Ursprung einbinden. RelationSet in die PC und entsprechende Formeln reinhängen. ------------------ Gruß Uwe Auch Catia ist nur ein Mensch!  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 25. Jun. 2015 11:09 <-- editieren / zitieren --> Unities abgeben:         
|
denniszappi Mitglied Bachelorand

 Beiträge: 16 Registriert: 19.06.2015 Windows 7 SP1, 64 bit, CATIA V5 R24
|
erstellt am: 02. Jul. 2015 11:33 <-- editieren / zitieren --> Unities abgeben:         
Salut liebe Leute, ich möchte einen Abzugskörper per Powercopy in ein Part einfügen. Ein Koordinatensystem ist sowohl im Zielpart, als auch in der Powercopy vorhanden. Im Prinzip sollen dessen Achsen nur übereinander geleget werden und eine Plane als Offset ist auch noch im Input der Powercopy. Klappt manuell wunderbar. Ich möchte das ganze per Makro ablaufen lassen. Wie muss der Code für die Inputkomponenten aussehen. Habe es leider nicht gefunden. Punkt auf Punkt ist kein Problem, dafür nutze ich folgenden Code: Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part '------------------------------------------------------------------ Dim factory As InstanceFactory Set factory = part1.GetCustomerFactory("InstanceFactory") '------------------------------------------------------------------ factory.BeginInstanceFactory "PowerCopy.1", "L:\MACROS\Clip_Retainer\ABZUG_CLIP_RETAIN.CATPart" '------------------------------------------------------------------ 'Einfügepunkte ermitteln '------------------------------------------------------------------ Dim Point1 As Object Set Point1 = part1.FindObjectByName("Point.1001") '------------------------------------------------------------------ 'Einfügen '------------------------------------------------------------------ factory.BeginInstantiate factory.PutInputData "Point.6", Point1 Dim Instance As ShapeInstance Set Instance = factory.Instantiate factory.EndInstantiate '------------------------------------------------------------------ factory.EndInstanceFactory '------------------------------------------------------------------ part1.Update End Sub Aber für dieses Part müssen die Achsen berücksichtigt sein und als Input angewählt werden. Vielen Dank für eure Tipps Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |