| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Mittelpunkt einer Linie (2057 mal gelesen)
|
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 27. Aug. 2008 16:18 <-- editieren / zitieren --> Unities abgeben:
Ich bin ziemlich neu in NX und habn kleines Problem mit VB. Ich brauch den Mittelpunkt einer Linie um von daaus eine Linie zu einem Spline zu ziehen. Kann mir jemand helfen wie ich das schaffen kann... z.B. irgendwie der Linie einen Namen geben und dann weiter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 28. Aug. 2008 09:32 <-- editieren / zitieren --> Unities abgeben:
|
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. Aug. 2008 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Hallo Emmy, zunächst mal willkommen hier im Forum. Und zu Anfang ein paar Tips, wie Du einen Beitrag anfangen solltest, um darauf auch Antworten zu erhalten. Laß' uns vorab mal wissen, mit welcher SW Du arbeitest. NX- Version und evtl. eingesetzte Entwicklerumgebung für VB kannst Du z.B. in Deiner Systeminfo eintragen. Ohne zu wissen, welches Auto Du fährst, kann Dir das auch keiner reparieren. Als nächstes wäre eine, sagen wir mal etwas präzisere Frage von Vorteil. Wie weit bist Du selbst gekommen, welche Info's der Linie liegen vor ? Hast Du sie als Objekt vorliegen oder willst Du z.B. den Mittelpunkt einfach als Koordinate interaktiv anwählen ? Dann gibt es noch die Forumssuche, mit der Du Beiträge mit einer ähnlichen Fragestellung oder solche, die einen Teilbereich Deines Problems abdecken, finden kannst. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 28. Aug. 2008 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke für die Willkommensgrüße Benutze NX4 :-) Ich wollte der Linie einen Namen vorweg geben zb. "Linie1", so dass man vor dem start der Linie den Namen per Hand zuweist und man dann das Journal startet und wie oben beschrieben vorgeht
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. Aug. 2008 18:07 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Hallo Emmy, ob die Linie einen Namen hat oder nicht, ist für das Auslesen ihrer Koordinaten nicht relevant, damit bist Du m.E. auf dem falschen Weg. Um einem Programm mitzuteilen, welche Linie oder allgemein welches Objekt Du bearbeiten willst, gibt's die sog. Selektion, genau so wie bei den Standardfunktionen in NX. Anbei ein Beispiel zur Selektion jeweils einer Linie, deren Koordinaten ausgegeben werden. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 29. Aug. 2008 09:07 <-- editieren / zitieren --> Unities abgeben:
|
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: 29. Aug. 2008 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Hallo Emmy, das Programm läuft bei mir einwandfrei, sonst wär's nicht hier gelandet. Die Meldung deutet darauf hin, daß bei Dir eine andere Version der NXOpen.UF- dll angezogen wird. Du kannst ja mal in Zeile 52 nach dem "=" einfach eine "-1" setzen, also mask_triples(0).object_subtype = -1, so ist der Wert unabhängig von den UFConstants. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 29. Aug. 2008 13:32 <-- editieren / zitieren --> Unities abgeben:
Hey Michael, hast recht lag daran ;-) Ich hab hier mal ein Bild eingefügt, dann kannst du mal sehen was ich vorhab. Also den Mittelpunkt der Linie will ich mit einem Spline per Linie verbinden.. Ich bin soweit das ich den Mittelpunkt der Linie auslesen kann Häng gerade fest wie ich den Spline erfassen kann, denn die Linie dazwischen ist ja mit maximalem Abstand erzeugt wurden. Nur wie komm ich von dem Mittelpunkt zum Spline? 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: 29. Aug. 2008 16:52 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Hallo Emmy, einen Spline zu selektieren geht im Prinzip genau so, wie auch die Linie ausgewählt wird, nur mit einer anderen Objektmaske. Die entsprechenden Programmzeilen zu kopieren und abzuändern, schaffst Du mit etwas Eigeninitiative sicher auch eigenständig . Im nächsten Schritt wirst Du eine Abstandsmessung brauchen. Also mal Doku wälzen (Suchtipps: Evaluate, Measure etc.) oder während einer Messung ein Journal aufzeichnen. Möglicherweise läßt sich schon beim Messen eine neue Linie erzeugen. Falls nicht, kannst Du die Linie entsprechend dem Messergebnis neu machen. Vorgehensweise s.o. oder mal nach Beispielen suchen. Gruß, Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 02. Sep. 2008 09:10 <-- editieren / zitieren --> Unities abgeben:
Besten Dank für deine Hilfe Ich werde es heute mal ausprobieren, habe mal eine Frage zu dem Punkte auslesen. In der Auswertung der Punkte nimmt er immer die X,Y,Z Werte, ich möchte aber die XC,YC,ZC Werte in der Datei auslesen.. die ja bezogen auf ein extra Koordinatensystem liegen. Muß ich nur einen Befehl ändern? Information Units Point mm XC = 825.41252743173000 X = 150.315424999330 YC = 469.65776437650000 Y = -401.224484089540 ZC = 0.00000000000730 Z = 30000.000000000000 gruß EMMY 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: 02. Sep. 2008 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
|
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 02. Sep. 2008 13:39 <-- editieren / zitieren --> Unities abgeben:
ok da steht nun folgendes... input_csys = UF_CSYS_ROOT_COORDS; output_csys = UF_CSYS_ROOT_WCS_COORDS; See Also extern int UF_CSYS_map_point (int input_csys, double input_point[ 3 ], int output_csys, double output_point[ 3 ] ); ich versuche das gerade einzubauen schaff das aber nicht, kann mir wer helfen
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: 03. Sep. 2008 19:11 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Emmy, vorab noch mal was grundsätzliches zu der Hilfestellung, die Du hier erwarten kannst bzw. nicht erwarten solltest. Das Forum wird Dir eine eigene Einarbeitung nicht abnehmen, schon eher hier und da mal den, hoffentlich richtigen Weg zeigen. Gehen solltest Du Deinen Weg allerdings selbst, auch wenn er anfangs eher nach einem Labyrinth aussieht, was beim Thema VB.NET und NXOpen durchaus verständlich ist. Hinweise auf Dokumentationen und Beispiele zum Einstieg findest Du über die, schon mal erwähnte Suchfunktion. In jedem Fall zu empfehlen ist der Einsatz einer Entwicklerumgebung oder IDE, die gerade am Anfang vieles erleichtert, so z.B. Deine letzte Frage interaktiv beantworten kann. Zu weiteren, allgemeinen Gesichtspunkten, nicht nur dieses Forum betreffend, kannst Du ja auf http://www.tty1.net/smart-questions_de.html bei Gelegenheit mal etwas schmökern. So, in der Hoffnung, daß es auf fruchtbaren Boden fällt, anstatt wie ein Tropfen auf dem heißen Stein zu verdampfen, hier noch mal etwas ausführlicher das Thema Koordinaten- Mapping: Die Variable ufs ist in obigem Beispiel schon definiert und verweist auf die sog. UFSession. Der Aufruf der Mapping- Funktion lautet dann: ufs.Csys.MapPoint(UFConstants.UF_CSYS_ROOT_COORDS, abs_pnt,UFConstants.UF_CSYS_ROOT_WCS_COORDS, wcs_pnt) Die beiden Variablen abs_pnt (Input) und wcs_pnt (Output) sind dreidimensionale Arrays vom Typ Double, die zuvor wie folgt definiert werden müssen: Dim abs_pnt(2) As Double Dim wcs_pnt(2) As Double Vor Aufruf von MapPoint sollte abs_pnt logischerweise die xyz- Werte der absoluten Koordinate zugewiesen bekommen, danach stehen in wcs_pnt die gesuchten, auf das WCS bezogenen, relativen Koordinaten. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 04. Sep. 2008 15:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke für deine Hilfe Ich habe es schon öfter probiert aber wenn ich mit ufs.Curve.AskPointData(pnt_tags(i), coords) die Punktedaten auslese, ließt er trotz MapPoint Änderung immer nur die Koordinaten auf das Ursprungskoordinatensystem aus, es scheint so zu sein das es nicht geht und ich mir leider eine andere Lösung für mein Problem ausdenken muß gruß EMMY Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 04. Sep. 2008 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
|
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 07. Sep. 2008 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Hab was für dich gefunden, was du bei dir einbauen kannst Option Strict Off Imports System Imports System.Environment Imports NXOpen Imports NXOpen.UF Imports NXOpen.UI Imports NXOpen.Utilities
Module MyPointConstruct Sub Main() Dim theSession As Session = Session.GetSession() Dim UFS As NXOpen.UF.UFSession Dim point_tag As NXOpen.Tag Dim AbsPt(2) As Double Dim WcsPt(2) As Double Dim response As Integer UFS = NXOpen.UF.UFSession.GetUFSession() UFS.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM) UFS.Ui.PointConstruct("Select a Point", UFS.Ui.PointBaseMethod.PointNoMethod, point_tag, AbsPt, response) UFS.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM) UFS.Csys.MapPoint(UFConstants.UF_CSYS_ROOT_COORDS, AbsPt, UFConstants.UF_CSYS_ROOT_WCS_COORDS, WcsPt) MsgBox("ABS X : " & AbsPt(0) & " Y : " & AbsPt(1) & " Z : " & AbsPt(2)) MsgBox("WCS X : " & WcsPt(0) & " Y : " & WcsPt(1) & "Z : " & WcsPt(2)) End Sub Public Function GetUnloadOption() As Integer Return Session.LibraryUnloadOption.Immediately End Function End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Geschäftsführer Planungsunternehmen (m/w/d) | Kennziffer WH869.01 | Branche Architektur/ Planungsbüro| Region Raum Hamburg Unser Auftraggeber ist, eingebettet in eine Unternehmensgruppe, ein renommiertes Beratungs- und Planungsunternehmen, das europaweit Industrie-, Logistik- und Infrastrukturprojekte plant und realisiert. Seit Gründung hat man mehrere Tausend Projekte für namhafte Unternehmen erfolgreich in bester Qualität realisiert.... | Anzeige ansehen | Feste Anstellung |
|
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 26. Sep. 2008 10:27 <-- editieren / zitieren --> Unities abgeben:
|