| |  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | | |  | KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Automatische Zuweisung einer Skizze (1557 mal gelesen)
|
Dussel86 Mitglied Kooperativer Student
 Beiträge: 8 Registriert: 14.07.2009
|
erstellt am: 21. Jul. 2009 17:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo miteinander. Ich schreibe gerade meine Bachelorarbeit, mit dem Zeil, Abläufe im NC-Bereich (PrismaticMachining) zu automatisieren. Dazu würde ich gern zunächst eine Taschenfräsoperation kopieren und anschließend dieser kopierten Operation eine neue Kontur (Skizze) zuweisen. Das Kopieren der Operation funktioniert, jetzt hänge ich an der Konturzuweisung. Mein Problem dabei ist ziemlich grundsätzlicher Natur: Die "Automation.chm" durchschaue ich mal gar nicht . Deshalb habe ich auch keine Ahnung, wie und über welches Objekt ich auf die Kontur zugreifen kann. Was mir fehlt, sind also letztlich (wie ich vermute) nur zwei Zeilen: Dim Variable As ... Set Variable.... = ... (selektierte Skizze)
Die Skizze wähle ich der Einfachheit halber zunächst selbst aus, die Automatisierung erfolgt dann noch in einem seperaten Schritt, wenn ich dieses Probelm behoben habe.
Ich arbeite mit CatiaV5R18, es erfolgt in Kürze aber eine Umstellung auf R19. Ich programmiere noch mit CATSript. Meine Programmiererfahrung ist eher gering, während des Studiums hatte ich zwar Informatik (Programmierung in C), aber in der Makroprogrammierung bin ich offensichtlich ein absoluter Neuling. Folgenden Thread - Programmierung mit NC - habe ich bereits gefunden. Grob hab ich den Ablauf auch verstanden, die Details bleiben mir bisher aber noch verschlossen. Als Grundlagen arbeite ich zunächst mit dem Buch von Ziethen ("Effiziente Konstruktion mit Makros") und dem Macro-Rekorder. Ich hoffe, mir wird hier weitergeholfen. Vorweg schonmal schönen Dank. Simon ------------------ Original von Grummel: "Polen gehört zwar mittlerweile zur EU, aber deshalb haben sie noch lange nicht unseren DSL-Standard erreicht." (06.2005) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 21. Jul. 2009 19:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Dussel86
Hallo, du hast eine Skizze selektiert und brauchst jetzt das SKizzenobjekt? Code: Dim mySkizze as Sketch Set mySkizze = mySel.Item(1).Value
(wenn du zuvor die Skizze im 3D oder im Sktrukturbaum selektiert hast).
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dussel86 Mitglied Kooperativer Student
 Beiträge: 8 Registriert: 14.07.2009
|
erstellt am: 22. Jul. 2009 07:14 <-- editieren / zitieren --> Unities abgeben:         
Danke dir für die zügige Antwort, Daniel. Allerdings brauche ich nicht die Skizze, sondern ich möchte diese Skizze jetzt einer Bearbeitungsoperation zuweisen. In etwa so: Code: Dim mySkizze as Sketch Set mySkizze = mySel.Item(1).ValueDim myBearbeitung as ManufacturingOperation Set myBearbeitung.Kontur = mySkizze
Und diese fett-geschriebene Definition bleibt aufgrund der für mich undurchschaubaren V5Automation.chm vollkommen verborgen. Vielleicht könnte mir ja jemand in Kürze erklären, wie ich mit dieser Hilfe arbeiten kann, damit ich solche Fragen auch allein herausfinden kann . Und nochmals herzlichen Dank, Simon
------------------ Original von Grummel: "Polen gehört zwar mittlerweile zur EU, aber deshalb haben sie noch lange nicht unseren DSL-Standard erreicht." (06.2005) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
 
 Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 22. Jul. 2009 18:51 <-- editieren / zitieren --> Unities abgeben:          Nur für Dussel86
Hallo Simon, im V5Automation.chm ist die Objektstruktur von CATIA beschrieben. Ganz hilfreich sind da die Beispiele (Use cases), die man unter Inhalt - Getting started... - Working with ... - Use Cases findet. Hier ist auch eine Grafik der Objekte zu finden ... Objects, wo man die Struktur der Objekte sehen kann und man zu den einzelen Objekten navigieren kann, wo dann die Properties und Methods dokumentiert sind. Es gibt auch einige Beispiele bei den jeweiligen Objekten, da muss man aber schon aufpassen, weil die an vielen Stellen Tippfehler/falsche Deklarationen enthalten. Ganz viel geholfen hat mir das Watch-Fenster im VBA. Einfach ins VBA wechseln (Alt+F11), Debug - Add watch... CATIA.Activedocument - All Modules - All Procedures eingeben und schon kann man in der Objektstruktur vieles sehen. Man muss sich aber etwas in der Programmierung und Objekte auskennen, um damit was anfangen zu können. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dussel86 Mitglied Kooperativer Student
 Beiträge: 8 Registriert: 14.07.2009
|
erstellt am: 23. Jul. 2009 15:06 <-- editieren / zitieren --> Unities abgeben:         
Danke Dir Zoltan, der Tipp mit den "Use Cases" ist wirklich sehr hilfreich, da kann man schon einiges herausziehen. So richtig klar sind mir die Dinge zwar noch nicht, aber das wird schon . Das ursprüngliche Problem hab ich durch Deine Hilfe habe ich schon insofern eingrenzen können, dass ich dne passenden Befehl schonmal gefunden habe: Code:
Dim UserArea As ManufacturingPrismaticMachiningArea Dim UserFeature As ManufacturingFeature Hilsvariable = UserSel.SelectElement2(Ref_Skizze, "Skizze", false) Set UserFeature = UserSel.Item(1).Value Set UserArea = ? Call UserArea.SetGeometries("Contours", 0, 1, UserFeature, Product?, 0)
Ich muss also - wenn ich mich nucht irre - die UserArea noch einem Objeakt zuordnen und das Product definieren. Ist das richtig? ------------------ Original von Grummel: "Polen gehört zwar mittlerweile zur EU, aber deshalb haben sie noch lange nicht unseren DSL-Standard erreicht." (06.2005) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dussel86 Mitglied Kooperativer Student
 Beiträge: 8 Registriert: 14.07.2009
|
erstellt am: 23. Jul. 2009 17:06 <-- editieren / zitieren --> Unities abgeben:         
Irgendwie habe ich es jetzt ans Laufen bekommen: Code: Sub CATMain()Dim Process_Doc As ProcessDocument Set Process_Doc = Catia.ActiveDocument Dim Produkt as Product Set Produkt = Process_Doc.PPRDocument Dim Ref_Operation(0) Ref_Operation(0) = "ManufacturingOperation" Dim Ref_Skizze(0) Ref_Skizze(0) = "Sketch" Dim UserSel As Selection Set UserSel = Catia.ActiveDocument.Selection UserSel.Clear Dim Hilfsvariable Dim Operation As ManufacturingOperation Hilfsvariable = UserSel.SelectElement2(Ref_Operation, "Operation", false) Set Operation=UserSel.Item(1).Value Dim UserFeature As ManufacturingFeature Dim Skizze As Sketch Hilsvariable = UserSel.SelectElement2(Ref_Skizze, "Skizze", false) Set Skizze = UserSel.Item(1).Value Set UserFeature = Operation.MachinableFeature Call UserFeature.RemoveAllGeometry("Contours") Call UserFeature.SetGeometries("Contours", 0, 1, Skizze, Produkt, 0) End Sub
Warum es funktioniert, verstehe ich zwar nicht und vermutlich ist es auch ein schlechter Programmierstil, aber ich freue mich trotzdem . ------------------ Original von Grummel: "Polen gehört zwar mittlerweile zur EU, aber deshalb haben sie noch lange nicht unseren DSL-Standard erreicht." (06.2005) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
 
 Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 23. Jul. 2009 18:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Dussel86
Hallo Dussel86, in den NC-Modulen kenne ich mich überhaupt nicht aus, aber aus der Sicht der allgemeinen Programmierung sieht dein Code schon nicht so schlecht aus. Du hast die Variablen deklariert, wo es möglich war mit Datentypen. Folgende Zeile könntest du vereinfachen: Call UserFeature.RemoveAllGeometry("Contours") UserFeature.RemoveAllGeometry "Contours" Wenn ein Sub (Method) aufgerufen wird, darf man keine Klammern verwenden, dann geht es auch ohne Call. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dussel86 Mitglied Kooperativer Student
 Beiträge: 8 Registriert: 14.07.2009
|
erstellt am: 29. Jul. 2009 13:59 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |