| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
|
Autor
|
Thema: CloseSurface über C# erstellen (2160 mal gelesen)
|
CatiaDevTeam Mitglied Fachinformatikerin Anwendungsentwicklung
 Beiträge: 4 Registriert: 13.05.2012 W7 Ultimate 64Bit Catia V5 R19 Visual Studio 2010
|
erstellt am: 13. Mai. 2012 10:01 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen zusammen, ich sitze schon seit einiger Zeit an der Aufgabe, ein CloseSurface über C# zu erstellen. Codezeile: CloseSurface csFromName = sfFormName.AddNewCloseSurface(refFormName); Allerdings bekomme ich hier vom Programm folgenden Fehler: "Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben." Im Anhang mal der komplette Quellcode. Falls einer von euch eine Idee hat oder noch weiter Infos braucht, freue ich mich über jeder Rückmeldung. Gruß Sandra 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: 13. Mai. 2012 12:20 <-- editieren / zitieren --> Unities abgeben:          Nur für CatiaDevTeam
Servus Willkommen im Forum. Bitte Systeeminfo ausfüllen. Ich kenne mich zwar noch in C# aus, aber folgende Zeile macht wahrscheinlich Probleme: Code: Reference refFormName = this.catBargraphenPart.CreateReferenceFromName("")
Du willst hier eine Referenz erzeugen, giltst aber nicht den Namen des Elementes an, aus dem die Referenz erzeugen willst (vergleiche auch CreateReferenceFormObject in einem Code)Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht.
[Diese Nachricht wurde von bgrittmann am 13. Mai. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CatiaDevTeam Mitglied Fachinformatikerin Anwendungsentwicklung
 Beiträge: 4 Registriert: 13.05.2012 W7 Ultimate 64Bit Catia V5 R19 Visual Studio 2010
|
erstellt am: 13. Mai. 2012 14:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, danke für deine Antwort. Nach ein paar erfolglosen Versuchen die Referenz auf ein Element zu setzen, habe mir das ganze nochmal als Makro in Catia aufgezeichnet, auch hier wird bei der Referenz keine Angabe gemacht: Sub CATMain() Set documents1 = CATIA.Documents Set partDocument1 = documents1.Item("HAUPTSKELET_V4.4.CATPart") Set part1 = partDocument1.Part ---------------------------------------------------------------- Set shapeFactory1 = part1.ShapeFactory Set reference1 = part1.CreateReferenceFromName("") Set closeSurface1 = shapeFactory1.AddNewCloseSurface(reference1) ---------------------------------------------------------------- Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Komponenten") Set hybridBodies2 = hybridBody1.HybridBodies Set hybridBody2 = hybridBodies2.Item("Bargraph_1-Tank") Set hybridBodies3 = hybridBody2.HybridBodies Set hybridBody3 = hybridBodies3.Item("Tacho_Dummy") Set hybridShapes1 = hybridBody3.HybridShapes Set hybridShapeSweepLine1 = hybridShapes1.Item("Sweep.10") Set reference2 = part1.CreateReferenceFromObject(hybridShapeSweepLine1) closeSurface1.Surface = reference2 part1.UpdateObject closeSurface1 End Sub Evtl. noch andere Ideen? Gibt es andere Möglichkeiten eine CloseSurface per Code zu erstellen?
Gruß Sandra
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: 13. Mai. 2012 14:47 <-- editieren / zitieren --> Unities abgeben:          Nur für CatiaDevTeam
Servus Mit welcher Kurve/Fläche willst du die CloseSurface erstellen? Bilde dann von dieser Fläche/Objekt die Reference über CreateReferenceFromObject. Oder eben über den Namen der Fläche. (diesen bei CreatReferenceFromName angeben) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 13. Mai. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
   
 Beiträge: 1056 Registriert: 05.08.2000
|
erstellt am: 14. Mai. 2012 11:00 <-- editieren / zitieren --> Unities abgeben:          Nur für CatiaDevTeam
|
CatiaDevTeam Mitglied Fachinformatikerin Anwendungsentwicklung
 Beiträge: 4 Registriert: 13.05.2012 W7 Ultimate 64Bit Catia V5 R19 Visual Studio 2010
|
erstellt am: 14. Mai. 2012 12:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jens, ja das CloseSurface läßt sich von Hand erstellen, es funktionionier auch mit VBA aus Excel heraus. Eben diesen Code habe ich versucht in C# zu übersetzen. VBA Code siehe Anhang Zeile 48. Gruß Sandra 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: 14. Mai. 2012 12:38 <-- editieren / zitieren --> Unities abgeben:          Nur für CatiaDevTeam
Servus Du hast doch schon die Referenz von "aktHybridShapeAssemble" (also deinem erstellten Assemble) gebildet. IMHO  sollt es dann so funktionieren: Code: CloseSurface csFromName = sfFormName.AddNewCloseSurface(refShapeAssemble);
Die Zeile mit "Reference refFormName ... " brauchst du dann nicht mehr. (wird eh in der übernächsten Zeile wieder überschrieben)Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CatiaDevTeam Mitglied Fachinformatikerin Anwendungsentwicklung
 Beiträge: 4 Registriert: 13.05.2012 W7 Ultimate 64Bit Catia V5 R19 Visual Studio 2010
|
erstellt am: 18. Mai. 2012 17:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich konnte das Problem lösen. Der Ursprüngliche Quellcode aus C# funktioniert mit einer kleinen Änderung ohne Probleme. Habe versicht die CloseSurface in einem GeometricSet zu erstellen & das geht natürlich nicht! Nachdem ich bei this.catBargraphenPart.InWorkObject = (Body)bargaphBody; auf den richtigen Body verwiesen haben, hat alles funktioniert. Danke für eure Hilfe. Gruß Sandra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |