| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: 100 Punkte auf einer Kurve (1582 mal gelesen)
|
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 12. Dez. 2008 13:01 <-- editieren / zitieren --> Unities abgeben:
Hallo ich möchte genau 100 Punkte auf einer Kurve erstellen manuel geht das ja total leicht, Menu: Insert->Datum/Point->Point Set->Points on Curve->equal parameters->100 ein Journal zeichnert bei mir leider nichts auf aber ich finde den befehl in VB für NX4 nicht ich hoffe mir kann jemand helfen gruß Maikx [Diese Nachricht wurde von Maikx am 12. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 12. Dez. 2008 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
|
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: 13. Dez. 2008 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
Hallo zusammen, es gibt eine Funktion, AskCurvePoints (o.ä.) , mit der sich die entsprechenden Koordinaten entlang einer Kurve ermitteln lassen. Anschließend können damit die Punkte gesetzt werden. Gruß, Michael 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: 13. Dez. 2008 15:38 <-- editieren / zitieren --> Unities abgeben:
ja mit AskCurvePoints kann man in einem bestimmten Abstand Punkte erzeugen und dann auslesen, nur ich brauch halt von jeder Kurve die gleiche Anzahl von Punkten, dass kann man da leider nicht einstellen 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: 15. Dez. 2008 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
Hallo Maikx, wo liegt denn das Problem ? Zuerst beziehst Du Dich auf eine Kurve und 100 Punkte, jetzt sind's mehrere Kurven mit der gleichen Anzahl an Punkten ?? Ein Bild könnte helfen. Gruß, Michael 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: 15. Dez. 2008 14:41 <-- editieren / zitieren --> Unities abgeben:
ok hab mal schnell nen kleines Bild gemalt, damit du siehst was ich meine also Problem ist das die kurven nicht gleich lang sind, mit askcurvepoints und z.b. einem ctol wert: 0,05 hät ich bei der ersten kurve 125 punkte bei der nächsten 142 also wäre es schön wenn ich eine genau anzahl auslesen könnte, damit die punkte anzahl immer gleich ist 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. Dez. 2008 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
Hallo Maikx, mit AskCurvePoints gibt es tatsächlich keine Möglichkeit, die Punkteanzahl direkt anzugeben. Auch die Berechnung der Bogenlänge und entsprechende Angabe der maximalen Schrittweite bringt nur annähernd die gewünschte Anzahl. Alternativ setzt man die Punkte eben einzeln in einer For- Schleife. Ein Beispiel findest Du im Anhang. Gruß, Michael 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: 19. Dez. 2008 08:25 <-- editieren / zitieren --> Unities abgeben:
|
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: 19. Dez. 2008 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
Da gibt's auf die Schnelle zwei Alternativen: 1: Scalar bei jedem Schleifendurchlauf neu machen anstatt zu ändern. 2: In NXOpen.UF gibt's eine Funktion zur Punkterzeugung, die m.W. ohne Skalar auskommt. Gruß, Michael 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: 08. Jan. 2009 21:32 <-- editieren / zitieren --> Unities abgeben:
|
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: 12. Jan. 2009 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
|
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 12. Jan. 2009 19:31 <-- editieren / zitieren --> Unities abgeben:
|
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 13. Jan. 2009 21:08 <-- editieren / zitieren --> Unities abgeben:
hab noch ne kleine Frage vb.net:wenn ich mit in der for next schleife folgendes eingebe: lw.Open() lw.WriteLine(nx_pnt.Coordinates.X.ToString) dann lese ich die Punkt nach Folgendem Schema aus: 4,500718 -77,236692 -574,714035 -595,882406 251,873212 23,310449 ich möchte die aber gerne sortiert haben : -595,882406 -574,714035 -77,236692 4,500718 23,310449 251,873212
geht das mit array.sort? ein array ist ja nicht vorhanden
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: 14. Jan. 2009 13:18 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
Zitat: Original erstellt von Maikx: ein array ist ja nicht vorhanden
Wo ist das Problem ? Schreib' die Koordinaten innerhalb der Schleife zuerst in ein Array anstatt ins ListingWindow. Nach der Schleife kannst Du dann sortieren. Gruß, Michael 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: 14. Jan. 2009 15:27 <-- editieren / zitieren --> Unities abgeben:
|
| CAD Designer (m/w/d) Trassenplaner | Werden Sie Teil von Engineering Excellence! In einem mittelständischen Familienunternehmen mit rund 300 Mitarbeitende in Deutschland und gleichzeitig weltweit tätig als Ingenieur- und Beratungsdienstleister im Energiesektor mit langjähriger Tradition und innovativen Ansätzen. Mit unseren maßgeschneiderten und ausgezeichneten Lösungen für nationale und internationale Industrie- ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 15. Jan. 2009 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für Maikx
test1 wird innerhalb der FOR Schleife immer wieder initialisiert. So sollte es funktionieren: Code:
Sub Main() Dim undomark As Session.UndoMarkId = sess.SetUndoMark(Session.MarkVisibility.Visible, "create points") Dim n_pnt As Integer = 100 Dim crv As NXObject = select_curve() If Not crv Is Nothing Then Dim nullscalar As Scalar = wp.Scalars.CreateScalar(0, Scalar.DimensionalityType.Length, SmartObject.UpdateOption.WithinModeling) Dim ref_pnt As Point = wp.Points.CreatePoint(CType(crv, IBaseCurve), nullscalar, SmartObject.UpdateOption.WithinModeling) Dim test1(n_pnt - 1) As Double Dim test2(n_pnt - 1) As Double Dim messp As Point For i As Integer = 0 To n_pnt - 1 Dim scalar As Scalar = wp.Scalars.CreateScalar(i / (n_pnt - 1), scalar.DimensionalityType.Length, SmartObject.UpdateOption.WithinModeling) Dim nx_pnt As Point = wp.Points.CreatePoint(CType(crv, IBaseCurve), ref_pnt, scalar, PointCollection.AlongCurveOption.Percent, Sense.Forward, SmartObject.UpdateOption.WithinModeling) nx_pnt.SetVisibility(SmartObject.VisibilityOption.Visible) 'nx_pnt.SetName("p_" & i + 1) messp = nx_pnt test1(i) = nx_pnt.Coordinates.X.ToString("F6") sess.UpdateManager.AddToDeleteList(scalar) Next i test2 = test1 Array.Sort(test2) For i As Integer = 0 To n_pnt - 1 lw.Open() lw.WriteLine(test2(i)) Next i sess.UpdateManager.AddToDeleteList(nullscalar) End If sess.UpdateManager.DoUpdate(undomark) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |