Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Problem mit AddNew3DCurveOffset

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:  Problem mit AddNew3DCurveOffset (981 mal gelesen)
Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

erstellt am: 08. Jan. 2010 15:49    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 Community,
ein frohes neues wünsche ich.
Wie oben schon angekündigt habe ich ein Problem mit AddNew3DCurveOffset.
Programmierumgebung ist C#.
Code:

Spline1.Compute();
hybridBody1.AppendHybridShape(Spline1);
reference[0] = Spline1 as INFITF.Reference;
//Ende

hybridShapeDirection0 = HybridShapeFactory1.AddNewDirection(reference[18]);
hybridShapeDirection0.Compute();
this.hybridBody1.AppendHybridShape(hybridShapeDirection0);

HybridShape3DCurveOffset Offset1;
Offset1=HybridShapeFactory1.AddNew3DCurveOffset(reference[0],hybridShapeDirection0, 0.8, 1, 1);
Offset1.InvertDirection = true;
Offset1.Compute();
this.hybridBody1.AppendHybridShape(Offset1);


Es erscheint folgender Fehler:

NullReferenzException wurde nicht behandelt.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Erstellen Sie eine Objektinstanz mit dem Schlüsselwort "new".

Der Fehler tritt auf in der Zeile
Offset1.InvertDirection = true;

Merkwürdig hier ist, dass Linien und Splines erstellen ohne Probleme funktioniert.

Wenn ich "new" verwende dann nur bei Deklarierung von Arrays.
Hier jedoch verwende ich keinen.

Ich freue mich auf Antworten.

Beste Grüße
Don Arnestro

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 14. Jan. 2010 18:03    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 Don Arnestro 10 Unities + Antwort hilfreich

Hallo,

ich spreche zwar kein C#, aber für mich sieht das so aus, als hättest du kein Objekt zurück bekommen und möchtest nun mit dem leeren Objekt weiter arbeiten. NULL-Pointer-Exception

Ich behaupte also weiterhin: Offset1 ist leer, da AddNew nicht geklappt hat.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

erstellt am: 14. Jan. 2010 18:16    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

Danke für deine Antwort,
dass das Objekt leer ist ist ok.

Aber warum ist es leer?
Wenn ich im 3D den Befehl ausführe klappt es auch.
Und mit dem Makroeditor kommt in etwa die gleiche Befehlsreferenz heraus.
Unterschied ist halt VBA.

Beste Grüße
Don

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 15. Jan. 2010 17:40    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 Don Arnestro 10 Unities + Antwort hilfreich

Ich vermute deine Reference ist nicht gut. 

Ich würde das Part mal fragen, ob es mir die Reference gibt.
Part.GetReferenceFromObject() oder so.
Oder FindObject, irgendwas in der Richtung.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

erstellt am: 15. Jan. 2010 19:55    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


Bild1.JPG


Bild2.JPG

 
Moin,
der Tipp mit der schlechten Referenz ist schon mal gut.
Im Anhang zwei Screenshots.
Mir wird die Referenz zerschossen. Aus welchem Grund auch immer.
Zuerst gibt er keinen Fehler aus wie in Bild 1 zu sehen.
Sobald der Befehl Offset1.InvertDirection aufgerufen wird erscheint der Fehler.
Dadurch ist der Container Offset1 leer -> die Nullreferenz.

Beste Grüße
Don

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 16. Jan. 2010 18:38    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 Don Arnestro 10 Unities + Antwort hilfreich

Lass Dir die Referenz vom Part geben, ich glaube so wie das da steht funktioniert das nicht, da Referenz immer einen Bezug von einer Quelle aus braucht. Es ist eine Art Pfandangabe.

Also reference[0] = Part.CreateReferenceFromObject(Spline1);

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

[Diese Nachricht wurde von HoBLila am 16. Jan. 2010 editiert.]

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

Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

erstellt am: 17. Jan. 2010 13:11    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

Danke für den Tipp.
Hat aber leider nicht das gewünschte Ergbnis gebracht.
Mit CreateReferenceFromGeometry habe ich es auch versucht.

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

Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

NX 7.5

erstellt am: 17. Jan. 2010 15:38    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

Habe nun mal versucht den Code aus dem Macro umzuschreiben.
Fehler bleibt. Immer wird die Referenz auf den Spline zerschossen.
Macro ausführen funktioniert.

Hier der umgeschriebene Code:

Code:

object CATIA=Marshal.GetActiveObject("Catia. Application");
INFITF.Application catiaapp = (INFITF.Application)CATIA;
this.PartDocument1 = catiaapp.ActiveDocument as PartDocument;
this.Part1 = this.PartDocument1.Part;         
object Index1="Geometrical Set.1";
hybridBody1 = hybridBodies1.Item(ref Index1);
hybridShapes1 = hybridBody1.HybridShapes;
object Index2="Spline.2";
hybridShapeSpline1 = hybridShapes1.Item(ref Index2) as HybridShapeTypeLib.HybridShapeSpline;
reference1 = Part1.CreateReferenceFromObject(hybridShapeSpline1);
object Index3="Plane.1";
hybridShapePlaneAngle1 = hybridShapes1.Item(ref Index3) as HybridShapeTypeLib.HybridShapePlaneAngle;
reference2 = Part1.CreateReferenceFromObject(hybridShapePlaneAngle1);
hybridShapeDirection1 = HybridShapeFactory1.AddNewDirection(reference2);
hybridShape3DCurveOffset1 = HybridShapeFactory1.AddNew3DCurveOffset(reference1, hybridShapeDirection1, 0.8, 1.0, 0.5);
hybridShape3DCurveOffset1.InvertDirection = true;
hybridBody1.AppendHybridShape(hybridShape3DCurveOffset1);
Part1.InWorkObject = hybridShape3DCurveOffset1;

Anbei der generierte Code VBA:

Code:

Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1")
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapeSpline1 = hybridShapes1.Item("Spline.2")
Set reference1 = part1.CreateReferenceFromObject(hybridShapeSpline1)
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePlaneAngle1 = hybridShapes1.Item("Plane.1")
Set reference2 = part1.CreateReferenceFromObject(hybridShapePlaneAngle1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference2)
Set hybridShape3DCurveOffset1 = hybridShapeFactory1.AddNew3DCurveOffset(reference1, hybridShapeDirection1, 0.800000, 1.000000, 0.500000)
hybridShape3DCurveOffset1.InvertDirection = False
hybridBody1.AppendHybridShape hybridShape3DCurveOffset1
part1.InWorkObject = hybridShape3DCurveOffset1
part1.Update
End Sub

Gibt es eine Möglichkeit die größe der Referenz zu definieren? Wie z.B. long und double.
Vermutlich läuft die Referenz über oder so ähnlich.

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

Don Arnestro
Mitglied
Konstrukteur Entwicklung


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

Beiträge: 19
Registriert: 29.11.2009

erstellt am: 17. Jan. 2010 18:05    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

Moin zusammen.
Habe jetzt eine Lösung gefunden (wenn auch nicht direkt für das Problem).
Der Befehl CurvePar erzeugt das gleiche Ergebnis.
Hier der Code:
Code:

reference0 = Part1.CreateReferenceFromObject(Spline1);
Referenz1 = Ebene1 as INFITF.Reference;
HybridShapeCurvePar Parallele10;
Parallele10 = HybridShapeFactory1.AddNewCurvePar(reference0, Referenz1, 0.8, false, true);
Parallele10.Compute();
this.hybridBody1.AppendHybridShape(Parallele10);


Schönen Abend noch.

Gruß Don

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