Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Skizzengeometrien auslesen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Skizzengeometrien auslesen (1087 mal gelesen)
matseATwzl
Mitglied


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

Beiträge: 8
Registriert: 05.06.2008

erstellt am: 11. Jun. 2008 13: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

Hallo Leute,

ich bins wieder mit einen kleinen Problem...
Ich versuche die Linien bzw. deren X-Y-Z-Koordinaten, die ich in einer Skizze gesetzt habe, auszulesen. Das klappt aber leider nicht... Ich fange grade erst mit NX Programmierung an und einfach nicht den Bogen raus, wie das unter .Net aufgebaut ist...

Erstmal mein Code:

--------------------------
Public Sub fkt()
...

nxSession = NXOpen.Session.GetSession()
nxPart = nxSession.Parts.Work
nxSketches = nxPart.Sketches.ToArray

For j = 0 To nxSketches.Length - 1
  nxGeometries = nxSketches(j).GetAllGeometry

  for i = 0 to nxGeometries.length - 1
    MsgBox(nxGeometries(i).ToString())
  next i
next j

--------------------------

bis zu den Linien bin ich nur halbwegs gekommen, da mir diese Funktion (nxGeometries(i).ToString()) "Line [eine Zahl (5-stellig)]" zurückgibt...

Doch wie komme ich von hier aus weiter?
Irgendwie müsste ich doch ein Point3d-Object für den Start- und Endpunkt der Linie bekommen...

Würde mich über baldige Hilfe freuen.

Mit freundlichen Grüßen
Michael

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 11. Jun. 2008 14: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 Nur für matseATwzl 10 Unities + Antwort hilfreich

Hallo Michael,

ohne das nun ausprobiert zu haben, gehe ich davon aus, daß die fünfstellige Zahl der sog. TAG ist. Mit diesem Tag kann über ask_type_and_subtype (vermutlich in NXOpen.Object) der Objekttyp festgestellt werden. Handelt es sich jetzt um eine Linie, geht der Zugriff aus deren Daten wie folgt: Objekt anlegen mit Dim my_line as NXOpen.line (Kann auch ... as New ... lauten). Über NXObjectManager.Get()  kriegt man das Objekt zum Tag. Mit my_line.[Startpoint|Endpoint] können dann die Punkte gelesen werden, für die man zuvor das entsprechende Objekt (Point3D)  anlegt. Aus dem Punkt sind dann die Koordinaten in der selben Weise abzufragen.

So oder so ähnlich könnte das funktionieren, siehe oben.

Gruß, Michael

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

matseATwzl
Mitglied


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

Beiträge: 8
Registriert: 05.06.2008

erstellt am: 11. Jun. 2008 14: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

Hallo Michael

Hab deinen Ansatz nicht ausprobiert, weil ich in der Zwischenzeit schon eine Lösung gefunden habe:

------------------------
Public Sub fkt()
...

nxSession = NXOpen.Session.GetSession()
nxPart = nxSession.Parts.Work
nxSketches = nxPart.Sketches.ToArray

For j = 0 To nxSketches.Length - 1
  nxGeometries = nxSketches(j).GetAllGeometry

  for i = 0 to nxGeometries.length - 1


    Dim l As NXOpen.Line = CType(nxGeometries(i), NXOpen.Line)
    MsgBox(l.EndPoint.X)


  next i
next j

-------------------------------

Aber bis ich darauf gekommen bin, das Line eine abgeleitete Klasse von NXObject ist, hats lange gedauert.

Aber vielen Dank für deine Hilfe
Michael

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 12. Jun. 2008 11:13    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 matseATwzl 10 Unities + Antwort hilfreich

Hallo Michael,

bis auf die Abfrage des Objekttyps und der Typumwandlung mit Ctype ist es der selbe Weg wie oben beschrieben. Und solange Du nur Linien im Sketch hast, wird's auch klappen. Sollten aber im Sketch neben Lines auch andere Objekte drin sein, wirst Du vermutlich in eine Exception laufen. Ctype kann halt aus einem Kreis keine Linie zaubern, das kann der NXObjectmanager genauso wenig.

Um sicher zu gehen, daß Dein Program stabil läuft, sollte also vor einer Typwandlung die Typabfrage gemacht werden. 

Gruß, Michael

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



CE-Koordinator (m/w/d) für den Bereich Maschinensicherheit / CE

Harro Höfliger entwickelt und fertigt Produktions- und Verpackungsanlagen für Kunden auf der ganzen Welt. Eine wesentliche Rolle dabei spielen die Maschinensicherheit für Bedienende und die Konformität zu geltenden Sicherheitsvorschriften.
Die Erstellung sicherheitstechnischer Standard- und Sonderlösungen sowie die Beratung der unterschiedlichen Bereiche innerhalb unseres Unternehmens stellen eine sehr interessante, innovative und abwechslungsreiche Tätigkeit dar....

Anzeige ansehenProzessmanagement
matseATwzl
Mitglied


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

Beiträge: 8
Registriert: 05.06.2008

erstellt am: 12. Jun. 2008 11:29    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

Gut das du mich dran erinnerst, hatte ich auch noch vor!
Danke.

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