Autor
|
Thema: Spline aus Unterfunktion übergeben (1384 mal gelesen)
|
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 08. Dez. 2011 10:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Funktion geschrieben, welche den Benutzer auffordert, eine Linie auszuwählen. Dann wird aus der Linie ein Extract gebidlet und auf diesem werden dann Punkte gelegt. Im Anschluss wird durch die Punkte ein Spline gelegt. Das Ergebnis ist Quasi ein Spline der auf der Ursprungskontur liegt. Mein Problem ist, das ich die Funktion in meinem Main Programm aufrufen will und dann den Spline weiter verwenden will. D.H ich will den Spline als Rückgabewert der Funktion. Hab schon alles Mögliche probiert...die Funktion als HybridShapeSpline deklariert, als Refernce den Splien zu übergeben...aber ich schaff es nicht, Die Funktion aufzurufen und dann mit dem Erzeugen Spline weiterzuarbeiten. (Ich wollte nicht im Baum dann nach dem Namen vom spline suchen, sondern direkt mti dem Objekt arbeiten) Mein Code Code: Function SplineAusAuswahl() As Variant Dim Spline As HybridShapeSpline Dim MeinPart As Part Dim Wzk3D As HybridShapeFactory Set MeinPart = CATIA.ActiveDocument.Part Set Wzk3D = MeinPart.HybridShapeFactory Dim Was(0) Dim UserSel As Object Dim Kante As HybridShapeExtract Dim Punkt(100) Set GeoSet = MeinPart.HybridBodies.Item(1) Was(0) = "AnyObject" Set UserSel = CATIA.ActiveDocument.Selection UserSel.Clear E = UserSel.SelectElement2(Was, "Bitte erste Kante auswählen!", False) If E = "Normal" Then Set Kante = Wzk3D.AddNewExtract(UserSel.Item(1).Value) GeoSet.AppendHybridShape Kante MeinPart.Update For i = 1 To 50 Prozent = i / 50 Set Punkt(i) = Wzk3D.AddNewPointOnCurveFromPercent(Kante, Prozent, False) Punkt(i).Name = "Punkt_" & i GeoSet.AppendHybridShape Punkt(i) Next MeinPart.Update Set Spline = Wzk3D.AddNewSpline GeoSet.AppendHybridShape Spline For i = 1 To 50 Spline.AddPoint Punkt(i) Next MeinPart.Update Else Dim Box Box = MsgBox("Abbruch", 16) End If SplineAusAuswahl = Spline End Function
der Aufruf Code: Private Sub CommandButton2_Click() Dim Spline As Variant Spline = SplineAusAuswahl() End Sub
Kann mir ejmand helfen, wie ich den Spline danach verwenden kann?
Gruß Sepp
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied
Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 08. Dez. 2011 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für pfannensepp
Guten Tag, ich vermute ein Problem, bin aber nicht sicher, das es nur das ist... Also: Objekte müssen immer mit "set" einer Variable zugeornet werden. Auch die Catia-Objekte sind Objekte im Sinne von VBA. Änderungen an folgenden Stellen:
Code:
Function SplineAusAuswahl() as Object 'As Variant ... set SplineAusAuswahl = Spline End Function
Code:
Dim Spline as Object 'Oder as Hybridshapespline damit man codevervollständigung hat 'As Variant set Spline = SplineAusAuswahl()
mich wundert nur, das keine fehlermeldung bei der ausführung kommt. Eigentlich müsste eine meldeung von wegen with block blabla kommen. mfg
gladly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 08. Dez. 2011 13:39 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank! Es geht:-) Ich habe es auch schon mit einem Object probiert, allerdings bei Funktionsaufruf nicht set Spline = SplineAusAuswahl() geschrieben. Schönen Tag noch [Diese Nachricht wurde von pfannensepp am 08. Dez. 2011 editiert.]
[Diese Nachricht wurde von pfannensepp am 08. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|