| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Auslesen der Geometriedaten (2246 mal gelesen)
|
Trudel Mitglied
Beiträge: 24 Registriert: 03.02.2009
|
erstellt am: 16. Feb. 2009 08:55 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, bin noch Anfänger in der NX-Programmierung, aber endlich klappen die ersten Programme.Arbeite mit NX5 und Visual Studio 2008/Programmiersprache C#. Nun hab neues Problem. Möchte von einer bereits erstellten prt-Datei(z.b. einem Block oder Rechteck) die Eckpunkte und Linien wissen. Also Informationen über die Geometrie. Weiß nicht so recht, welche Methode das macht. Hab ein wenig im Objektbrowser geschaut und einige interessante Methoden gefunden. Ist es die hier??? NXOpen.Sketch.GetAllGeometry(); Zusammenfassung: Returns all the curves and points in the sketch Rückgabewerte: All the curves and points in the sketch Wenn ja wäre hilfreich, wie man die genau anwendet. Hat bei mir nicht funktioniert. Um dann an die Länge der Linie zu kommen, schaff ich dann auch noch allein über double laenge = line1.GetLength(); MessageBox.Show("Die Länge der linie 1 beträgt "+laenge+" LE"); Danke [Diese Nachricht wurde von Trudel am 16. Feb. 2009 editiert.] 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: 16. Feb. 2009 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
Zitat: Original erstellt von Trudel: Hab ein wenig im Objektbrowser geschaut ...
Hallo Trudel, auswendig wird Dir das wohl niemand sagen können, und daß "ein wenig" Nachlesen ausreicht, glaub' ich eher nicht. Aber ein paar Tipps für die weitere Suche kannst Du gerne haben: Sieh' mal in der dotnet-ref nach, die Datei (Name: netref.chm o.ä.)findest Du im NX- Installationsverzeichnis. Als Suchbegriff kommt alles in Frage, was mit der Topologie von Solids zu tun hat, also Body, Face, Edge etc. Es müsste meiner Meinung nach irgendwas geben, mit dem sich die, zu einem Body gehörenden Objekte ermitteln lassen. Wie man Informationen zu Edges bekommt, wurde erst kürzlich hier http://ww3.cad.de/foren/ubb/Forum442/HTML/000412.shtml diskutiert. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Siassei Mitglied MB - Student
Beiträge: 490 Registriert: 08.07.2007 SWX NX 3 und höher ;) Windows and UNIX<P>C, C++, Java, Phyton,...</P>
|
erstellt am: 16. Feb. 2009 19:32 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
Servus, generell zu NXOpen: NXOpen ist nichts anderes als wie eine (schlecht) überarbeitet C-API. Da ist nix, aber wirklich gar nix, was mit OOP zu tun hat. Mhhh .... leider Zu deinem Problem: Am leichtesten tust du dir, wenn du erstmal ein wenig von Hand modellierst und dich in NX rein denkst. Leider muss man das fast tun. Grund, siehe weiter oben Ich habe es noch nicht getestet, aber du musst höchst wahrscheinlich über den Selectionsmanager gehen. Sprich, Part XYZ -> Workpart -> Displayed Part schalten. Danach ein Fit ausführen und über den SelectionsFilter alle Objekte des Typs X auswählen. Jetzt müsstest du eine Liste von Objekte besitzen und diese kann man dann Auswerten. Wie gesagt, nur geraten und nicht getestet. Sag bescheid, falls du zum Ergebniss gekommen bist oder immer noch am Anfang stehst Gruß, Thomas ------------------ Hopfen und Mals Gott erhalts Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Siassei Mitglied MB - Student
Beiträge: 490 Registriert: 08.07.2007 SWX NX 3 und höher ;) Windows and UNIX<P>C, C++, Java, Phyton,...</P>
|
erstellt am: 16. Feb. 2009 20:04 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
|
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: 17. Feb. 2009 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
|
Trudel Mitglied
Beiträge: 24 Registriert: 03.02.2009
|
erstellt am: 17. Feb. 2009 12:26 <-- editieren / zitieren --> Unities abgeben:
danke leute..schreibe später noch obs es funktioniert hat und wie edit: stecke bissl fest momentan...möchte zum beispiel die informationen (kantenlänge,material) auslesen von einem design feature. Also haben einen Block erstellt in unigraphics NX5 --> starte dann das plugin und möchte dass die informationen in einer MessageBox angezeigt werden. Was mir fehlt ist die Verbindung zu dem Design feature herzustellen, also wie ich es ansprechen kann. Danke [Diese Nachricht wurde von Trudel am 17. Feb. 2009 editiert.] [Diese Nachricht wurde von Trudel am 17. Feb. 2009 editiert.] [Diese Nachricht wurde von Trudel am 17. Feb. 2009 editiert.] [Diese Nachricht wurde von Trudel am 18. Feb. 2009 editiert.] [Diese Nachricht wurde von Trudel am 18. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 18. Feb. 2009 18:34 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
Zitat: Original erstellt von Siassei: generell zu NXOpen: NXOpen ist nichts anderes als wie eine (schlecht) überarbeitet C-API.
Falsch, die Abbildung der C API findet man nur in den UF Wrapper Klassen. NXOpen ist eine völlig eigenständige Implementierung und die Anzahl der Klassen wächst in jeder Version. Zitat: Original erstellt von Siassei: Da ist nix, aber wirklich gar nix, was mit OOP zu tun hat. Mhhh .... leider :D
Klassen-Vererbung ist durchaus ein Merkmal der OOP. Zitat: Original erstellt von Siassei: Ich habe es noch nicht getestet, aber du musst höchst wahrscheinlich über den Selectionsmanager gehen. Sprich, Part XYZ -> Workpart -> Displayed Part schalten. Danach ein Fit ausführen und über den SelectionsFilter alle Objekte des Typs X auswählen.
Der bessere Weg wäre sicherlich, die vorhandenen Collections zu nutzen, z.B. NXOpen.Features -> FeatureCollection NXOpen -> BodyCollection Anschliessen hat man mit NXOpen -> Body -> GetEdges() alle Kanten eines Körpers zur Verfügung und Edge -> GetVertices(Point3d, Point3d) liefert die Endpunkte.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 18. Feb. 2009 18:49 <-- editieren / zitieren --> Unities abgeben: Nur für Trudel
Hier mal ein kleines Beispiel, dass alle Kanten nebst Vertices im dargestellten Teil liefert: 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 = theSession.ListingWindow lw.Open() For Each body As Body in theSession.Parts.Display.Bodies lw.WriteLine(body.ToString()) Dim edges() As Edge = body.GetEdges() For Each edge as Edge in edges lw.WriteLine(" " & edge.ToString()) Dim v1, v2 As Point3D edge.GetVertices(v1, v2) lw.WriteLine(" " & v1.ToString()) lw.WriteLine(" " & v2.ToString()) Next Next End Sub End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
Trudel Mitglied
Beiträge: 24 Registriert: 03.02.2009
|
erstellt am: 19. Feb. 2009 08:51 <-- editieren / zitieren --> Unities abgeben:
|