| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: max Abstand Punkt - Objekt (2306 mal gelesen)
|
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 24. Sep. 2008 14:50 <-- editieren / zitieren --> Unities abgeben:
Hallo So langsam komme ich in kleinen Schritten vorwärts mit UG und VB Ich habe gerade folgendes Problem: Ich habe die Koordinaten von einem Punkt und will von dem über den maximalen Abstand zu einem Spline einen neuen Punkt erzeugen. Nun mußte ich leider feststellen das es ganz schön viele Measure Befehle gibt, so dass ich überfragt bin wo ich anfangen soll. Kann mir jemand nen Tipp geben? gruß EMMY 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: 25. Sep. 2008 15:42 <-- editieren / zitieren --> Unities abgeben:
|
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 26. Sep. 2008 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Zitat:
Journal zeichnet leider nichts auf.
Kann Dir leider nicht folgen. Bei mir wird die Abstandsmessung wie folgt aufgezeichnet: Code:
' NX 4.0.4.2 ' Option Strict Off Imports System Imports NXOpenModule NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display ' ---------------------------------------------- ' Menu: Analysis->Distance... ' ---------------------------------------------- Dim nullUnit As Unit = Nothing Dim point1 As Point = CType(workPart.Points.FindObject("HANDLE R-470"), Point) Dim spline1 As Spline = CType(workPart.FindObject("HANDLE R-451"), Spline) Dim measureDistance1 As MeasureDistance measureDistance1 = workPart.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Maximum, point1, spline1) measureDistance1.Information() measureDistance1.Dispose() ' ---------------------------------------------- ' Menu: Tools->Journal->Stop ' ---------------------------------------------- End Sub End Module
Das Mess-Ergebnis wird im Informationsfenster angezeigt. In NX5/NX6 sieht das ganze dann etwas anders aus, da die Klasse MeasureDistanceBuilder hinzugekommen ist. Sollte das nicht weiterhelfen, bitte ich um mehr Details. Gruss, Frank. 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: 26. Sep. 2008 17:40 <-- editieren / zitieren --> Unities abgeben:
*STAUN* Danke bei meinem Journal was ich aufgezeichnet hab wurde keine MeasureDistance daten aufgezeichnert, sondern ein startpunkt und ein endpunkt mit point3d werten. hab da wohl irgendwas falsch gemacht werde es mal ausprobieren *da ich keine Handle´s habe, sonder die Koordinaten von einem Punkt und ein ausgewählten Spline muß ich mal schaun wie das geht *und als zweites brauch ich von der messung den zweiten punkt, muß ich suchen mit welchem befehl man den bekommt lg EMMY
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: 30. Sep. 2008 09:51 <-- editieren / zitieren --> Unities abgeben:
wie kann ich meinen point2 in die Journal Aufzeichnung einfügen? habs schon probiert.. aber kommt fehlermeldung NXOpenPoint3D cannot be converted to NXOpen.point Dim point2 As Point3d = New Point3d(15, 15, 15)
Journal Aufzeichnung Dim point1 As Point = CType(workPart.FindObject("HANDLE R-3837"), Point) Dim spline1 As Spline = CType(workPart.FindObject("HANDLE R-1102"), Spline) Dim measureDistance1 As MeasureDistance measureDistance1 = workPart.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Maximum, point1, spline1)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 06. Okt. 2008 12:14 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Point3D ist kein darstellbares Object, da nicht von DisplayableObject abgeleitet! In der Doku zur Point Klasse steht folgendes: To create a new instance of this class, use PointCollection.CreatePoint Richtig wäre somit:
Code:
Dim point2 As Point3d = New Point3d(15, 15, 15) Dim point1 As Point = workPart.Points.CreatePoint(point2)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 06. Okt. 2008 12:46 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Zitat: Original erstellt von EMMY:
*da ich keine Handle´s habe, sonder die Koordinaten von einem Punkt und ein ausgewählten Spline muß ich mal schaun wie das geht
Mit den obigen Infos und einem Standardbeispiel aus dem UG/Answer sollte dies kein Problem mehr darstellen Code:
' NX 4.0.4.2 Option Strict OffImports System Imports NXOpen Imports NXOpen.UI Imports NXOpen.Utilities Imports NXOpen.UF Module select_a_spline Dim s As Session = Session.GetSession() Dim workPart As Part = s.Parts.Work Sub Main() Dim spline1 As Spline If (SelectSpline(spline1) = Selection.Response.ObjectSelected) Then Dim nullUnit As Unit = Nothing Dim point2 As Point3d = New Point3d(15, 15, 15) Dim point1 As Point = workPart.Points.CreatePoint(point2) Dim measureDistance1 As MeasureDistance measureDistance1 = workPart.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Maximum, spline1, point1) measureDistance1.Information() measureDistance1.Dispose() End If End Sub Function SelectSpline(ByRef selectedObject as NXObject) As Selection.Response Dim ui As UI = ui.GetUI() Dim title As String = "Select a Spline" Dim response As Selection.Response Dim selectionMask(0) As Selection.MaskTriple With selectionMask(0) .Type = UFConstants.UF_spline_type .Subtype = UFConstants.UF_spline_subtype .SolidBodySubtype = 0 End With Dim cursor As Point3d = Nothing response = ui.SelectionManager.SelectObject("Select a Spline", _ "Select a Spline", Selection.SelectionScope.WorkPart, _ Selection.SelectionAction.ClearAndEnableSpecific, _ False, False, selectionMask, selectedObject, cursor) Return response End Function Public Function GetUnloadOption(ByVal dummy As String) As Integer GetUnloadOption = UFConstants.UF_UNLOAD_IMMEDIATELY End Function End Module
[Diese Nachricht wurde von Overcast am 06. Okt. 2008 editiert.] 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: 07. Okt. 2008 09:19 <-- editieren / zitieren --> Unities abgeben:
|
EMMY Mitglied Student
Beiträge: 32 Registriert: 11.07.2008 UG NX4
|
erstellt am: 07. Okt. 2008 10:41 <-- editieren / zitieren --> Unities abgeben:
hab noch eine letzte Frage dazu mit measureDistance1.Information() werden ja die Informationen ausgegeben, die Länge, First Point, Second Point. Wie komm ich an die First Point Info aus der Messung ran, so dass ich ein Punkt mit der Info erstellen kann?
LG EMMY Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 08. Okt. 2008 14:57 <-- editieren / zitieren --> Unities abgeben: Nur für EMMY
Mit Code: measureDistance1.Value
bekommt man nur das Messergebnis. Allerdings gibt es einen Bug. Es funktioniert nur mit der Minimum Distance, aber nicht mit der Maximum Distance. Es gibt dazu bereits einen PR#1688058. Für die Ausgabe der beiden Endpunkte gibt es noch die Klasse Measurement:
Code:
Dim closePoint1 As Point3d Dim closePoint2 As Point3d theSession.Measurement.DisplayMinimumDistance ( spline1, point1, closePoint1, closePoint2) lw.Open() lw.WriteLine("Close point on first object: " & closePoint1.ToString()) lw.WriteLine("Close point on second object: " & closePoint2.ToString())
Allerdings gibt es keinen Pendant für die Maximum Distance...?! Würde hierzu mal einen Call beim Support aufmachen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |