| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Einlesen von Koordinaten durch Cursor-klick, Rechnen, If (1195 mal gelesen)
|
DanielB93 Mitglied
Beiträge: 4 Registriert: 01.07.2015
|
erstellt am: 01. Jul. 2015 11:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich erstelle aktuell eine n-Anzahl von aneinander hängende Bögen über 3. Klicks pro Bogen. Startpunkt, Endpunkt, Maxima Ich möchte dies gerne auf 2. Klicks beim Ersten und 1. Klick bei jedem weiteren reduzieren. Kann man Koordinaten per Curser-Klick einlesen ? Kann man Formeln, wie bei Excel, einbauen ? Kann ich über if meine Eingabe n-lang machen und/oder beenden? Ist dies mit vb (ich probiere dies gerade zum ersten mal aus) überhaupt möglich? Wenn es nicht möglich ist, kennt ihr eine andere Möglichkeit dies zu realisieren ?
Aktuell habe ich folgenden Aufbau: Dim startPoint1 As Point3d = New Point3d(Cursor-klick) Dim pointOn1 As Point3d = New Point3d(Formel) Dim endPoint1 As Point3d = New Point3d(Cursor-klick) Dim startAndEndGotFlipped1 As Boolean Dim arc1 As Arc arc1 = workPart.Curves.CreateArc(startPoint1, pointOn1, endPoint1, False, startAndEndGotFlipped1) Dim markId5 As Session.UndoMarkId markId5 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Create Arc") Dim startPoint2 As Point3d = endPoint1 Dim pointOn2 As Point3d = New Point3d(Formel) Dim endPoint2 As Point3d = New Point3d(Cursor-klick) Dim startAndEndGotFlipped2 As Boolean Dim arc2 As Arc arc2 = workPart.Curves.CreateArc(startPoint2, pointOn2, endPoint2, False, startAndEndGotFlipped2) Grüße, Daniel 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: 01. Jul. 2015 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für DanielB93
Zitat: Original erstellt von DanielB93:
Ich erstelle aktuell eine n-Anzahl von aneinander hängende Bögen über 3. Klicks pro Bogen.Startpunkt, Endpunkt, Maxima Ich möchte dies gerne auf 2. Klicks beim Ersten und 1. Klick bei jedem weiteren reduzieren.
Hallo Daniel, wie willst Du einen Kreisbogen über 2 Positionen bestimmen ? Das geht nur wenn man festlegt, daß die beiden Positionen Durchmesser oder Radius bestimmen, sonst braucht's drei Punkte. Ein Bild wäre hilfreich. Zitat: Original erstellt von DanielB93:
Kann man Koordinaten per Curser-Klick einlesen ? Kann man Formeln, wie bei Excel, einbauen ? Kann ich über if meine Eingabe n-lang machen und/oder beenden?
Ja, in UF_UI gibt's Funktionen, die das machen, z.B. PointConstruct. Mehr als das. Wahrscheinlich nicht mit If ... End If, sondern mit einer Schleife: Do ... Loop Zitat: Original erstellt von DanielB93:
Ist dies mit vb (ich probiere dies gerade zum ersten mal aus) überhaupt möglich?
Ja, sicher ist das machbar. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielB93 Mitglied
Beiträge: 4 Registriert: 01.07.2015
|
erstellt am: 01. Jul. 2015 13:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, Danke für die schnelle Antwort Ich möchte den Start(P1) und Endpunkt(P2) des ersten Bogen über Cursor-Klicks eingeben. Die Neigung des Bogens möchte ich über einen Punkt automatisiert festlegen lassen, den ich nicht klicken muss. Z.B. vom Mittelpunkt des Vektor_P1-P2 im 90° Winkel um eine länge von z.b. Vektor_P1-P2 / 4 nach außen abgehen, also als "Dreiecksberechnung". Zu PointConstruct: Wie baue ich die Eingabe über "PointConstruct" auf ?
Dim P1 As Point3d = PointConstruct // ? Wahrscheinlich wäre das zu einfach ^^ Zur Schleife: Ich hatte vergessen zu erwähnen das meine Bögen einen geschlossenen Kreis bilden, also wenn Pn = P1 = Ende, wenn Pn ungleich P1 = weiterer Punkt per Cursor-Klick
Beispielbild im Anhang
Grüße, Daniel
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: 01. Jul. 2015 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für DanielB93
Hallo Daniel, die Festlegung der dritten Position des Kreisbogens über den Abstand der ersten beiden ist zwar unüblich, aber theoretisch machbar. Ich bezweifle aber, ob's eine Funktion in NXOpen gibt, die genau diese Eingaben erwartet. Eher wahrscheinlich ist, daß man einige Werte umrechnen muss. Einfacher wär's, aus dem Abstand 1->2 z.B. Radius oder Duchmesser zu ermitteln. Für Pointconstruct braucht man die sog. UFSession: dim ufs as UFSession = UFSession.GetUFSession ufs.ui.Pointconstruct(...) Daraus resultiert ein Array mit drei Double-Werten, XYZ der angewählten Position. Genaueres zum PointConstruct findet sich in der NXOpen-Hilfe net_ref.chm. Daneben ein ganz heißer Tipp: Die Forensuche nach Pointconstruct bringt zwei Seiten Ergebnisse. Thema Schleife: Ohne kann ich mir das nicht vorstellen, kannst mich aber gerne überzeugen, daß es auch ohne geht . Die Abfrage ob aktueller Punkt = erster Punkt wäre m.E. die Abbruchbedingung der Schleife. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Bauleiter*in (m/w/d) Tiefbau und Kabelkanalanlagen | Du suchst eine spannende Aufgabe mit positivem gesellschaftlichem Impact? Lass uns gemeinsam daran arbeiten, die Grundlage für eine moderne und zukunftsfähige Berliner Verwaltung zu schaffen und die Digitalisierung voranzutreiben ? werde Teil unseres Teams! Für die Abteilung Kommunikationsdienste suchen wir ab sofort tatkräftige Unterstützung: Bauleiter*in ... | Anzeige ansehen | Feste Anstellung |
|
DanielB93 Mitglied
Beiträge: 4 Registriert: 01.07.2015
|
erstellt am: 07. Jul. 2015 14:02 <-- editieren / zitieren --> Unities abgeben:
Ich bin jetzt soweit das ich über Mausklick die Punkte einlesen kann und über eine "Do until" Schleife eine n-Anzahl von Wiederholungen hinbekomme und sich das kleine Tool automatisch beendet wenn der letzte Endpunkt = der erste Startpunkt ist. Leider muss ich meinen Klick immer "Bestätigen" (z.B. per "ESC", "OK-Button", ....) weißt du rein zufällig wie ich dies umgehen kann ?
Also das der Klick keine extra Bestätigung braucht, sondern ich gleich mit dem nächsten Punkt weiter machen kann. Der Code sieht bei mir gerade so aus: " ... 'Ermittlung Startpunkt Dim AbsPt(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 StartPoint", UFS.Ui.PointBaseMethod.PointNoMethod, point_tag, AbsPt, response) Dim startPointNX As Integer = AbsPt(0) Dim startPointNY As Integer = AbsPt(1) Dim startPointN As Point3d = New Point3d(startPointNX, startPointNY,0) 'Ermittlung Endpunkt UFS = NXOpen.UF.UFSession.GetUFSession() UFS.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM) UFS.Ui.PointConstruct("Select EndPoint", UFS.Ui.PointBaseMethod.PointNoMethod, point_tag, AbsPt, response) Dim endPointNX As Integer = AbsPt(0) Dim endPointNY As Integer = AbsPt(1) Dim endPoint As Point3d = New Point3d(endPointNX, endPointNY, 0) ... " PS: NX 9.0.3.4
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|