Autor
|
Thema: Programmierung mit NC (2123 mal gelesen)
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 19. Feb. 2007 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, hat jemand ein bischen Ahnung wie das mit der Programmierung im NC-Workbench funktioniert??? Ich bekomm da irgendwie keine Operationen eingefügt. Ganz Egal welche. :-( Wäre nett wenn sich jemand melden könnte. Danke schonmal im Vorraus Gruß Timber ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 19. Feb. 2007 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 19. Feb. 2007 15:43 <-- editieren / zitieren --> Unities abgeben:
Naja eigentlich ist es ganz simpel. Ich habe eine referenz-Operation. z.B. Konturfräsen. Die Operation brauch ich 5 mal. Das Makro soll also die Operation kopieren, und nach dem kopieren, jeweils ein neue Kontur (Kurve) zuweisen. Die neuen Konturen liegen im Part in einem geometrischen Set, welche ich mit einer Schleife durchlaufenlassen will. Also für jede Kurve im Set eine Operation kopieren und neue Kurve zuweisen. Ich habs mit dem Kopieren schon geschafft, nur schaff ich es nicht den kopierten Operationen die neuen Kurven zuzuweisen. Ablauf eigentlich simpel
Code:
For x= 1 to "Elemente im Set" Referenzoperation kopieren Neue Kurve zuweisen Next
Ich bekomms einfach nicht hin, man findet ja auch nirgendwo ne Doku :-(
------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 19. Feb. 2007 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 19. Feb. 2007 16:23 <-- editieren / zitieren --> Unities abgeben:
Also: Ich habe schon eine Operation definiert. Diese Operation beinhaltet eine Kurve. Desweiteren habe ich ein Set mit z.B. 5 Kurven.
Das Set klicke ich über eine Selection an. Nun Soll folgendes passieren: 1. Referenzoperation kopieren (Mach ich über Copy/Paste einer Selection das funktioniert wunderbar) 2. nach jedem kopieren, soll die kopierte Operation eine neue kurve zugewiesen bekommen, das es am Ende so aussieht: 1. Referenzoperation --> Referenzkurve 2. Operation1 --> Kurve 1 3. Operation2 --> Kurve 2 4. Operation3 --> Kurve 3 5. Operation4 --> Kurve 4 6. Operation5 --> Kurve 5
Hoffe es ist so verständlich genug :-)
------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 19. Feb. 2007 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hi Timberwolve, ich hab mal etwas in den Unweiten meiner Festplatte geforscht und hab folgendes gefunden: Dim oMachiningArea As ManufacturingPrismaticMachiningArea Dim oMachinableFeature As ManufacturingMachinableFeature Set oMachinableFeature = oNewOP.MachinableFeature 'oNewOP ist die Kopie Set oMachiningArea = oMachMachFeat ' vorhandene Kontur löschen Call oMachiningArea.RemoveAllGeometry("Contours") ' neue Kontur hinzufügen, wobei oLine deine neue Kurve ist ' und Setup1 ist das ManufacturingSetup Call oMachiningArea.SetGeometries("Contours", 0, 1, oLine, Setup1.Product, 0) Ich hoffe es hilft dir weiter, ansonsten kannst du mal bitte deinen Code posten. Gruß Proofin [Diese Nachricht wurde von Proofin am 19. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 20. Feb. 2007 10:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin leider nicht weitergekommen. Irgendwie scheint das mit dem zuweisen des MachinableFeatures nicht zu klappen. Ich poste hier mal meinen Code, vielleicht kannst du ja was dran sehen. Code:
Public Process_Doc As ProcessDocument Public Manu_Program As ManufacturingProgram Public Ref_op As ManufacturingOperation Public InputProzess(0) Public Input_OP(0)Dim Prosel 'As Selection Sub CATMain() InputProzess(0) = "ManufacturingProgram" Input_OP(0) = "ManufacturingOperation" Set Process_Doc = CATIA.ActiveDocument
Set product1 = Process_Doc.PPRDocument Set products1 = product1.Products Set product2 = products1.Item(1) Set products2 = product2.Products Set product3 = products2.Item(1) Set Prosel = Process_Doc.Selection
Dim Status Prosel.Clear 'Programm selektieren***************************************************************************************************** Status = Prosel.SelectElement2(InputProzess, "Bitte Programm wählen", True) Set Manu_Program = Prosel.Item(1).Value Dim Test As Variant Prosel.Clear ' Operation selektieren*************************************************************************************************** Status = Prosel.SelectElement2(Input_OP, "Bitte Operation wählen", True) Set Ref_op = Prosel.Item(1).Value Dim GEOSET_BAHNEN As HybridBody '************************************************************************************************************************* Dim InputGS(0) Dim ZielGS As HybridBody Dim oManu_Area As ManufacturingSurfaceMachiningArea Dim oManu_Feat As ManufacturingFeature 'Set selektieren'********************************************************************************************************* InputGS(0) = "HybridBody" Status = Prosel.SelectElement2(InputGS, "Bitte Set mit den zu verarbeitenden Bahnen selektieren", True) Set ZielGS = Prosel.Item(1).Value 'Schleife für die Elemente im selektierten Set***************************************************************************** For xx = ZielGS.HybridShapes.Count To 1 Step -1 Set oManu_Feat = Nothing Call COPY_OPERATION(Ref_op, Manu_Program) 'Operation kopieren Dim New_OP As ManufacturingOperation Set New_OP = Manu_Program.ChildrenActivities.Item(3) New_OP.Name = "Operation_" & ZielGS.HybridShapes.Item(xx).Name 'Set oManu_Feat = New_OP.MachinableFeature 'Hier hängt es schon!!!!!!!!!!!!!!!!!! Set Ref_op = New_OP 'Kopierte Operation als Referenz für kopieren deklarieren Next End Sub Public Sub COPY_OPERATION(IN_OP, IN_PROG) 'Subroutine zum kopieren der letzen hinzugefügten Operation Prosel.Clear Prosel.Add IN_OP Prosel.Copy Prosel.Clear Prosel.Add IN_PROG Prosel.Paste Prosel.Clear End Sub
Ich hoffe du kannst damit etwas anfangen. Gruß Timber PS: Wenn du keine Antwort weisst, melde dich trotzdem, das ich zumindest weiss das es nicht funkt ;-) Ich arbeite mit "catvba" im Moment ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 20. Feb. 2007 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Moin, ich hab deinen Code fast unverändert bei mir laufen lassen und es funktioniert. Public Process_Doc As ProcessDocument Public Manu_Program As ManufacturingProgram Public Ref_op As ManufacturingOperation Public InputProzess(0) Public Input_OP(0) Dim Prosel 'As Selection Sub CATMain() InputProzess(0) = "ManufacturingProgram" Input_OP(0) = "ManufacturingOperation" Dim Setup1 As ManufacturingSetup Set Process_Doc = CATIA.ActiveDocument Set ActivityRef = Process_Doc.GetItem("Process") '*** Retrieve current SetUp '*** If (ActivityRef.IsSubTypeOf("PhysicalActivity")) Then Set childs = ActivityRef.ChildrenActivities quantity = childs.Count If quantity <= 0 Then Exit Sub End If NumberOfPO = 0 For i = 1 To quantity Set child = childs.Item(i) If (child.IsSubTypeOf("ManufacturingSetup")) Then Set Setup1 = child NumberOfPO = NumberOfPO + 1 Exit For End If Next End If ' Set product1 = Process_Doc.PPRDocument ' ' Set products1 = product1.Products ' ' Set product2 = products1.Item(1) ' ' Set products2 = product2.Products ' ' Set product3 = products2.Item(1) Set Prosel = Process_Doc.Selection Dim Status Prosel.Clear 'Programm selektieren***************************************************************************************************** Status = Prosel.SelectElement2(InputProzess, "Bitte Programm wählen", True) Set Manu_Program = Prosel.Item(1).Value Dim Test As Variant Prosel.Clear ' Operation selektieren*************************************************************************************************** Status = Prosel.SelectElement2(Input_OP, "Bitte Operation wählen", True) Set Ref_op = Prosel.Item(1).Value Dim GEOSET_BAHNEN As HybridBody '************************************************************************************************************************* Dim InputGS(0) Dim ZielGS As HybridBody Dim oManu_Area 'As ManufacturingSurfaceMachiningArea Dim oManu_Feat As ManufacturingFeature 'Set selektieren'********************************************************************************************************* InputGS(0) = "HybridBody" Status = Prosel.SelectElement2(InputGS, "Bitte Set mit den zu verarbeitenden Bahnen selektieren", True) Set ZielGS = Prosel.Item(1).Value 'Schleife für die Elemente im selektierten Set***************************************************************************** For xx = ZielGS.HybridShapes.Count To 1 Step -1 Set oManu_Feat = Nothing Call COPY_OPERATION(Ref_op, Manu_Program) 'Operation kopieren Dim New_OP As ManufacturingOperation Set New_OP = Manu_Program.ChildrenActivities.Item(3) New_OP.Name = "Operation_" & ZielGS.HybridShapes.Item(xx).Name Set oManu_Feat = New_OP.MachinableFeature 'Hier hängt es schon!!!!!!!!!!!!!!!!!! Set oManu_Area = oManu_Feat ' vorhandene Kontur löschen Call oManu_Area.RemoveAllGeometry("Contours") ' neue Kontur hinzufügen ' Setup1 ist das ManufacturingSetup Call oManu_Area.SetGeometries("Contours", 0, 1, ZielGS.HybridShapes.Item(xx), Setup1.Product, 0) Set Ref_op = New_OP 'Kopierte Operation als Referenz für kopieren deklarieren Next End Sub Public Sub COPY_OPERATION(IN_OP, IN_PROG) 'Subroutine zum kopieren der letzen hinzugefügten Operation Prosel.Clear Prosel.Add IN_OP Prosel.Copy Prosel.Clear Prosel.Add IN_PROG Prosel.Paste Prosel.Clear End Sub Jetzt stellt sich die Frage welches Catia verwendest du, und welche Workbench? Gruß Proofin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 20. Feb. 2007 14:00 <-- editieren / zitieren --> Unities abgeben:
Danke für deine Bemühungen, ich habe das ganze nochmal versucht, aber es bleibt wieder an der gleichen Stelle hängen. Ich benutze V5R16SP5 und die SurfaceMachining Umgebung, in was hast du es denn getestet????? GRuß Timber ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 20. Feb. 2007 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 20. Feb. 2007 17:05 <-- editieren / zitieren --> Unities abgeben:
Ich weiss leider nicht was da schief läuft?! Er bleibt an der Stelle hängen an der das MachinableFeature deklarieren will. Ich weiss nicht wieso Vielleicht weisst du ja weiter. Gruß Timber
------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 20. Feb. 2007 17:18 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 21. Feb. 2007 09:30 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab es auch mit vba versucht und es klappt auch nicht. Also ich weiss nicht woran es liegt! Vielleicht an irgendwelchen Tools --> Options???????? ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 21. Feb. 2007 10:24 <-- editieren / zitieren --> Unities abgeben:
Dankeschön, wär ne Riesenhilfe wenn du das hinbekommen würdest. Wenn ich dazukomm installier ich mal R16Sp4 mal schaun obs dann läuft. Find das ganze etwas seltsam. Der Code den du gepostet hat läuft bei dir einwandfrei????? Gruß Timber ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 21. Feb. 2007 10:34 <-- editieren / zitieren --> Unities abgeben:
Ist eigentlich nicht notwendig, da ich nochmal einen neuen Prozess aufgezogen hab so wie es in deinem Screenshot zu sehen war. :-( ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hi Timber, hab das gerade nochmal laufen lassen, ohne Problem. Aber hab ein kleine Änderung, kann mir zwar nicht vorstellen das es daran liegt aber man weiß ja nie. Hab deine Kopierfunktion wie folgt geändert: *************************************** CODE Anfang *************************************** Public Sub COPY_OPERATION(IN_OP, IN_PROG, ByRef oNewOP) 'Subroutine zum kopieren der letzen hinzugefügten Operation Prosel.Clear Prosel.Add IN_OP Prosel.Copy Prosel.Clear Prosel.Add IN_PROG Prosel.Paste Set oNewOP = Prosel.Item(1).Value Prosel.Clear End Sub *************************************** Code Ende *************************************** damit sieht die Schleife jetzt so aus: *************************************** Code Anfang *************************************** ... 'Schleife für die Elemente im selektierten Set***************************************************************************** Dim oManu_Area As ManufacturingSurfaceMachiningArea Dim oManu_Feat AS ManufacturingFeature Dim New_OP AS ManufacturingOperation For xx = ZielGS.HybridShapes.Count To 1 Step -1 Set oManu_Feat = Nothing Set New_OP = Nothing Call COPY_OPERATION(Ref_op, Manu_Program, New_OP) 'Operation kopieren 'Set New_OP = Manu_Program.ChildrenActivities.Item(3) New_OP.Name = "Operation_" & ZielGS.HybridShapes.Item(xx).Name Set oManu_Feat = New_OP.MachinableFeature 'Hier hängt es schon!!!!!!!!!!!!!!!!!! Set oManu_Area = oManu_Feat ' vorhandene Kontur löschen Call oManu_Area.RemoveAllGeometry("Contours") ' neue Kontur hinzufügen, wobei oLine deine neue Kurve ist ' und Setup1 ist das ManufacturingSetup Call oManu_Area.SetGeometries("Contours", 0, 1, ZielGS.HybridShapes.Item(xx), Setup1.Product, 0) Set Ref_op = New_OP 'Kopierte Operation als Referenz für kopieren deklarieren Next ... *************************************** Code Ende *************************************** vielleicht hilft es ja ?! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 21. Feb. 2007 11:27 <-- editieren / zitieren --> Unities abgeben:
Nein auch das Funktioniert nicht! :-( Ich glaub ich gebs bald auf, sowas ist echt frustrierend........ Vielleicht kannst ja das vba-Projekt anhängen das bei dir Funktioniert????? Vielleicht mach ich ja irgendwas in meinem Projekt :-( ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 21. Feb. 2007 14:38 <-- editieren / zitieren --> Unities abgeben:
Wieder NIX! Das gibt es doch nicht. Ich habe jetzt mal im VBA alle Verweise geprüft, alles was mit CATIA V5 zu tun hat habe ich als Verweis hinzugefügt, hast du noch ne Idee?? Also auch mit deinem Projekt funkt es nicht!!!!! ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Nein tut mir leid, ich bin auch mit meinem Latein am Ende. Vielleicht hat noch einanderer 'ne Idee!! Ich kann höchstens noch versuchen das SP5 bei mir zu Installieren, aber ich kann dir nicht sagen wann ich dazu komm.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 21. Feb. 2007 19:54 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
Hi Timber, hab nochmal einbißchen im GA getestet. Das Machinable Feature scheint in der Surface Machining Umgebung nicht immer verfügbar zu sein, um nicht zu sagen eigentlich nie. Erst wenn die Operationen im Prismatic Umfeld erstellt werden, scheint das Feature gesetzt zu werden. Ich hab auch versucht mit dem Umschalten der Workbench zu arbeiten, das funktioniert leider auch nicht zu verlässig. Vieleicht kannst du da ansetzen und findest ja eine Abhängigkeit, vieleicht Maschine setzen nicht setzen irgendwas in dieser Richtung. Wenn ich noch etwas Zeit finde werd ich auch etwas weiter forschen. Gruß Proofin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 22. Feb. 2007 07:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, auch ich hab noch etwas weiter getestet --> Zeitverschwendung! Habe eine Maschine eingestellt, usw. hat alles nicht gebracht, immer die selbe stelle hängt. Hab auch einen neuen Prozess angelegt und die Operation im PrismaticMachining definiert. Ich weiss absolut nicht woran das hängt, vielleicht kannst du ja deinen Beispielprozess posten an dem das ganze funktioniert hat. Gruß Timber ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 22. Feb. 2007 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für Timberwolve
|
Timberwolve Mitglied
Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 23. Feb. 2007 07:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, dein Makro hat funktioniert! --> ERSTAUN Es lag an der Operation selbst. Bei dir ist es (Between Two Planes) bei mir (Between two Surfaces) und das geht anscheinend nicht. Gruß Timber ------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |