| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Problem objektverweis (1746 mal gelesen)
|
uwe.a Ehrenmitglied maschbau-ing.
Beiträge: 1939 Registriert: 20.12.2000 Windows7/64Pro Vmware7.1 UG11-Nx9
|
erstellt am: 02. Nov. 2010 10:26 <-- editieren / zitieren --> Unities abgeben:
Habe gerade ein hänger vielleich kann einer helfen ich bekomme immer wieder: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt in folgender Routine.: Sub ExportCGM(dwg as Drawings.DrawingSheet, outputFile as string, units as integer) Dim filenames1(0) As String Dim objCGM as CGMBuilder objCGM = workPart.PlotManager.CreateCgmBuilder() objCGM.OutputText = CGMBuilder.OutputTextOption.Polylines if units = 0 then objCGM.Units = CGMBuilder.UnitsOption.English else objCGM.Units = CGMBuilder.UnitsOption.Metric end if objCGM.XDimension = dwg.height objCGM.YDimension = dwg.length objCGM.VdcCoordinates = CGMBuilder.Vdc.Real objCGM.RasterImages = True Dim sheets1(0) As NXObject Dim drawingSheet1 As Drawings.DrawingSheet = CType(dwg, Drawings.DrawingSheet) sheets1(0) = drawingSheet1 objCGM.SourceBuilder.SetSheets(sheets1) filenames1(0) = outputFile objCGM.SetFilenames(filenames1) Dim nXObject1 As NXObject nXObject1 = objCGM.Commit() objCGM.Destroy() End Sub thx in ad ------------------ mfg uwe.a Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 02. Nov. 2010 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für uwe.a
hallo uwe, also ich kann auf anhieb jetzt keinen fehler entdecken. Welche Fehlermeldung bekommst du den? Eine kleine Anmerkung:
Code: Dim drawingSheet1 As Drawings.DrawingSheet = CType(dwg, Drawings.DrawingSheet)
ist die Zeile nicht überflüssig? Du übergibst doch eh schon den Typ DrawingSheet dwg Code: sheets1(0) = dwg objCGM.SourceBuilder.SetSheets(sheets1)
sollte doch auch gehn... ------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 02. Nov. 2010 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für uwe.a
Zitat: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Diese Meldung erscheint, wenn man eine ungültige Instanz eines Objektes verwendet. Die Fehlermeldung im Syslog sollte eigentlich auch die Zeilennummer ausgeben. Würde dann die Objekte in dieser Zeile mal mit "ToString" ins Listing-Fenster schreiben. Beispiel: Code:
Option Strict Off Imports System Imports NXOpenModule NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim theUI As UI = UI.GetUI() Dim lw As ListingWindow lw.Open() End Sub End Module
Da lw nur deklariert, aber nicht instanziiert wurde, kommt völlig zu Recht folgender Fehler: Code:
System.NullReferenceException: Object reference not set to an instance of an object. at NXJournal.Main() in c:\temp\NXJournals5956\journal.vb:line 11
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uwe.a Ehrenmitglied maschbau-ing.
Beiträge: 1939 Registriert: 20.12.2000 Windows7/64Pro Vmware7.1 UG11-Nx9
|
erstellt am: 02. Nov. 2010 22:00 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antworten, komme aber nicht weiter, gibts noch irgendwelche Tipps zu eingrenzen des Problems. tostring habe ich mit den Übergabeparametern hinter mir, aber bringt mich auch nicht weiter ???? ------------------ mfg uwe.a Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 03. Nov. 2010 10:36 <-- editieren / zitieren --> Unities abgeben: Nur für uwe.a
Hallo Uwe, an der Sub ist, wie Matthias schon gesagt hat, auf den ersten Blick kein Fehler zu erkennen. Lediglich die Deklaration Code: Dim filenames1(0) As String
erscheint mir rätselhaft, da ein String mit nur einem Element ja ein einzelner Character ist. Das hat allerdings mit der Exception eher nichts zu tun. Zum Eingrenzen des Fehlers kannst Du gleich am Anfang der Sub ff. machen:Code: dim lw as ListingWindow = Session.GetSession.ListingWindow lw.open() lw.writeline(dwg.Tostring) lw.writeline(outputFile) lw.writeline(CSTR(units))
Damit wären die Parameter geprüft. Analog dazu kannst Du jede Variable in der Sub prüfen. Irgendwo wird's dann schon krachen. Alternative zum ListingWindow ist eine Messagebox zur Ausgabe des Variableninhalts oder das Schreiben ins NX- Logfile. Am Prinzip der Fehlersuche ändert das nichts: Jede Variable auf deren Inhalt prüfen. Anderer Ansatz: Mit Try/Catch die verdächtigen Zeilen überwachen und die Exception auswerten. z.B.: Code: Try ... ... ... Catch ex as Exception MessageBox.Show(ex.Message) End Try
Wenn das nicht hilft, kann ich Dir anbieten, das Journal mal im Debugger anzuschauen. Dazu bitte vollständig, am besten gleich als VS- Projekt bereitstellen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uwe.a Ehrenmitglied maschbau-ing.
Beiträge: 1939 Registriert: 20.12.2000 Windows7/64Pro Vmware7.1 UG11-Nx9
|
erstellt am: 04. Nov. 2010 16:17 <-- editieren / zitieren --> Unities abgeben:
habs gefunden, falscher typ bei der Übergabe aus dem Hauptprogramm. Danke noch mal an alle. Zuastzfrage, kann ich ( für einen langen Batchprocess) einen generellen Abbruch definieren mit Abbruchknopf? ------------------ mfg uwe.a Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ingenieur Maschinenbau / Konstruktion und Entwicklung (m/w/d) | Ingenieur Maschinenbau / Konstruktion und Entwicklung (m/w/d) Einstieg als: Festanstellung | Art: Vollzeit | Befristung: Unbefristet | Unternehmensbereich: GTC | Arbeitsort: Egelsbach Automation ist unsere Leidenschaft ? Ihre auch? Begeistern Sie sich für neue Technologien, ergreifen die Initiative und arbeiten selbstständig? Dann sind Sie bei uns genau richtig.... | Anzeige ansehen | Maschinenbau |
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 05. Nov. 2010 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für uwe.a
Hallo Uwe, mit Application.Doevents() innerhalb der vermuteten Schleife reagiert eine WinForm auf Events - also auch auf einen Button-Klick. Über den Button kanst Du z.B. eine globale Variable setzen und diese in der Schleife als Abbruchkriterium nutzen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |