| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Spline in Polyline ??? (11311 mal gelesen)
|
voelkle Mitglied
Beiträge: 36 Registriert: 17.05.2001
|
erstellt am: 06. Mai. 2002 19:00 <-- editieren / zitieren --> Unities abgeben:
|
scj Mitglied
Beiträge: 555 Registriert: 09.08.2001
|
erstellt am: 06. Mai. 2002 19:41 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Mit Hilfe von DIVIDE oder MEASURE lassen sich Splines in Punktlisten zerlegen, über die dann Polylinien (2d oder 3d) nachgezeichnet werden können. Ein entsprechendes Programm gibt es zur Zeit noch bei mir und in absehbarer Zeit (nach Pfingsten vermutlich) bei www.black-cad.de zum download. Beste Grüße von Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seeland Mitglied CAD Support
Beiträge: 193 Registriert: 18.01.2002 Autocad Map 2007, Landcad 2007
|
erstellt am: 07. Mai. 2002 07:41 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
hallo voelke Das geht z.B. mit meinem nachfolgenden SPL2POL.LSP
;----------------SPL2POL.LSP--------------------------------- ;-------Change of an SPLINE to a POLYLINE-------------------- ;Given is an SPLINE. It will be changed into an approximated POLYLINE. ;--spli : spline ;--aufl : number of vertices for the approximation ;--pt : vertex ;------------------------------------------------------------- ;------------------------------------------------------------- ;(defun C:spl2pol (/ spli aufl elem p0 pkt ll) (defun C:spl2pol () ;------------------------------------------------------------- (setq pktliste nil) (print "Please select a spline :") (setq spli (ssget)) (setq aufl (getint "\nnumber of vertices:<300> : ")) (if (= nil aufl) (setq aufl 300)) (setq elem (entget (ssname spli 0))) (setq p0 (cdr (assoc 10 (entget (ssname spli 0))))) (if (= (cdr (assoc 0 elem)) "SPLINE") (progn (command "_divide" spli aufl) (setq pktsatz (ssget "_p")) (setq ll (sslength pktsatz)) ;(PRINT ll) (command "_3dpoly") (command p0) (setq i -1) (setq ll (- ll 1)) (while (< i ll) (progn (setq i (+ 1 i)) (setq pkt (cdr (assoc 10 (entget (ssname pktsatz i))))) (command pkt) ) ) (command "") ) (princ (strcat (cdr (assoc 0 elem)) " is no SPLINE----->EXIT")) ) (command "_ERASE" pktsatz nil) (princ) ) mfg seeland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 07. Mai. 2002 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Hi, oder hiermit: (Das [Doppelpunkt] bitte durch einen Doppelpunkt ersetzen, wird hier im Forum falsch dargestellt...) [pre] (defun c[Doppelpunkt]SPL2PL (/ O:ECHO SPL1 SPP SPL2 A SPLL X I V SPLLEN) (princ "\nSplines werden aus dem Auswahlsatz gefiltert.\n") (setq O:ECHO (getvar "CMDECHO") SPLL (ssget (list (cons 0 "SPLINE"))) X 0 ) (setvar "CMDECHO" 0) (IF (/= SPLL nil) (progn (setq SPLLEN (sslength SPLL)) (repeat SPLLEN (setq SPL1 (entget (ssname SPLL X)) SPP (cdr (assoc 10 SPL1)) X (1+ X) I 0 V (cdr (assoc 73 SPL1)) ) (entmake (list (cons 0 "POLYLINE") (cons 8 (cdr (assoc 8 SPL1))) (cons 66 1) ) ) (repeat (cdr (assoc 73 SPL1)) (setq SPL2 (cdr (member (cons 10 SPP) SPL1)) A (list (cons 0 "VERTEX") (cons 10 SPP)) SPP (cdr (assoc 10 SPL2)) I (1+ I) ) (entmake A) ) (entmake '((0 . "SEQEND"))) (entdel (cdr (assoc -1 SPL1))) (command "_PEDIT" "_LAST" "_LT" "_ON" "_S" "") (princ (strcat "\r" (itoa X) " / " (itoa SPLLEN) " Splines konvertiert.")) ) ) ) (setvar "CMDECHO" O:ECHO) (princ) ) (princ) [/pre] Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harry K Mitglied Bau-Ingenieur
Beiträge: 42 Registriert: 05.11.2001
|
erstellt am: 07. Mai. 2002 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Hallo voelkle, falls es Dir was nutzt, wenn man eine Zeichnung unter Acad12 speichert, werden z.b. alle Splines zu Polylinien. Mit den Express-Tools kannst Du ebenfalls mit "Flatten" aus Splines Polylinien machen. Gruß Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 07. Mai. 2002 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
scj Mitglied
Beiträge: 555 Registriert: 09.08.2001
|
erstellt am: 07. Mai. 2002 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Nachfragen nach SPLTOPOL.LSP bei mir haben sich erübrigt, da SEELAND meinen Quelltext der alten Version ins Forum gestellt hat. Den neuen gibts nach Pfingsten - s.o. Viel Spass beim Konvertieren Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004 Solid Edge SE6 Solid Works 2014 Creo 2 Parametric Inventor 7 - SP1 Windows 7 64bit 16 GB RAM
|
erstellt am: 17. Nov. 2004 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
hi zusammen! geht das auch umgekehrt? aus einer 2d polylinie einen spline machen? danke im voraus ------------------ !!! Ehem. Meex !!! "Es ist nie ganz richtig irgend etwas für ganz falsch zu halten!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Nov. 2004 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Zitat: Original erstellt von MechMex: hi zusammen!geht das auch umgekehrt? aus einer 2d polylinie einen spline machen? danke im voraus
guckst du hier .. aber ob dich das Ergebnis zufriden stellt, ein Spline ist eben duch mehr als seine Stüztpunkte definiert. ------------------ - 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 |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ...
|
erstellt am: 17. Nov. 2004 08:45 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
Ja einfach die Stützpunkte auslesen und dann die Polylinie damit erstellen => führt natürlich zur "optischen" Unterschieden Code:
;;;(prompt "\nType \"VL-POLY\" to run........") (defun c: pline2file (/ theobj thelist n xval yval fname fn) ;;;load the visual lisp extensions (vl-load-com) ;;;get the entity and entity name (setq theobj (car (entsel "\nPolylinie auswählen: "))) ;;;convert to vl object (setq theobj (vlax-ename->vla-object theobj)) ;;;check if it's a polyline (if (= (vlax-get-property theobj 'ObjectName) "AcDbPolyline") ;;;if it is, do the following (progn ;;;retrieve the coordinates (setq thelist (vlax-get-property theobj 'coordinates)) ;;;convert to a list (setq thelist (vlax-safearray->list (variant-value thelist))) ;;;zero the counter (setq n 0) ;;;create a text file (setq fname "C:/Punktkoordinaten.txt") ;;;open it to write (setq fn (open fname "w")) ;;;write the file header ;;;(write-line "PolyLine X and Y Coordinates" fn) ;;;underline the header ;;;(write-line "*****************************************" fn) ;;;start the loop (repeat (/ (length thelist) 2) ;;;;;;get the x coordinate (setq xval (rtos (nth n thelist))) ;;;;;;increase the counter (setq n (1+ n)) ;;;;;;get the y coordinate (setq yval (rtos (nth n thelist))) ;;;;;;write the x coordinate to the file ;;;(write-line (strcat "X-Value : " xval) fn) ;;;;;;write the x coordinate to the file ;;;(write-line (strcat "Y-Value : " yval) fn) ;;;;;;write booth coordinates (write-line (strcat xval "," yval) fn) ;;;add a seperator ;;;(write-line "-----------------------------" fn);;;increase the counter (setq n (1+ n)) ) ;;;repeat ;;;close the file (close fn) (Princ "\nDatei \"Punktkoordinaten.txt\" auf dem Laufwerk C abgespeichert." ) ) ;;;progn ;;;it's not a polyline, inform the user (alert "Das war keine Polylinie !") ) ;;;if (princ) ) ;;;defun ;;;------------------------ ;;;clean loading (princ)
------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004
|
erstellt am: 17. Nov. 2004 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004 Solid Edge SE6 Solid Works 2014 Creo 2 Parametric Inventor 7 - SP1 Windows 7 64bit 16 GB RAM
|
erstellt am: 17. Nov. 2004 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3424 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 17. Nov. 2004 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004
|
erstellt am: 17. Nov. 2004 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
also ich komme nicht weiter.. ist die datei endung .dvb nicht ok? ------------------ !!! Ehem. Meex !!! "Es ist nie ganz richtig irgend etwas für ganz falsch zu halten!" [Diese Nachricht wurde von MechMex am 17. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 17. Nov. 2004 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
vielleicht hilft dir das ja weiter? Code:
(defun c:spl2pl (/ as) (defun LWPLIST (ENAM / ELIST PLIST) (if ENAM (setq ELIST (entget ENAM) PLIST (apply 'append (mapcar '(lambda (X) (if (= 10 (car X)) (list (cdr X)) ) ;_ end of if ) ;_ end of lambda ELIST ) ;_ end of mapcar ) ;_ end of apply ) ;_ end of setq ) ;_ end of if PLIST ) ;_ end of defun (defun ent-spline (lst-pts closed) (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 70 (if closed 11 8 ) ;_ end of if ) ;_ end of cons '(71 . 3) (cons 74 (if closed (1+ (length lst-pts)) (length lst-pts) ) ;_ end of if ) ;_ end of cons ) ;_ end of list (if closed (cons (cons 11 (last lst-pts)) (mapcar '(lambda (x) (cons 11 x)) lst-pts ) ;_ end of mapcar ) ;_ end of cons (mapcar '(lambda (x) (cons 11 x)) lst-pts ) ;_ end of mapcar ) ;_ end of if ) ;_ end of append ) ;_ end of entmake ) ;_ end of defun (setq as (entget (car (entsel)))) (ent-spline (LWPLIST (cdr (assoc -1 as))) (if (= (cdr (assoc 70 as)) 1) T NIL ) ;_ end of if ) ;_ end of ent-spline )
------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004
|
erstellt am: 17. Nov. 2004 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
hi leute ! wie ich eine lisp ausführe weiß ich. aber wie führe ich einen vba code aus? welche datei muß ich erstellen? wie starte ich die datei? gibt es da tutorial? danke mex ------------------ !!! Ehem. Meex !!! "Es ist nie ganz richtig irgend etwas für ganz falsch zu halten!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 17. Nov. 2004 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004
|
erstellt am: 17. Nov. 2004 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
|
MechMex Mitglied
Beiträge: 337 Registriert: 25.07.2004 Solid Edge SE6 Solid Works 2014 Creo 2 Parametric Inventor 7 - SP1 Windows 7 64bit 16 GB RAM
|
erstellt am: 17. Nov. 2004 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für voelkle
so leute! da war ich ja voll am holzweg oder? das ist ja alles lisp dateien? da benötige ich doch kein vb? na ja trotzdem thx an alle lg mex ------------------ !!! Ehem. Meex !!! "Es ist nie ganz richtig irgend etwas für ganz falsch zu halten!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |