| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Polylinien glätten (6819 mal gelesen)
|
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 13. Apr. 2005 07:16 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Cadgemeinde, ich weiss - suchen! Ja, aber da habe ich nichts befriedigendes gefunden. Am Besten seht Ihr Euch mal die Testdatei an. Die rote Polylinie ist das Original, sehr kantig, da aus einem Grafikprogramm eine Outline generiert wurde. Das kann ich nicht verhindern, da es Kundendaten sind. Zum plotten ist das aber unmöglich. Gibt es ein Programm - Lisp oder ähnliches, um diese rote Linie ungefähr so zu generieren, dass ca. die weisse herauskommt? Die weisse Linie habe ich mit der Hand nachgezeichnet! Bei mir kommt es nicht auf 10tel und 100tel an, so genau muss das nicht sein. Wäre schön, wenn Ihr mir weiterhelfen könntet. Grüsse schachtelmacher p.s. die Testdatei ist nur ein Ausschnitt!
------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thoumsen Mitglied Konstrukteur Metallbau, Betriebsinformatiker, usw usw..
Beiträge: 100 Registriert: 25.11.2003 ...
|
erstellt am: 13. Apr. 2005 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
moin moin schachtelmacher. ungesehen würde ich dir corel empfehlen. dort kann man so ziemlich alles glätten. für mich ist das in solchen fällen schon fast ein allheilmittel. gruss aus frangn ..thoumsen ------------------ >> fanatismus ist der tod jeder guten idee << Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 13. Apr. 2005 08:05 <-- editieren / zitieren --> Unities abgeben:
Hallo thoumsen, ...schon, aber wie exportierst Du die Daten dann? Wenn ich das mache habe ich zwar eine geglättete Linie aber wieder tausende von klizeklizekleinen Vektoren! Gruss schachtelmacher ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 13. Apr. 2005 08:36 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
.. Mal was zum Testen. Sowas? [Edit.. come soon] ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." [Diese Nachricht wurde von CADmium am 13. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 13. Apr. 2005 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Hallo, so ein Tool suche ich auch schon lange. Die Fa. CAM-Partner hat mit vor einigen Jahren, dafür ein Tool verkauft. Das Problem war es funktioniert nicht richtig. Wenn sich jemand die Arbeit machen will, die Lispdatei zu überarbeiten, kann ich das Tool zu Verfügung stellen. Gruß Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 13. Apr. 2005 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
|
thoumsen Mitglied Konstrukteur Metallbau, Betriebsinformatiker, usw usw..
Beiträge: 100 Registriert: 25.11.2003 ...
|
erstellt am: 13. Apr. 2005 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
schachtelmacher, hab mir mal deine dxf vorgenommen.. - in corel 11 importiert - mit knotenauswahl alle knoten der linie markiert - eine kurvenglättung (knotenreduzierung) von 5 durchgeführt - alles dann direkt als dwg-datei exportiert mit dem kurvenglättungswert muss man ein bischen spielen un das ergebnis überprüfen gruss aus frangn thoumsen ------------------ >> fanatismus ist der tod jeder guten idee << Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 13. Apr. 2005 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Hallo Schachtelmacher, schau mal, ob Dir das schon hilft. Kommt auf den Einsatzzweck an. Wichtig ist, dass es eine LWPOLYLINIE ist - sonst vorher mal 'konvert' aufrufen. Mit der Anzahl der Teilstücke erhöht sich die Genauigkeit. (defun c:redpp (/ owahl anzt pnae plit p1 p2 n nr) (print "Polylinien wählen") (setq owahl (ssget '((0 . "LWPOLYLINE")))) (setq anzt (getint "\nAnzahl der Teilstücken: ")) (setq nr 0) (repeat (sslength owahl) (command "_.divide" (ssname owahl nr) anzt "") (setq p1 (cdr (assoc 10 (entget(ssname owahl nr)) ))) (setq p2 (cdr (assoc 10 (reverse (entget(ssname owahl nr))) ))) (setq plist nil) (repeat (1- anzt) (setq pnae (cdr (assoc 10 (entget(ssname (ssget "L") 0)))) ) (setq plist (cons pnae plist)) (entdel(ssname (ssget "L") 0)) (print pnae) ) (setq n -1) (command "_pline" p1) (repeat (1- anzt) (setq n (1+ n)) (command (nth n plist)) ) (command p2) (command "") (setq nr (1+ nr)) );repeat )
Gruß Carsten edit: Alle gewählten Linien müssen in voller Länge sichtbar sein. Die neuen Linien können dann, wenn gewünscht, mit _pedit > kurve Angleichen geglättet werden. [Diese Nachricht wurde von flaschenpost am 13. Apr. 2005 editiert.]
[Diese Nachricht wurde von flaschenpost am 13. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 14. Apr. 2005 07:30 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von flaschenpost: Hallo Schachtelmacher,schau mal, ob Dir das schon hilft. ........
@ flaschenpost, habe es probiert, hilft leider nicht, denn dann müsste ich vorher wissen, wieviele Teilstücke ich brauche und fast unmöglich rauszufinden, da die Konturen sehr sehr komplex sind. Aber sonst ein schönes Programm! Danke @ thoumsen also das mit Corel 11 funktioniert schon, aber beim Exportieren habe ich Probleme nach dwg. Die Zeichnung lässt sich bei mir unter Autocad 2004 nicht öffnen - ungültige Datei. Wenn ich über dxf gehe habe ich zwar geglättete Kanten, aber trotzdem tausende Vektoren auch wenn Corel nur wenige Knoten anzeigt. Das DXF ist schlimm. Es wäre natürlich schöner ohne Corel auszukommen - export, import, bearbeiten, export, import und dann trotzdem nicht ganz das gewünschte Ergebnis! Momentan aber das einzige, da bisschen hilft. Danke Grüsse schachtelmacher ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thoumsen Mitglied Konstrukteur Metallbau, Betriebsinformatiker, usw usw..
Beiträge: 100 Registriert: 25.11.2003 ...
|
erstellt am: 14. Apr. 2005 08:07 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
moin schachtelmacher, sorry aber mit mir fällt eben erst auf dass ich dir ja ne datei anhängen wollte... ich hatte es mit corel probiert. es wurde dann direkt in acad 2000 gespeichert. in der dwg ist die linie dann als spline erzeugt worden. ich weiss natürlich nicht ob das das richtige für dich ist. hier ist sie nun.. gruss aus frangn.. thoumsen ------------------ >> fanatismus ist der tod jeder guten idee << Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 14. Apr. 2005 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Hallo Schachtelmacher, es gibt die Möglichkeit, anstatt Anzahl Teilstücke die gewünschte Teillänge anzugeben. Die wird dann in Abhängigkeit von der Länge der Polylinie etwas modifiziert, da es gleiche Teilungen ohne Rest werden. Der Vorteil wäre gleiche Teilung bei unterschiedlich langen Linien. (defun c:redpts (/ owahl anzt teil_l pnae plit p1 p2 n nr) (print "Polylinien wählen") (setq owahl (ssget '((0 . "LWPOLYLINE")))) (setq teil_l (getreal "\nLänge der Teilstücke: ")) (setq nr 0) (repeat (sslength owahl) (command "_.area" "_O" (ssname owahl nr)) (setq anzt (/ (getvar "PERIMETER") teil_l)) (if (< anzt 2) (setq anzt 2) (progn (if (> (- anzt (fix anzt)) 0.5) (setq anzt (1+ (fix anzt))) (setq anzt (fix anzt)) ) ) ) (command "_.divide" (ssname owahl nr) anzt "") (setq p1 (cdr (assoc 10 (entget(ssname owahl nr)) ))) (setq p2 (cdr (assoc 10 (reverse (entget(ssname owahl nr))) ))) (setq plist nil) (repeat (1- anzt) (setq pnae (cdr (assoc 10 (entget(ssname (ssget "L") 0)))) ) (setq plist (cons pnae plist)) (entdel(ssname (ssget "L") 0)) (print pnae) ) (setq n -1) (command "_pline" p1) (repeat (1- anzt) (setq n (1+ n)) (command (nth n plist)) ) (command p2) (command "") (setq nr (1+ nr)) );repeat ) Gruß Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 16. Apr. 2005 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
So, wie versprochen (mit neuem Ansatz) : Funktion im Anhang reduziert -wenn möglich- die Anzahl der Stützpunkte bei den ausgewählten/auszuwählenden Polylinien. Die abgefragte Korridorbreite gibt den maximalen Abstand der upgedaten Kurve zur ursprünglichen Kurve an. Viel Spaß beim testen. Edit : Anhang-Update ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." [Diese Nachricht wurde von CADmium am 19. Apr. 2005 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 554 Registriert: 09.08.2001
|
erstellt am: 19. Apr. 2005 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
Hallo! Ich habe das VertexReduce mal für das beiliegende Beispiel ausprobiert und erhielt keine ganz korrekte Lösung. (Mein Kanal2d-Projekt lieferte die Anlage 2.) Woran liegt's? Ich nehme mal an, unsere Ansätze sind ähnlich: Geradengleichung aus 2 Punkten PA und PE .Untersuchung, ob irgendein Zwischen-Punkt zwischen PA und PE weiter als die halbe Kanalbreite von PA-->PE entfernt ist .Wenn ja: PA wird PE .Wenn nein: nächster Punkt wird PA usw. Mit besten Grüßen aus der Rhön Jochen www.black-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 19. Apr. 2005 22:18 <-- editieren / zitieren --> Unities abgeben: Nur für schachtelmacher
@scj : hab ich auch schon bemerkt, liegt an meiner fehlerhaften Nutzung der Property Coordinates, ist aber bereits berichtigt. Ansonsten verfolge ich einen etwas anderen Ansatz, der auch bei gekrümmten Kurven greift, auch wenn das vielleicht zu Lasten des Laufzeitverhaltens geht. Bei Interesse können wir das gerne mal intern ausdiskutieren. Update : Siehe etwas weiter oben! ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |