Autor
|
Thema: Obere Ebene einer Taschenfräsen-Operation zuweisen (2036 mal gelesen)
|
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 23. Sep. 2011 15:51 <-- editieren / zitieren --> Unities abgeben:
In der Doku hab ich folgendes gefunden: "Sub SetGeometry(iGeometryType, iReference, iProduct, iPosition) Assigns geometry to a Manufacturing Operation" und als Beispiel: Code: Set Product1 = Setup1.GetProductInstance() Dim Pocketing1 As ManufacturingOperation Set Pocketing1 = Program1.AppendOperation ("Pocketing",1) Pocketing1 .SetGeometry("PartBottom",Plane1,Product1,0)
meine Version davon ist nun folgende
Code: Set processDocument = CATIA.ActiveDocument Set PPR = processDocument.PPRDocument Set process = PPR.processes.Item("Process") Set clamping = process.GetItem("Aufspannung.1") call clamping.CreateMachine("Mfg3AxisMachine") Set manufacturingProgram = clamping.GetItem("Herstellungsprogramm.1") Set productJaw = PPR.products.Item("jaw_pattern.1") clamping.Product = productJaw Set product = clamping.GetProductInstance() Set pocketingOperation = manufacturingProgram.AppendOperation ("Pocketing",1) pocketingOperation.SetTool("End Mill D10 Rc2 N") pocketingOperation.SetGeometry "RelimitingPlane",Plane,product,0
Bisher funktioniert alles, nur SetGeometry am ende will nicht so richtig. Ich bekomme als Fehlermeldung immer: "Laufzeit Fehler, Typen unverträglich 'pocketingOperation.SetGeometry'" Damit bin ich nun überfragt, da das Beispiel ja zu fast drem selben Zweck eingesetzt wird und es ja offensichtlich daran liegt, das man (laut Fehlermeldung) ein Manufacturin Object nich mit SetGeometry verbinden kann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Sep. 2011 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für DaiVied
|
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 23. Sep. 2011 16:17 <-- editieren / zitieren --> Unities abgeben:
Eine Referenz habe ich nicht gebildet, kannst du mir da ein Stichwort nennen, nach dem ich in der Hilfe nachlesen kann? Code:
clampin.Product = productJaw Set product = clamping.GetProductInstance()
ich dachte damit weise ich dem Setup mein Part zu und weise dann product die Instanzen des im Setup enthaltenen Parts zu
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Sep. 2011 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für DaiVied
Servus Du musst genau darauf achten welchen Variablentyp d einer Funktion übergeben musst (siehe V5Automation). Die Referenz kann auf verschiedene weiße gebildet werden: - CreateReferencefromObject (nur im PartDesign?) - Objekt selektieren und Reference bilden (oSel.item2(1).Reference) - .... Was für einen Typ hat deine Variable "product" (Watchfenster benutzen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 28. Okt. 2011 11:13 <-- editieren / zitieren --> Unities abgeben:
Sorry, aber ich kann weder "oSel", noch "CreateReferencefromObject" in der Hilfedatei finden und dort nachschauen was es genau mit denen aufsich hat. Kannst du mir sagen, wie ich die finden kann, und wenn nicht, wie ich sie zu verwenden hab? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Okt. 2011 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für DaiVied
Servus "CreateReferenceFromObject" findest du direkt beim "Part" (in der V5Automation). oSel hatte ich als Selection deklariert (also unter Selection suchen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 09. Jan. 2012 11:43 <-- editieren / zitieren --> Unities abgeben:
Nachdem das Projekt ne Zeit auf Eis lag hab ich die Arbeit wieder aufgenommen. Ich Poste mal den Quellcode und beschreibe, was ich mir dabei gedacht habe. Wäre sehr nett, wenn mich dann jemand berichtigen könnte: Code: Set processDocument = CATIA.ActiveDocument Set PPR = processDocument.PPRDocument Set process = PPR.processes.Item("Process") Set clamping = process.GetItem("Aufspannung.1") Set manufacturingProgram = clamping.GetItem("Herstellungsprogramm.1") Set productJaw = PPR.products.Item("jaw_pattern.1") call clamping.CreateMachine("Mfg3AxisMachine") clamping.Product = productJaw Set product = clamping.GetProductInstance() Set plane = oSel.item2(1).Reference Set pocketingOperation = manufacturingProgram.AppendOperation ("Pocketing",1) pocketingOperation.SetTool("End Mill D10 Rc2 N") pocketingOperation.SetGeometry "RelimitingPlane",plane,product,0
Also mit "clamping.Product = productJaw" möchte ich meiner Aufspannung mein CATPart Jaw_pattern.1 als Aufgespanntes Werkstück zuweisen. Dann möchte ich mit "Set product = clamping.GetProductInstance()" der Variable "product" alle Instanzen des aufgespannten Teil zuweißen Mit "Set plane = oSel.item2(1).Reference" will ich der Variablen "plane" die Refferenz zur Ebene zuweißen. Hier bin ich allerdings überfragt, was in die Klammer hinter item2 gehört? In der Hilfe steht "The index of the SelectedElement object to return" Woher weiß ich, welche Integer meine Ebene hat? Hätte das alles so geklappt würde ich eine Tasche Fräsen und die "RelimitingPlane" mit den Informationen aus den Variabeln product und plane festlegen. Fehlermeldung ist: "objekt erforderlich 'oSel'" Wisst ihr, wo mein Denkfehler ist? wenn ich etwas Grundlegend falsch verstanden hab, könnt ihr mir dann bitte darlegen, wie der logische Aufbau einer solchen Auswahl aussieht? Vielen Dank für die Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 16. Jan. 2012 10:44 <-- editieren / zitieren --> Unities abgeben:
Mein neuster Versuch: Code: Set processDocument = CATIA.ActiveDocument Set PPR = processDocument.PPRDocument Set process = PPR.processes.Item("Process") Set clamping = process.GetItem("Aufspannung.1") Set manufacturingProgram = clamping.GetItem("Herstellungsprogramm.1") Set productJaw = PPR.products.Item("jaw_pattern.1") call clamping.CreateMachine("Mfg3AxisMachine") Set oSel = Selection.Add("productJaw") Set upperPlane = oSel.item2(1).Reference
Hier definiere ich ein Objekt oSel, also eine Selection, der ich über Selection.Add("productJaw") das Produkt "jaw_pattern.1" zuweise. Und dann will ich mit "oSel.item2(1).Reference" der Variable upperPlane die Referenc der Ebene zuweisen. So müsste es doch eigentlich gehen, oder? Was mich noch sehr verwirrt, ist "Selection" vor dem Add, was ich aus einem Beispiel der Hilfe hab (da kommen auch die Probleme her). Ist das eine Methode oder ein Objekt? mit dem "Selection" bekomm ich folgende Fehlermeldung: "Objekt erforderlich 'Selection'" und ohne bekomm ich : "Typen unverträglich 'Add'", also muss es ja für irgendwas gut sein? Des weiterne versteh ich immer noch nicht den Sinn von "item2(1)" in der Hilfe steht, das diese Funktion ein integer Wert eines Index eines Objekts zurückliefert. Fr was brauche ich das? Wie kann ich dabestimmen, von welchem Objekt ich es zurückgeliefert bekomme? Würde mir bitte jemand helfen? Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Jan. 2012 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für DaiVied
Servus Du musst auch zuvor deine Ebene selektieren (per User oder per Search, ...) und kannst dann über die Methode item2(1).Reference (also das erste selektierte Element) die Referenz bilden. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DaiVied Mitglied
Beiträge: 50 Registriert: 19.09.2011
|
erstellt am: 16. Jan. 2012 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Ich hab mal versucht, ganz von Anfang anzufangen und hab schon gute Fortschritte gemacht: Hier mal ein Makro, in dem ich etwas mit Selections probiere. Dadurch wurde mir einiges klar
Code: Sub CATMain() Dim oSel Set oSel = CATIA.ActiveDocument.Selection oSel.Clear CheckJawGeometry SelectPlanes End Sub sub SelectPlanes () Dim Jaw Dim Geometrics Dim Geometry Dim oSel Set oSel = CATIA.ActiveDocument.Selection oSel.Clear Set Jaw = CATIA.ActiveDocument.Part.MainBody Set Geometrics = Jaw.GeometricElements If Geometrics.Count > 0 Then For I =1 To Geometrics.Count Set Geometry = Geometrics.Item(I) If Geometry.GeometricType = catGeoTypePlane Then oSel.Add Geometry End If Next End If End sub sub CheckJawGeometry () Dim oSel Set oSel = CATIA.ActiveDocument.Selection oSel.Clear For I = 0 To 1 Step 1 If I = 0 Then oSel.Search "'Part Design'.Block" End If If I = 1 Then oSel.Search "'Part Design'.Tasche" End If If oSel.Count <> 1 Then J = J + 1 End If oSel.Clear Next If J <> 0 Then MsgBox("Bauteilgeometrie nicht kompatibel") End If End Sub
Mit der Methode "CheckJawGeometry" überprüfe ich die Bauteilgeometrie. Diese soll nämlich aus genau einem Block und einer Tasche bestehen. Das klappt super, ich denke ich habe die Selections verstanden (kann ich aber erst sagen, wenn die Methode SelectPlanes funktioniert). SelectPlanes soll mir alle Ebenen des Bauteils auswählen.Bei der Methode habe ich folgendes Problem: Ich kann GeometricElements nicht auf den MainBody anwenden. Als Fehler bekomme ich wieder: "Das Objekt 'Jaw' unterstützt die Methode nicht". Kann ich GeometricElements überhaupt auf einen Körper anwenden? In einem Beispiel wurde die Methode auf eine Skizze angewandt, da scheint es zu funktionieren. Weist du Rat? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Jan. 2012 20:00 <-- editieren / zitieren --> Unities abgeben: Nur für DaiVied
Servus Bei solchen Fragen hilft auch die V5Automation.chm weiter. Ebenen sind gehören zu den "Hybridshapes". Du kannst auch mal mit dem Makrorekorder das Suchen der Ebenen aufnehmen, um weiter Anhaltspunkte zum Aufbau der Suche zu bekommen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 16. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |