| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | MAIT übernimmt Kundenstamm von GMCAD, eine Pressemitteilung
|
Autor
|
Thema: Lisp zum zerlegen einer 2D Kontur in XYZ Koordinaten (2344 / mal gelesen)
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 19. Apr. 2021 12:45 <-- editieren / zitieren --> Unities abgeben:         
|
TC17pro Ehrenmitglied V.I.P. h.c. PM schreiben hilft, manchmal :-)

 Beiträge: 3671 Registriert: 20.08.2013 Klapprechner 1, mit W7 NVidia GT540M Klapprechner 2, mit W10 NVidia GeForce GTX1060 Drucker: Ender 3 Pro u.v.m.
|
erstellt am: 19. Apr. 2021 14:14 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 20. Apr. 2021 05:22 <-- editieren / zitieren --> Unities abgeben:         
|
TC17pro Ehrenmitglied V.I.P. h.c. PM schreiben hilft, manchmal :-)

 Beiträge: 3671 Registriert: 20.08.2013 Klapprechner 1, mit W7 NVidia GT540M Klapprechner 2, mit W10 NVidia GeForce GTX1060 Drucker: Ender 3 Pro u.v.m.
|
erstellt am: 20. Apr. 2021 05:49 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 20. Apr. 2021 22:26 <-- editieren / zitieren --> Unities abgeben:         
|
highway45 Moderator Bastler mit Diplom
       

 Beiträge: 6385 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 22. Apr. 2021 13:06 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Ich fange mal mit der Aufgabenstellung an: wir haben eine Linie im Raum, daher gehe ich von einer 3D-Linie aus, also nicht 2D-Geometrie auf einer Arbeitsebene. Anbei ein Bild, es gibt eine Funktion, die so eine 3D-Geometrie zerteilen kann. Nun müßte es noch eine Funktion geben, die alle einzelnen Punkte herausschreibt. Ähnlich wie punkte_lesen.lsp, nur nicht manuell. ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
  
 Beiträge: 577 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 22. Apr. 2021 15:39 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo, falls Christian sich das so vorstellt, dann könnte ich das mittels get_selection, *sd-edge-3d-seltype* und einer dolist in die Lisp 'Punkte_lesen' miteinbauen. (Denke ich zumindestens!) Dann würde man die geteilte 3D-Linie antippen und erschreibt die XYZ Koordinaten der Eckpunkte raus. Ist die Reihenfolge wichtig? Keine Ahnung was dann dabei rauskommt! Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 24. Apr. 2021 08:18 <-- editieren / zitieren --> Unities abgeben:         
Hallo, es sollte nicht nur die vorhandenen Punkte ausgeben sondern auch zwischenpunkte ausgeben können. Da ich die Anzahl der Punkte brauche und irgendwie bestimmen möchte. In Prinzip macht das doch Creo oder jedes Cad Programm auch um eine Linie, Polylinie oder Kreisbogen darzustellen auf dem Bildschirm. Bei Creo parametric geht das nur über Umwege. Turbocad kann das wohl von Haus aus. Vielleicht bekommt Ihr das ja hin? Vielleicht wäre auch eine Möglichkeit ein Feature zu erstellen Punkte auf eine Kurve zu Mustern? Die XYZ Daten der Punkte stehen ja in einer Step zum Beispiel. Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 24. Apr. 2021 13:57 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo zusammen, das angehängte lisp nimmt alle Geometrien auf einer Arbeitsebene, ermittelt Punkte auf diesen Geometrien in einem wählbaren Abstand und schreibt diese Punkte in eine csv-Datei. Vielleicht hilft das ja. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 24. Apr. 2021 19:22 <-- editieren / zitieren --> Unities abgeben:         
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021 Windows 10 Enterprise 22H2 64-Bit-Betriebssystem 13th Gen Intel(R) Core(TM) i9-13950HX 2.20 GHz RAM 64,0 GB NVIDIA RTX 3500 Ada Generation Laptop GPU Creo Elements/Direct Modeling 20.4.2
|
erstellt am: 24. Apr. 2021 22:32 <-- editieren / zitieren --> Unities abgeben:         
So stelle ich es mir vor. Konnte leider rückwärts nicht testen. Ich wollte über die lisp der Hilfeseite zu osd die Punkte wieder lesen und die Kontur betrachten. Leider funktioniert die lisp nicht. Es öffnet sich weder ein Fenster noch kommt ein Eintrag in die Werkzeugliste. Surfacing habe ich aktiviert. Habe Creo 19.0 drauf. Weiß jemand warum die lisp nicht richtig startet? Danke und Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 24. Apr. 2021 22:48 <-- editieren / zitieren --> Unities abgeben:         
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021 Windows 10 Enterprise 22H2 64-Bit-Betriebssystem 13th Gen Intel(R) Core(TM) i9-13950HX 2.20 GHz RAM 64,0 GB NVIDIA RTX 3500 Ada Generation Laptop GPU Creo Elements/Direct Modeling 20.4.2
|
erstellt am: 24. Apr. 2021 23:26 <-- editieren / zitieren --> Unities abgeben:         
Mit welcher Lisp kann ich die Punkte wieder importieren? Möchte sehen ob die Punkte wieder exakt auf der Kurve liegen. Vielleicht könnt Ihr bitte die Schritte kurz schreiben!? Danke Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
       

 Beiträge: 6385 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 25. Apr. 2021 11:48 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Zum Import von 3D-Koordinaten ist eigentlich kein Makro erforderlich. Zum Beipiel könnte ein 3D-Spline erzeugt werden, der dann ja deckungsgleich sein sollte: "3D-Geometrie" - "Spline" und dann die Koordinaten aus der Zwischenablage in die Eingabezeile kopieren. Danach ok drücken. Das geht auch einfach mit Punkten oder geraden Linien. Im 3D-Fenster einschalten, daß 3D- oder 2D-Punkte angezeigt werden sollen. ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 25. Apr. 2021 12:03 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo, das gb-split-lines-and-export.lsp habe ich noch etwas angepasst. Jetzt kann optional auch die z-Koordinate geschrieben werden (z=0). csv --> step: Mit dem angehängten ascii3d_step_converter.lsp kann man eine csv-Datei mit 3d-Koordinaten in eine Step-Datei konvertieren. Beim Import muss als Trennzeichen ein "," ausgewählt werden. Der step-converter stammt nicht von mir. step --> Modeling: Beim Laden der generierten Step-Datei darf _nicht_ die Granite-Option verwendet werden. Damit die Punkte angezeigt werden, musst du die 3D-Eckpunkte in den Anzeigeeingenschaften anhaken. Damit funktioniert der Import auch von einigen Tausend Punkten in akzeptabler Zeit. Gruß Thomas
[Diese Nachricht wurde von TommiO am 25. Apr. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dcsith2 Mitglied Konstrukteur
 Beiträge: 6 Registriert: 12.01.2016 Creo Elements Direct Modeling 20.1 Creo Elements Direct Drafting 20.1
|
erstellt am: 26. Apr. 2021 14:44 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo zusammen, ich hätte noch eine Frage dazu: Gibt es diese Möglichkeit auch im Annotation? Beispiel: Export der X u. Y Koordinaten der Eckpunkte von Linien einer Ansicht über einen selbst definierten Nullpunkt? Bestenfalls mit Nummerierung (ähnlich einer Bohrtabelle). Bisher müssen bei uns alle Anfangs- u. Endpunkte von Konturen auf der Zeichnung bemaßt werden, da nicht alle Bearbeitungsmaschinen CAM gestützt arbeiten. Da sind tlw. extrem viele Maße zu setzen. Falls mir hier irgendjemand helfen kann, wäre ich euch sehr dankbar! Liebe Grüße dc
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 26. Apr. 2021 16:08 <-- editieren / zitieren --> Unities abgeben:         
Hallo, recht vielen Dank für jegliche Hilfe! Besonders ein Dankeschön an TommiO! Das ist das was ich brauche. Nun kommen noch ein paar Feinheiten. Die Reigenfolge der Segmente ist irgendwie willkürlich. Sprich die Anwendung zerlegt erst im Quadrant 1 dann 3 dann 2 dann 4. Und er fängt teilweise von unterschiedlichen Richtungen an. Ich füttere mit den Daten ein Tool und muss die Kurve in einer Richtung durchlaufen. Entweder vom Nullpunkt gesehen im Uhrzeigersinn oder gegen den Uhrzeigersinn. Damit ich die Daten nutzen kann muss ich zum Einen die Abschnitte in Reihenfolge ordnen und teilweise den jeweiligen Abschnitt umsortieren/spiegeln von oben nach unten. Zum besseren Verständnis habe ich einmal den Istzustand und den Sollzustand angehängt. Ich denke daran seht Ihr mein Problem sofort. Kostet mir zusätzlich Zeit und kann zu Fehlern führen (wenn man mal nicht aufpasst beim Ordnen und sortiefren). Aber das jetzige Tool erspart mir jetzt schon sehr viel Zeit. Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 26. Apr. 2021 18:43 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Zitat: Original erstellt von NutundFeder: Die Reigenfolge der Segmente ist irgendwie willkürlich.
An irgendeiner Stelle in dem LISP code hast Du die Liste aller Punkte in der Hand. Diese gilt es dann wohl noch zu sortieren. Das macht man mit ==>> sort.
Code: (setq string-liste-sorted (sort string-liste 'string< ))
Nun haben wir keine Liste von string, sondern von 2D Punkten (oder werte paaren). Wenn ich deine 'sollliste' richtig lese sortierst du nach aufsteigendem Y, und dann ggf. nach X, falls Y1==Y2. Also schreiben wir uns ein Sort, das ein eigenes Sortierkriterium hat. Individuell angepasst. Da wir das Sortierkriterium nur hier an dieser Stelle brauchen nehmen wir ein lambda, statt explizit eine Funktion zu definieren: Code: (setq punkte-liste-sorted (sort punkte-liste #'(lambda (P1 P2) (if (sd-num-equal-p (gpnt2d_y P1) (gpnt2d_y P1)) (< (gpnt2d_x P1) (gpnt2d_x P1)) (< (gpnt2d_y P1) (gpnt2d_y P1)) ) )))
für den num-equal kann man noch ==>> die Auflösung angeben (wenn nötig). ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 26. Apr. 2021 19:03 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
in etwa wie folgt umstricken: Code: ;; alle punkt aufsammeln (dotimes (i (+ no_of_segm 1)) (setf s_val (+ parm_start (* i parm_segm_len))) (push (getf (sd-inq-edge-pnt one_edge :s s_val :coordinates t :Dest-space one_workplane) :coordinates) coords) ) ) ;; alle gesammelten Punkte sortieren (setq coords (sort coords) #'(lambda (P1 P2) (if (sd-num-equal-p (gpnt2d_y P1) (gpnt2d_y P1)) (< (gpnt2d_x P1) (gpnt2d_x P1)) (< (gpnt2d_y P1) (gpnt2d_y P1)) ) )) ;; alle gesammelten Punkte ausgeben (with-open-file (outStream (first OutFile) :Direction :Output :if-exists :Overwrite :if-does-not-exist :create) (dolist (a-coord coords) (format outStream "~,6f,~,6f~%" (gpnt3d_x coords) (gpnt3d_y coords)) ) )
------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 26. Apr. 2021 19:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe einmal quick and dirty ein paar Skizzen gemacht. Im Prinzip beschreiben die Punkte ja eine 2D Kurve. Diese besteht aus mehreren Segmenten. Zum Beispiel verschiedene aneinander gekettete Kreisbögen. Die Gesamtkurve soll entweder vom Ursprung aus gesehen im Uhrzeiger oder gegen Uhrzeiger von Anfang zum Endpunkt abgetastet werden nach Punkten auf der Kurve. Nun zerlegt er schön die Segmente. Diese einzelnen Segmente für sich passen. Die Werte laufen genau in eine Richtung durch. Nur läuft er zum Beispiel 1 Segment mal im Uhrzeiger durch und das andere gegen Uhrzeiger.Das heißt wenn 1 Segment von Punkt 1 nach 2 läuft dann läuft er beim 2 Segment von 3 nach 2 und nicht wie gewünscht von 2 nach 3. Dann sind die Segmente auch nicht in der richtigen Reihenfolge.Sprich bei 5 Segmenten nicht Segment 1,2,3,4,5 sondern durcheinander. Zum Beispiel 2,4,1,3,5. Ich hoffe ich habe es gut genug erklärt. Anbei meine Skizzen. Gruß Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 26. Apr. 2021 20:59 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo NutundFeder, da setzt man am besten beim gb-split-lines-and-export.lsp an. Momentan werden die Berührungspunkte der Linien doppelt rausgeschrieben. Annahme: Linien auf Arbeitsebene sind aneinandergereiht, keine Lücken, nix doppelt oder übereinanderliegend. D.h. ein zusammenhängender Linienzug, offen oder geschlossen. Änderung im Dialog: Im Dialog das Startsegement definieren. Im Dialog den Startpunkt definieren. Ablauf: 1. Am Startpunkt des Startsegments beginnen und Punkte dieser Linie rausschreiben 2. Nächstes Segment ermitteln, welches am Endpunkt des zuvor bearbeiteten Segements beginnt (bzw. endet). Das geht am besten mit zwei assoc-Listen, die man sich ganz am Anfang erstellt: (Start-Punkt . sel_item) + (Endpunkt . sel_item) 3. Beginnend am Start- bzw. Endpunkt dieses nächsten Segments wieder die Punkte rausschreiben 4. Bei Punkt 2 weitermachen, bis kein Segment mehr gefunden werden kann bzw. abbrechen, wenn nächstes Segment identisch mit Startsegment ist Soetwas habe ich schonmal gemacht. Wenn ich etwas Zeit finde, kann ich mal etwas zusammenklimpern. Gruß Thomas [Diese Nachricht wurde von TommiO am 26. Apr. 2021 editiert.]
[Diese Nachricht wurde von TommiO am 26. Apr. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 26. Apr. 2021 21:27 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von TommiO:
Annahme: Linien auf Arbeitsebene sind aneinandergereiht, keine Lücken, nix doppelt oder übereinanderliegend. D.h. ein zusammenhängender Linienzug, offen oder geschlossen. Soetwas habe ich schonmal gemacht. Wenn ich etwas Zeit finde, kann ich mal etwas zusammenklimpern. Gruß Thomas
Annahme ist richtig! Wäre Klasse, wenn Du dazu etwas erstellen könntest. Noch eine Frage: Ist generell sichergestellt das die Punkte immer genau auf der Kurve sitzen? Wie hoch ist die Genauigkeit? Ist interessant für mich wegen eventuell möglichen Fehlereinflüsse. Weiss nicht ob irgendwo etwas gerundet oder interpoliert wird. Will meiner Sache sicher sein. Vielen Dank NutundFeder
[Diese Nachricht wurde von NutundFeder am 26. Apr. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 27. Apr. 2021 19:59 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
@NutUndFeder.. Knackpunkt scheint mir schon zu sein die bereits etrahierten Punkte in eine für dich 'genehme' Reihenfolge zu bringen.. Also SORTierung. In deiner Sollliste gab es keine doppelten Punkte. Aber auch dafür gäbe es ein LISP Pimitive.
Code: (remove-duplicates punkteliste :test 'sd-vec-equal-p)
oder eben mehr individualisiert mit einem lambda construct. Du sprichst häufig von "im Uhrzeigersinn" oder eben dagegen. Dafür braucht es aber einen Mittelpunkt.. Dann könnte man als SortierKriterium für die Punkte Liste den Winkel nehmen. Den Mittelpunk könnte man eventuell auch als 'average' aller Punkte bestimmen. Dies mal nur so als Denkansatz für Deine eigene Implementierung. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 28. Apr. 2021 00:09 <-- editieren / zitieren --> Unities abgeben:         
|
achim96 Mitglied Konstrukteur
 
 Beiträge: 131 Registriert: 08.07.2013 Creo Elements / Direct Modeling, V20.1.4.0 Model Manager V20.1.4.0 Part Library
|
erstellt am: 28. Apr. 2021 09:43 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Zitat: Original erstellt von NutundFeder: Mittelpunkt ist bei x=0 und y=0. 
Hallo NutundFeder Wenn es verschiedene Bögen mit verschiedenen Radien sind, haben diese auch verschiedene Mittelpunkte. Eigentlich gehört zu jedem Punktepaar auch noch ein Radiusmittelpunkt.Wenn es nur Anfang- und Endpunkte sind, dann wäre es ja eine Gerade. ------------------ freundliche Grüße Achim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 28. Apr. 2021 10:53 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Servus, ich habe mich mal ausgetobt (ich habe aber letztendlich drei assoc-Listen verwenden müssen). Für eine Kontur mit 6000 Elementen benötigt das Programm ca. 5 Minuten. bzgl. Genauigkeit: Ich denke, dass die errechneten Punkte im Rahmen der geometrischen Auflösung genau sind, d.h. 1e-6. Wenn man die Punkte via step re-importiert kann allerdings eine Abweichung zwischen Kontur und Punkt dargestellt werden. Das liegt an der Darstellung der gekrümmmten Elemente. Kreise, Bögen und Splines werden aus geraden Linienstücken gerendert. Das kann über Datei > Vorgaben > Fenster > 2D > 2D-Profilgenauigkeit zwar feiner gestellt werden, bleibt aber dennoch nur eine Näherung. Misst man den Abstand zwischen Punkt und Kontur kommt ein Wert in Größenordnung der geometrischen Auflösung heraus. Gruß Thomas Edit: verwrite --> :supersede + Letzter Punkt in Konsolenausgabe bei offenem Linienzug [Diese Nachricht wurde von TommiO am 28. Apr. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 30. Apr. 2021 09:26 <-- editieren / zitieren --> Unities abgeben:         
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021 Windows 10 Enterprise 22H2 64-Bit-Betriebssystem 13th Gen Intel(R) Core(TM) i9-13950HX 2.20 GHz RAM 64,0 GB NVIDIA RTX 3500 Ada Generation Laptop GPU Creo Elements/Direct Modeling 20.4.2
|
erstellt am: 30. Apr. 2021 20:58 <-- editieren / zitieren --> Unities abgeben:         
@ TommiO Sauber! Da hast Du gezaubert. Herzlichen Dank! Genau das habe ich gebraucht. Funktioniert dufte. Das spart einiges an Arbeit und vermeidet Fehler. Dann wäre das Thema Kurvenzug in Punkte zerlegen von meiner Seite erledigt. Jetzt nochmal kurz zu den zweiten Thema dem Umkehrprinzip, nämlich xy Daten einlesen und eine Kurve zeichnen. Am Besten auf eine Arbeitsebene. Ich habe mir so beholfen. 1. Habe in eine txt Datei erstellt. und dann geschrieben hier ein Beispiel: create_bspline :wire_part "/spline" -6,172746877;-115,538205966; -6,512169727;-115,509604741; -6,850409264;-115,477473890; complete 2. Dann eine Arbeitsebene erstellt. 3. 2D Spline Interpolation ausgewählt und den Inhalt der Text Datei rein kopiert. Das funktioniert auch mit einem 3D Spline und dann habe ich die 3D Kante auf die Arbeitsebene projiziert. Ich meine aber das diese Methode eine limietierte Anzahl an Punkten hat. Meine 1000 Punkte. Nun zur eigentlichen Frage: Seht Ihr noch andere Methoden zum erstellen des 2D Splines/Kurve (Zum Beispiel die Lisp Dateien oben)? Habe einmal kurz probiert, aber irgendwie hat es nicht sofort geklappt. Wahrscheinlich wichtig wie der Syntax aussieht bei den Lisp Tools. Steht oft nicht so richtig dabei. Könnt Ihr mich bitte bezüglich dieses Themas nochmal unterstützen? Mir geht es darum das auch relativ einfach mit hoher Genauigkeit zu tun. Mich interessieren vor allem auch die Tools wie es mit denen funktioniert. Danke und Viele Grüße NutundFeder [Diese Nachricht wurde von NutundFeder am 30. Apr. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 30. Apr. 2021 22:59 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo NutundFeder, bzgl. Spline durch Punkte ziehen: Wenn die Anzahl der Interpolationspunkte eines Splines auf 1000 begrenzt ist, wird mann den Kurvenzug wohl nicht an einem Stück zeichnen können. Dann muss man wohl den Kurvenzug aus n Splines zu je 500-1000 Punkten zeichnen. Damit an den Schnittstellen der Splines keine Unstetigkeiten entstehen kann man ja Tangentialbedingungen definieren (geht m.W. nur bei 3D-Splines). Dann das ganze auf eine AE projizieren. Fertig. Geht das in die richtige Richtung? Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 01. Mai. 2021 19:04 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Ich habe noch eine Option eingebaut, welche kurze Linien zusammenfasst. Eigentlich werden beim Schreiben der Punkte der Abstand zum zuvor geschriebenen Punkt untersucht. Ist dieser kürzer als die "Segmentlänge" wird dieser ggf. nicht geschrieben. Das reduziert die Anzahl der geschriebenen Punkte im Testbeispiel erheblich. Außerdem wird der letzte Punkt jetzt auch bei einem geschlossenen Linienzug geschrieben. Will man die rausgeschriebenen Punkte per copy&paste in den Spline-Befehl packen, darf man beim Erstellen eines geschlossen Splines den letzten Punkt nicht mitkopieren. Schönen Feiertag Thomas Edit: kleine Änderung im lisp-code Edit2: Aha - man muss alle Anhänge auswählen [Diese Nachricht wurde von TommiO am 01. Mai. 2021 editiert.] [Diese Nachricht wurde von TommiO am 01. Mai. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 02. Mai. 2021 13:14 <-- editieren / zitieren --> Unities abgeben:         
Ja geht in die Richtung. Ich habe das auch bereits so praktiziert das ich segmentweise gearbeitet habe. Irgendwie waren dann Anfang Nachfolger-Segment und Ende Vorgänger-Segment nicht verbunden. Würde gerne die Sache noch soweit optimieren, dass ich eine sichere Vorgehensweise habe. Erstellen die Werkzeuge oben denn Linienzug/Spline auch? Gruß NutundFeder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021 Windows 10 Enterprise 22H2 64-Bit-Betriebssystem 13th Gen Intel(R) Core(TM) i9-13950HX 2.20 GHz RAM 64,0 GB NVIDIA RTX 3500 Ada Generation Laptop GPU Creo Elements/Direct Modeling 20.4.2
|
erstellt am: 02. Mai. 2021 14:00 <-- editieren / zitieren --> Unities abgeben:         
|
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 02. Mai. 2021 20:34 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Servus, jetzt kann das Teil auch Splines erzeugen. Bis 900 Punkte wird's ein einteiliger Spline, ggf. geschlosssen. Ab 900 Punkte wird das ganze aus mehreren Splines zu je 800 Punkten zusammengesetzt. Weil der Spline-Befehl keine Punktliste entgegennimmt, habe ich das mit einem hässlichen "sd-put-buffer"-Konstrukt gelöst. Das startet allerdings erst dann, wenn Modeling wieder interaktiv wird, d.h. in diesem Fall, wenn der Dialog beendet wird. Vielliecht verrät mir PTC, wie man einen Spline "richtig" per lisp-code und Punkte-Liste erstellt. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
       

 Beiträge: 6385 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 03. Mai. 2021 07:12 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Leider paßt die Frage nicht hier in das Thema, möchte aber mal eben kurz drauf antworten: Zitat: Original erstellt von dcsith2: Gibt es diese Möglichkeit auch im Annotation? Beispiel: Export der X u. Y Koordinaten der Eckpunkte von Linien einer Ansicht über einen selbst definierten Nullpunkt? Bestenfalls mit Nummerierung (ähnlich einer Bohrtabelle).
So etwas haben wir hier: osd.cad.de/lisp_2d_19Wenn das nicht weiterhilft oder du noch Fragen dazu hast, stelle es bitte als eigenes neues Thema ein. ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 03. Mai. 2021 07:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo TommiO! Hallo auch an Alle! Kurz zum Hintergrund der ganzen Übung, warum ich nach einer Lösung hier suche. 1. Ich erstelle mit Hilfe verschiedener Methoden diesen Kurvenzug im CAD (den ich hier eingestellt habe). Teilweise durch rechnen bekomme ich XYZ Daten und teilweise durch einfügen von Kreisbögen oder Linien im CAD. Bei diesem 1. Schritt tuhe ich bereits XYZ Daten in Linien umwandeln um die Kontur zu bekommen. Da wäre ein Tool nicht schlecht zum erzeugen der/des Splines. 2. Ich füttere Excel mit den XYZ Daten von Deinem Tool (sprich ich zerlege die gesamte Kurve oder ein Teil von der Kurve wieder in Koordinaten). Damit ich das ganze zusammenhängend im Excel habe und nicht wieder sortieren muss. 3. Ich bekomme eine andere weitere Kurve vom Excel ausgespuckt. Diese 2. Kurve in XYZ Daten und brauch die wieder im CAD als Spline um dort eine Kontur zu fräsen. Ich müsste also unabhängig von Deinem Zerlegetool wieder einen kompletten ununterbrochenen Spline aus XYZ Daten erzeugen können am besten durch eine gute Anzahl von Punkten. Dann wäre die Sache perfekt. Vielleicht könntest Du TommiO die Funktion vom Spline nochmal in ein unabhängiges Tool packen? Ob CSV Datei oder TXT wäre wurscht. Wobei eine TXT mit Trennzeichen mir fast lieber wäre. Habe der Einfachheit halber die XYZ Daten von Deinem Tool genommen, weil ich ja die ursprüngliche Kurve mit der wieder erstellten vergleichen kann. Damit weiß ich ob das richtige rauskommt (Abweichungen da sind). Ich denke wir sind nahe dran. Danke und Grüße NutundFeder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dcsith2 Mitglied Konstrukteur
 Beiträge: 6 Registriert: 12.01.2016 Creo Elements Direct Modeling 20.1 Creo Elements Direct Drafting 20.1
|
erstellt am: 03. Mai. 2021 16:59 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
|
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 03. Mai. 2021 22:02 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
|
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 04. Mai. 2021 12:27 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 04. Mai. 2021 13:47 <-- editieren / zitieren --> Unities abgeben:         
|
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021 Windows 10 Enterprise 22H2 64-Bit-Betriebssystem 13th Gen Intel(R) Core(TM) i9-13950HX 2.20 GHz RAM 64,0 GB NVIDIA RTX 3500 Ada Generation Laptop GPU Creo Elements/Direct Modeling 20.4.2
|
erstellt am: 12. Mai. 2021 13:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo habe nochmal was. Habe die csv eingelesen und bekomme so ein komischen Splinebereich. Weiß nicht wo es herkommt. Anbei die csv und ein Screeshot. Gruß NutundFeder [Diese Nachricht wurde von NutundFeder am 12. Mai. 2021 editiert.] [Diese Nachricht wurde von NutundFeder am 12. Mai. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 12. Mai. 2021 19:49 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo NutundFeder, an den Punkten, die im Anhang aufgelistet sind, wird die spline-Kurve in eine ungünstige Richtung gezwungen. Teilweise liegt das daran, dass die Punkte dort sehr nahe beieinander liegen. Wenn du diese Punkte aus deiner csv-Datei entfernst, wird die spline mit weniger Ausreißern erzeugt. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 13. Mai. 2021 07:22 <-- editieren / zitieren --> Unities abgeben:         
Okay. Was wäre ein guter Abstand Messung von Punkt zu Punkt, der eine gute Genauigkeit bildet auch für die Punkte dazwischen? Oder was wäre bei den X Werten und Y Werten ein ausreichender Abstand? Habe dazu kein Gefühl, daher habe ich so viele Stützpunkte. Gruß NutundFeder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TommiO Mitglied Konstrukteur, CAD-Admin

 Beiträge: 31 Registriert: 18.03.2004 Modeling 20.0M060 + Modelmanager + PSI-Penta + COSIMA + FluidDraw + JIRA
|
erstellt am: 13. Mai. 2021 10:50 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Hallo NutundFeder, wenn du die Punkte in deiner csv-Datei Bereichsweise zusammenstellst, sollte der Endpunkt des einen vorangehenden Bereichs einen bestimmten Abstand vom Startpunkt des folgenden Bereichs haben. Diese beiden Punkte sollten nicht zusammenfallen, auch nicht annähernd. Im Anhang habe ich das mal etwas grafisch aufbereitet. Welchen Abstand die Stützpunkte für die Splinekurzve haben müssen: keine Ahnung. Kommt drauf an, was das später mal werden soll. Mein Bauchgefühl sagt mir: Bei dieser Bauteilgröße und -form (Kurvenkrümmung) würde mir ein Abstand von 1 mm auch reichen. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NutundFeder Mitglied Konstrukteur

 Beiträge: 36 Registriert: 20.03.2021
|
erstellt am: 15. Apr. 2025 13:23 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen. Habe eine Kontur die ich wieder zerlegen muss in xy Koordianten. Irgendwie läuft er nicht durch, obwohl die Kontur geschlossen ist. Kann ich die Arbeitsebene einemal uploaden und jemand schaut sich die an? Gruß NutundFeder [Diese Nachricht wurde von NutundFeder am 15. Apr. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 15. Apr. 2025 16:29 <-- editieren / zitieren --> Unities abgeben:          Nur für NutundFeder
Zitat: Original erstellt von NutundFeder: Irgendwie läuft er nicht durch, obwohl die Kontur geschlossen ist. Kann ich die Arbeitsebene einemal uploaden und jemand schaut sich die an?
Typische Fragen des / eines jeden Supports: a) welche Fehlermeldungen erhälst du? Kann man i.d.R. als Text kopieren. b) genauso wichtig: welches Tool, in welcher Version setzt du ein? Verweise auf den _vorhandenen_Download link wäre am besten c) wie rufst du das Tool auf? Welche Parameter, welche Randbedinungen? d) welche Version von welchem CAD Programm nutzt du? --- füll mal bitte ==>> Deine "System-Info" aus - Danke e) ob du die Workplane hier hochlädts, muss für deinen Arbeitgeber/Auftragsgeber okay sein! Viele Fragen: weil: ausser dir als Anwender und dem Thomas als Entwickler müssen sich da alle erst (wieder) reinfuchsen. Also nicht mit Infos geizen. 😏 ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |