| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Abstand zwischen zwei Punkten (1915 mal gelesen)
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 25. Sep. 2009 14:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum Experten und Helfer, ich würde gerne ein kleines Programm schreiben mit dem der Benutzer aufgefordert wird einen Abstand zu messen (ganz so als würde er auf "Abstand messen" klicken), so dass ich dann in einem weiteren Programm den gemessenen Abstand sowie den Vektor der sich aus der Differenz beider Punkte ergibt weiterverarbeiten kann. Leider finde ich keine Lösung, wie der Benutzer zwei Punkte ähnlich dem "Abstand messen" Dialog auswählen kann, so dass ich diese Punkte dann weiterverarbeiten kann. Ich hatte zwei Ansätzte überlegt: 1. über: ufs.Ui.PickPoint. Problem: Der Benutzer hat nicht die Möglichkeit den Typ des Punktes (Endpunkt, Mittelpunkt, Schnittpunkt) auszuwählen. 2. den "Abstand messen" Dialog über einen eigen definierten Button aufzurufen und dann beide Punkte aufzeichnen. Leider komme ich hier nicht weiter... Was würdet ihr vorschlagen? Herliche Grüße und Dank! Denis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 26. Sep. 2009 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
Zitat: Original erstellt von denizO: Was würdet ihr vorschlagen?
Hallo Denis, mein erster Vorschlag wäre, daß Du mal Deine NX-Version angibst. Da gibt's nämlich einige Unterschied, was mögliche Lösungen angeht. Ab NX5 mal ein Journal beim Messen aufzeichnen, da gibt's einem Builder. Bis inkl. NX4 geht's etwas umständlicher ohne Builder über NXOpen.UF. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 26. Sep. 2009 14:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, das stimmt, bei der Version müssen wir erst mal anfangen. Ich benutze NX6. Hatte auch schon ein Journal aufgezeichnet und mir den MeasurementBuilder angeschaut. Aber ich habe es nicht hin bekommen, dass auch beim Abspielen des Journals (das den MeasurementBuilder enthält), der Benutzer aufgefordert wird, eine Distanz zu messen (bzw. selbst seine zwei Messpunkte zu wählen). Es finden Zuweisungen statt, die etwa so aussehen: MeasureDistanceBuilder.object1.value = point1 wobei dann im Journal dem Punkt Koordinaten zugewiesen werden. Bei mir müsste halt der Benutzer selbst seine Punkte wählen können und möglichst so wie auch bei der normalen Abstandsmesseung Leider habe ich hier zu hause meinen genauen Code nich zur Verfügung. Herzliche Grüße Denis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 28. Sep. 2009 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
Hallo Denis, die Abfrage einer Position kann über PointConstruct oder PointSubFunction gemacht werden. Beides ist unter NXOpen.UF.UI zu finden, Bsp.: dim ufs as UFSession = UFSession.GetUFSession ufs.ui.PointConstruct(...) ufs.ui.PointSubFunction(...) Die Positionen, die PointConstruct bzw. PointSubFunction liefert, können nun entweder mit dem MeasureDistanceBuilder oder durch einfache Vektorrechnung weiter verarbeitet werden. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 29. Sep. 2009 12:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, vielen Dank für Deine Hilfe. Das ist bestimmt der richtige Weg. Leider klappt es noch nicht ganz. PointSubfunction liefert den integer 8 zurück, was bedeutet (laut Uf_ui.h): 8 = Disallowed state, unable to bring up dialog Weißt Du vielleicht woran das liegen könnte? Nochmals herzlichen Dank Denis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Nachwuchsingenieur:in (m/w/d) im Bereich TGA/ELT | Als Teil der weltweit tätigen STRABAG SE und Nummer eins im deutschen Hoch- und Ingenieurbau bauen wir bei ZÜBLIN laufend am Fortschritt. Einzigartigkeit und individuelle Stärken kennzeichnen dabei unsere Projekte und jede:n Einzelne:n von uns. Ob im Hoch- und Ingenieurbau, Spezialtiefbau, Tunnel-, Stahl- und Holzbau oder in der Bauwerkserhaltung ? wir denken Bauen weiter, um der innovativste und nachhaltigste Bautechnologiekonzern Europas zu werden.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 29. Sep. 2009 13:38 <-- editieren / zitieren --> Unities abgeben:
...so: mittlerweile habe ich die Lösung gefunden: theUFSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM); int state = theUFSession.Ui.PointSubfunction("Specify point", mode, point_display_mode, point_picked); theUFSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM); Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |