| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
| KISTERS 3DViewStation: Unterstützung für 3D CAD Kollaboration mit Lieferanten, eine Pressemitteilung
|
Autor
|
Thema: VBA: Multisection (2039 mal gelesen)
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 04. Jul. 2008 15:31 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich möchte eine Multisection erzeugen. Überlicherweise muss man bei geschlossenen Profilen(Sketch) einen Closing Point definieren. Ich habe bereits mehrere Varianten ausprobiert aber bisher ohne Erfolg. Folgender Code-Schnipsel funktioniert fast: Dim ref_sketch0, ref_sketch1, ref_sketch2 As Object Dim hsfLoft As MECMOD.HybridShape Dim ref_spine As Object ref_spine = Intf.GetPart().CreateReferenceFromObject(spine) ref_sketch0 = Intf.GetPart().CreateReferenceFromObject(sketch0) ref_sketch1 = Intf.GetPart().CreateReferenceFromObject(sketch1) ref_sketch2 = Intf.GetPart().CreateReferenceFromObject(sketch2) hsfLoft = Intf.GetHSFactory().AddNewLoft() hsfLoft.SectionCoupling = 1 hsfLoft.Relimitation = 1 hsfLoft.CanonicalDetection = 2 Dim ref_pt0, ref_pt1, ref_pt2 As Object ref_pt0 = Intf.GetPart().CreateReferenceFromObject(ref_sketch0.GeometricElements.GetItem("Point.5")) ref_pt1 = Intf.GetPart().CreateReferenceFromObject(ref_sketch1.GeometricElements.GetItem("Point.5")) ref_pt2 = Intf.GetPart().CreateReferenceFromObject(ref_sketch2.GeometricElements.GetItem("Point.5")) hsfLoft.SetSpine(ref_spine) hsfLoft.AddSectionToLoft(ref_sketch0, 1, ref_pt0) hsfLoft.AddSectionToLoft(ref_sketch1, 1, ref_pt1) hsfLoft.AddSectionToLoft(ref_sketch2, 1, ref_pt2)
Intf.GetHybridBody().AppendHybridShape(hsfLoft) Das Loft-Feature (Multisection) wird angelegt. Die Geometrie wird aber nicht erzeugt. Die Fehlermeldung besagt, dass der Punkt.5 nicht mit der Skizze assoziiert ist. Was mache ich hier falsch?
Gruß, Martin [Diese Nachricht wurde von martinINPRO am 04. Jul. 2008 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 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 04. Jul. 2008 18:00 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 07. Jul. 2008 08:32 <-- editieren / zitieren --> Unities abgeben:
Hallo, dadurch, dass ich die GetItem()-Funktion auf jeweils unterschiedlichen Skizzen anwende, wird meines erachtens der jeweilige Punkt der Skizze referenziert. @Jens: Hast Du einen funktionsfähigen Code-Schnipsel? Gruß, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 07. Jul. 2008 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 07. Jul. 2008 13:05 <-- editieren / zitieren --> Unities abgeben:
Ich habe drei Skizzen mit einem Skript erzeugt. Alle drei Skizzen sind somit gleichartig aufgebaut. In jeder Skizze ist somit ein "Punkt.5" vorhanden. Wie bereits am Anfang erwähnt, wird das Feature in CATIA angelegt. Die Fläche wird allerdings nicht erzeugt. Man kann das Feature mit Doppelklick öffnen und sich auch die Definition ansehen. Diese ist quasi in Ordnung. CATIA merkt aber folgendes an: "Part1: Element Point.5 has no associated geometry. Recreate the geometry." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 07. Jul. 2008 14:33 <-- editieren / zitieren --> Unities abgeben:
Ich glaube ich habe erstmal eine Hilfslösung gefunden. Mit der ich vielleicht weiterkomme, aber die noch nicht richtig tut! Im CATScribt kann man beipielsweise in der Funktion .AddSectionToLoft(skizze,1,nothing) das Wort "nothing" übergeben. In VBA bekommt man hier einen Typ-Konflikt. Wie kann ich nun in VBA hier ein "nichts" übergeben!? Danke und Gruß, Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 07. Jul. 2008 17:32 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 08. Jul. 2008 08:12 <-- editieren / zitieren --> Unities abgeben:
@Jens: Das hatte ich bereits schon mal ausprobiert. Zur Sicherheit jetzt ein weiteres Mal. Es geht leider nicht! hsfLoft.AddSectionToLoft(ref_sketch0, 1, "nothing") Fehlermeldung: Typkonflikt. (Ausnahme von HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
Ich behaupte, das "nothing" ein bestimmter Typ sein muss. Ein String tut nicht! Gruß, Martin
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: 08. Jul. 2008 08:45 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 08. Jul. 2008 08:53 <-- editieren / zitieren --> Unities abgeben:
Nach einem Testlauf mit folgenden Versuchen: hsfLoft.AddSectionToLoft(ref_sketch0, 1, "") : Typkonflikt hsfLoft.AddSectionToLoft(ref_sketch0, 1, 0) : Typkonflikt hsfLoft.AddSectionToLoft(ref_sketch0, 1, nothing) : Typkonflikt hsfLoft.AddSectionToLoft(ref_sketch0, 1, "nothing") : Typkonflikt hsfLoft.AddSectionToLoft(ref_sketch0, 1, ) : Parameter nicht optional Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 12. Jul. 2011 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
therp Mitglied
Beiträge: 23 Registriert: 31.08.2010 Precision M4600 Intel(R) Core™ i5-2520M CPU @ 2.50GHz 8145 MB NVIDIA Quadro 2000M Microsoft Windows 7 Enterprise Service Pack 1 Catia V5 R19 SP09 HF069
|
erstellt am: 18. Jul. 2011 12:14 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Guten Tag, die Sache mit den Klammern weglassen funktioniert bei mir auch... ich habe allerdings ein anderes Problem und dachte, ich füge es mal hier ein. Habe diesbzgl. leider nichts im Forum gefunden. Ich habe ein Multisectionsurface über hybridshapeloft erstellt. Es basiert auf zwei (toten) Splines. Jetzt möchte ich das MSS kopieren, wieder tot einfügen und danach das MSS editieren. Im MSS soll eine weitere Spline eingefügt werden und die erste soll gelöscht werden. Eigentlich funktioniert alles, ich bekomme die erste Spline allerdings nicht zu packen um sie zu löschen. Ich hoffe ihr wisst was ich meine und könnt mir helfen. MfG therp
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |