Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Referenzen erstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Referenzen erstellen (1554 / mal gelesen)
nikita92
Mitglied
Student


Sehen Sie sich das Profil von nikita92 an!   Senden Sie eine Private Message an nikita92  Schreiben Sie einen Gästebucheintrag für nikita92

Beiträge: 20
Registriert: 17.11.2016

erstellt am: 18. Nov. 2016 07:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Neuer Tag neues Problem:

Ich habe eine Skizze (Skizze.2) erstellt en der sich ein Spline mit dem Namen "Spline" befindet.

jetzt möchte ich diesen markieren und mithilfe der "V-Richtung" in der Skizze eine Fläche um die Achse "V-Richtung" erstellen.

wie folgt sieht mein Ansatz aus:

Code:

        ref1 = MyPart.CreateReferenceFromObject(MyPart.OriginElements.PlaneZX) '#### Eine Referenz zur ZX-Grundebene erzeugen und ref1 zuweisen

        Sketch2 = Sketches1.Add(ref1) '#### eine neue Skizze auf ref1 erzeugen
        factory2d2 = Sketch2.OpenEdition '#### Die Skizze öffnen und die Fabrik für 2D-Elemente der Variablen factory2d1 zuweisen

        Dim mysel As Selection
        Dim spline As Spline2D
        Dim ref2() As Reference
        Dim Punkte(50) As Object
        Dim Shapefactory2 As ShapeFactory

        Dim hybrid As HybridShapeFactory

        Dim axis2d1
        Dim geometricElements1

        Punkte(0) = factory2d2.CreateControlPoint(r(1), b(3))
        Punkte(1) = factory2d2.CreateControlPoint(50.0, b(7))
        Punkte(2) = factory2d2.CreateControlPoint(0.0, b(3))

        spline = factory2d2.CreateSpline(Punkte)

        spline.Name = "Spline"

        Sketch2.CloseEdition() '#### Skizze schließen
        MyPart.Update() '### Aktualisieren
        'Sketch2.OpenEdition() '### Skizze öffnen, hier den Breakpoint setzen, um die Skizze im Catia anzuschauen/zu öffnen

'### Bis hierher funktioniert es einwandfrei, Spline mit dem Namen "Spline ist in Skizze.2 erstellt

        geometricElements1 = Sketch2.GeometricElements
        axis2d1 = geometricElements1.Item("Absolute Achse")

        mysel = CATIA.ActiveDocument.Selection
        mysel.Clear()
        mysel.Search("name=Spline,all")

        ref2(0) = mysel.Selection.Item(0).Value

        ref2(1) = axis2d1.GetItem("V-Richtung")

        Shapefactory2 = MyPart.ShapeFactory

        hybrid = Shapefactory2.AddNewRevol(ref2(0), 360.0, 0.0, ref2(1))


Bis mysel.Search("name=Spline,all") funktioniert es, setze ich hier den Haltepunkt ist der Spline angewählt.

bei ref2(0) = mysel.Selection.Item(0).Value kommt der fehler:
"Warnung - Die ref2-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten."

später im Code für Kantenverrundung verwende ich:

        mysel = CATIA.ActiveDocument.Selection
        mysel.Clear()
        mysel.Search("Topology.CGMEdge,all")
....
ref(i) = mysel.Selection.Item(i).Value
...
Da Funktioniert es, wo ist mein Fehler?

mfG

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Nov. 2016 08:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für nikita92 10 Unities + Antwort hilfreich

Servus
An der Stelle kommt ein Fehler da es sich bei der Selection um eine Collection handelt. Der Zähler fängt dort mit 1 an.
Du kannst auch (manchmal) direkt aus der Selection eine Reference bilden.
Code:
Set MyRefernce = mysel.Selection.Item(1).Reference 'vom ersten Element der Selection

Du kannst auch direkt aus der Skizze die Reference bilden und musst nicht extra über die Selection gehen. zB:
Code:
Set ref2(0) = mypart.CreateReferenceFromObject(Sketch2)
Set ref2(1) = mypart.CreateReferenceFromObject(axis2d1.GetItem("V-Richtung"))
So nimmt es auch der Makrorekorder auf.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

roccat
Mitglied
Konstrukteur


Sehen Sie sich das Profil von roccat an!   Senden Sie eine Private Message an roccat  Schreiben Sie einen Gästebucheintrag für roccat

Beiträge: 172
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 18. Nov. 2016 08:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für nikita92 10 Unities + Antwort hilfreich

Hallo nikita,

wenn sich´s vermeiden lässt würde ich nicht so viel mit Selection machen und lieber die zu den Objekten "durchhangeln".

mfG
Mario

Code:

Option Explicit

Sub CATMain()

Dim MyDocument          As PartDocument
Dim MyPart              As Part
Dim MyRef1              As Reference
Dim MyRef2              As Reference
Dim MyGeometricElements As GeometricElements
Dim MyAxis2D As Axis2D

Dim MySketches          As Sketches
Dim MySketch            As Sketch
Dim MyFactory2D        'As Factory2D

Dim MyShapeFactory      As HybridShapeFactory
Dim MyShapeRev          As HybridShapeRevol

Dim MyPoints(2)        'As ControlPoint2D
Dim MySpline            As Spline2D

Dim MyHybBodies        As HybridBodies
Dim MyHybBody          As HybridBody

'Allgemeines
Set MyDocument = CATIA.ActiveDocument
Set MyPart = MyDocument.Part

'HybridBody anlegen
Set MyHybBodies = MyPart.HybridBodies
Set MyHybBody = MyHybBodies.Add
MyHybBody.Name = "TESTPROGRAMM"
MyPart.InWorkObject = MyHybBody

'Sketch anlegen
Set MyRef1 = MyPart.CreateReferenceFromObject(MyPart.OriginElements.PlaneZX)
Set MySketches = MyHybBody.HybridSketches
Set MySketch = MySketches.Add(MyRef1)

'Sketch öffnen und Elemente anlegen
Set MyFactory2D = MySketch.OpenEdition

Set MyPoints(0) = MyFactory2D.CreateControlPoint(100, 20)
Set MyPoints(1) = MyFactory2D.CreateControlPoint(50, 25)
Set MyPoints(2) = MyFactory2D.CreateControlPoint(0, 20)

MyPoints(0).Construction = True
MyPoints(1).Construction = True
MyPoints(2).Construction = True

Set MySpline = MyFactory2D.CreateSpline(MyPoints)
MySpline.Name = "Spline"

MySketch.CloseEdition

'Revolution anlegen
Set MyRef1 = MyPart.CreateReferenceFromObject(MySketch)
Set MyRef2 = MyPart.CreateReferenceFromObject(MySketch.AbsoluteAxis.VerticalReference)

Set MyShapeFactory = MyPart.HybridShapeFactory
Set MyShapeRev = MyShapeFactory.AddNewRevol(MyRef1, 360#, 0#, MyRef2)
MyHybBody.AppendHybridShape MyShapeRev

MyPart.Update

End Sub


------------------
Wenn das die Lösung sein soll,
will ich mein Problem zurück !!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nikita92
Mitglied
Student


Sehen Sie sich das Profil von nikita92 an!   Senden Sie eine Private Message an nikita92  Schreiben Sie einen Gästebucheintrag für nikita92

Beiträge: 20
Registriert: 17.11.2016

erstellt am: 18. Nov. 2016 17:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank erstmal für eure Mühe!

sowohl bei der ersten als auch bei der 2. Variante kommt wenn ich nur die Zeile umschreibe:

Code:
ref2(0) = mysel.Selection.Item(1).Value

bzw.
Code:
ref2(0) = MyPart.CreateReferenceFromObject(Sketch2)

der Fehler:
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." für ref2(0)

Vielen Dank für den Tip mit dem selektieren. Ich werde das in Ruhe noch einmal umschreiben wie Ihr es mir empfohlen habt.
Es Wäre aber schön wenn ich den Fehler mit dem Objektverweis noch herausbekomme und verstehe!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Nov. 2016 17:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für nikita92 10 Unities + Antwort hilfreich

Servus
Hat der Array die richtige Größe? (Dim ref2() As Reference)
ggf kannst du deshalb nichts reinschieben.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nikita92
Mitglied
Student


Sehen Sie sich das Profil von nikita92 an!   Senden Sie eine Private Message an nikita92  Schreiben Sie einen Gästebucheintrag für nikita92

Beiträge: 20
Registriert: 17.11.2016

erstellt am: 20. Nov. 2016 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Bernd,
vielen dank, die Lösung war so einfach...
Wie du schon geschrieben hast war das ref2() richtig, es muss ref2(2) sein...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz