Autor
|
Thema: Geometricalset einfügen (.net) (1697 mal gelesen)
|
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 01. Aug. 2006 12:11 <-- editieren / zitieren --> Unities abgeben:
Hallo ich möchte in ein eingefügtes Part Geometrical Sets einfügen.Nur weiss ich nicht wie ich das oAdapterpart deklarieren muss damit ich mein Set einfügen kann.Kann mir da jemand weiterhelfen?? Dim oRoot As Products = CATIA.ActiveDocument.Product.Products Dim oDesign As Product = oRoot.Item(2) Dim oSpanngruppe As Product = oDesign.Products.AddNewComponent("Product", TextBox3.Text) Dim oAdapterpart As Product = oSpanngruppe.Products.AddNewComponent("Part","Adapterpart"&Mid(TextBox3.Text,12,3)) Gruß Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 01. Aug. 2006 13:38 <-- editieren / zitieren --> Unities abgeben:
Egal eas ich mache ich komm einfach nicht an das eingefügte Part. Bekomm meistens die Fehlermeldung Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "MECMOD.Part" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der II................... Ich möchte einfach in das eingefügte Part Geosets einfügen. Gruß Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dr Mitglied CAD-/PLM-Entwickler und -Berater
Beiträge: 87 Registriert: 30.10.2001
|
erstellt am: 01. Aug. 2006 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Dieser Code erzeugt ein neues Part, fügt es in die aktive Baugruppe ein und erzeugt ein GeometricalSet im Part. Suchst Du etwas in dieser Art? Code:
Sub CATMain()Dim productDocument1 As ProductDocument Set productDocument1 = CATIA.ActiveDocument Dim myPartDoc As PartDocument Set myPartDoc = CATIA.Documents.Add("Part") Dim product1 As Product Set product1 = productDocument1.Product
Dim products1 As Products Set products1 = product1.Products Dim myProd As Product Set myProd = myPartDoc.Product products1.AddComponent myProd.ReferenceProduct Dim myPart As Part Set myPart = myPartDoc.Part
Dim hybridBodies1 As HybridBodies Set hybridBodies1 = myPart.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Add() myPart.Update myPartDoc.Close End Sub
------------------ -- Danny Reinhold Reinhold Software Services Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 01. Aug. 2006 15:02 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habe bereits eine Vorhandene Struktur die so aussieht Product +Product +Product(oDesign) => hier soll ein ein neues Product eingefügt I+Product werden und darin dann ein neues Part mit Geosets. I+Product Das funktioniert mit meinem code einwandfrei.Nur weiss ich nicht wie ich das eingefügte Part deklarieren muss um meine Geosets einfügen zu können? Dim oRoot As Products = CATIA.ActiveDocument.Product.Products Dim oDesign As Product = oRoot.Item(2) Dim oSpanngruppe As Product = oDesign.Products.AddNewComponent("Product", TextBox3.Text) Dim oAdapterpart As Product = oSpanngruppe.Products.AddNewComponent("Part","Adapterpart"&Mid(TextBox3.Text,12,3)) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dr Mitglied CAD-/PLM-Entwickler und -Berater
Beiträge: 87 Registriert: 30.10.2001
|
erstellt am: 01. Aug. 2006 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Um ein GeometricalSet einzufügen brauchst Du ein Objekt vom Type "Part". Product.AddNewComponent(...) liefert ein "Product" Objekt (egal, ob Du ein Product oder ein Part erzeugst). Der einfachste Weg, den ich gefunden habe, war halt, das Part explizit zu erzeugen (dann bekomme ich über das PartDocument leicht das Part Objekt und kann darin ein GeometricalSet erzeugen) und dann in das Product einzufügen. Aber vermutlich gibt es einen einfacheren Weg, wenn man direkt vom "Product" zum "Part" kommt - habe allerdings keinen gefunden (abgesehen vom abklappern der CATIA.Documents List, was aber recht langsam sein kann)... Darum der etwas andere Weg in meinem Code... ------------------ -- Danny Reinhold Reinhold Software Services Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 01. Aug. 2006 21:21 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Hallo Augustiner, aus dem Stehgreif sage ich mal, es sollte so heißen: Code: Dim oAdapterProduct As Product = oSpanngruppe.Products.AddNewComponent("Part","Adapterpart"&Mid(TextBox3.Text,12,3)) Dim oAdapterPart As Part = oAdapterProduct.ReferenceProduct.Parent.Part
Kann es leider im Moment nicht prüfen, aber das ".ReferenceProduct.Parent" sollte das PartDocument sein und das enthält ja den Knoten Part. Eventuell kannst Du aber auch schon mit dem ".ReferenceProduct" weiterarbeiten, mußt es dann aber wahrscheinlich als "Product" deklarieren. mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 02. Aug. 2006 07:40 <-- editieren / zitieren --> Unities abgeben:
Guten morgen mit Dim oAdapterPart As Part = oAdapterProduct.ReferenceProduct.Parent.Part Dim oSet As HybridBody = oAdapterPart.HybridBodies.Add funktioniert es nicht,dann kommt folgende Meldung Die Methode oder der Vorgang sind nicht implementiert. ------------------------------------------------------------- Wenn ich es mit... Dim oAdapterPart As Product = oAdapterProduct.ReferenceProduct Dim oSet As HybridBody = oAdapterPart.HybridBodies.Add ..versuche kommt die Meldung: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "MECMOD.Part" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der II................... So langsam weiss ich nicht mehr weiter [Diese Nachricht wurde von Augustiner am 02. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 02. Aug. 2006 07:58 <-- editieren / zitieren --> Unities abgeben:
In Catscript funktionierts mit folgendem Code.Der ja in etwa dem .net Code entspricht Zitat: Sub CATMain()Dim Schrift as String Schrift = Inputbox("Test1","Test2","Spanngruppe 11_12") Dim oRoot As Products Set oRoot = CATIA.ActiveDocument.Product.Products Dim oDesign As Product Set oDesign = oRoot.Item(2) Dim oSpanngruppe As Product Set oSpanngruppe = oDesign.Products.AddNewComponent ("Product", Schrift) Dim oAdapterProduct as Product Set oAdapterProduct = oSpanngruppe.Products.AddNewComponent ("Part", "Adapterpart" & Mid(Schrift, 12, 3)) Dim oAdapterpart as Part Set oAdapterpart = oAdapterproduct.ReferenceProduct.Parent.Part Dim oSet as Hybridbody Set oSet = oAdapterpart.Hybridbodies.add End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 02. Aug. 2006 09:33 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Hallo Augustiner, mit VB2005 funktioniert das nicht auf "einen Streich". Du mußt die Zuweisung zum Part aufteilen: Dim oAdapterPartDoc As PartDocument = oAdapterProduct.ReferenceProduct.Parent Dim oAdapterPart As Part = oAdapterPartDoc.Part Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 02. Aug. 2006 10:09 <-- editieren / zitieren --> Unities abgeben:
Super jetzt hatts funktioniert, Vielen Dank CamiCadse!!!!! Kannst Du mir vielleicht noch erklären warum das so ist?? Gruß Andi [Diese Nachricht wurde von Augustiner am 02. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 02. Aug. 2006 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Nee, kann ich nicht Ich kann nur vermuten: Grundsätzlich läuft ohne richtig deklarierte Typen sowieso nichts. Da laufen teilweise die Sachen genau anders herum als in VBA. z.B. bei der Selection: In VBA darf sie nicht als Selection deklariert sein, in VB2005 muß sie als Selection deklariert sein. Nur dann erkennt VB auch die Methoden (sonst Error: "Die Methode oder der Vorgang sind nicht implementiert") Nach parent ist der Object-Typ nicht mehr eindeutig. Folgendes geht auch nicht:
Code: MsgBox (MyPart.Parent.Parent.Name)
Würde dass auch gerne anders haben Kleiner Trost: Intellisense scheint richtig zu funktionieren. Wenn nach einer Methode nichts mehr angezeigt wird, geht auch nichts Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dr Mitglied CAD-/PLM-Entwickler und -Berater
Beiträge: 87 Registriert: 30.10.2001
|
erstellt am: 02. Aug. 2006 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für Augustiner
Das liegt vermutlich daran, dass "Parent" ein "AnyObject" zurückliefert. Damit das System weiss, dass Du dieses Object als "PartDocument" behandeln möchtest, musst Du es ihm mitteilen. Und das macht man in VB.NET eben, indem man das Objekt einer Variable des entsprechenden Typs zuweist (entspricht grob einem Type-Cast in anderen Programmiersprachen). Aber gesehen habe ich den Weg auch nicht. Besten Dank für den Hinweis! ------------------ -- Danny Reinhold Reinhold Software Services Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |