0 Members and 1 Guest are viewing this topic.
(defun c:el2spl ( / CE CH DXF11 DXF40 EL ELSPL PTST SP1 SP1CV SP1EN SP1ST SP2 SP2CV SP2EN SP2ST SP3 SP3CV SP3EN SP3ST SP4 SP4CV SP4EN SP4ST SPSS SS ) (setq ss (ssget "_:E:S:L" '((0 . "ELLIPSE")))) (setq el (ssname ss 0)) (setq ce (cdr (assoc 10 (entget el)))) (setq dxf11 (cdr (assoc 11 (entget el)))) (setq dxf40 (cdr (assoc 40 (entget el)))) (setq ptst (mapcar '+ ce dxf11)) (setq sp1st ptst) (setq sp1en (polar ce (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp1cv (polar sp1st (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp1 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp1st) (cons 41 1.0) (cons 10 sp1cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp1en) (cons 41 1.0)) ))) (setq sp2st sp1en) (setq sp2en (polar ce (angle ptst ce) (distance ptst ce))) (setq sp2cv (polar sp2en (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp2 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp2st) (cons 41 1.0) (cons 10 sp2cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp2en) (cons 41 1.0)) ))) (setq sp3st sp2en) (setq sp3en (polar ce (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp3cv (polar sp3st (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp3 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp3st) (cons 41 1.0) (cons 10 sp3cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp3en) (cons 41 1.0)) ))) (setq sp4st sp3en) (setq sp4en sp1st) (setq sp4cv (polar sp4en (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp4 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp4st) (cons 41 1.0) (cons 10 sp4cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp4en) (cons 41 1.0)) ))) (setq spss (ssadd)) (ssadd sp1 spss) (ssadd sp2 spss) (ssadd sp3 spss) (ssadd sp4 spss) (vl-cmdf "_.splinedit" sp1 "j" spss "" "") (setq elspl (entlast)) (initget 1 "Yes No") (setq ch (getkword "\nErase original ellipse and leave spline (Yes/No) : ")) (if (eq ch "Yes") (entdel el))(princ))
(defun c:el2spl ( / CE CH DXF11 DXF40 EL ELSPL PTST SP1 SP1CV SP1EN SP1ST SP2 SP2CV SP2EN SP2ST SP3 SP3CV SP3EN SP3ST SP4 SP4CV SP4EN SP4ST SS ) (setq ss (ssget "_:E:S:L" '((0 . "ELLIPSE")))) (setq el (ssname ss 0)) (setq ce (cdr (assoc 10 (entget el)))) (setq dxf11 (cdr (assoc 11 (entget el)))) (setq dxf40 (cdr (assoc 40 (entget el)))) (setq ptst (mapcar '+ ce dxf11)) (setq sp1st ptst) (setq sp1en (polar ce (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp1cv (polar sp1st (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp1 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp1st) (cons 41 1.0) (cons 10 sp1cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp1en) (cons 41 1.0)) ))) (setq sp2st sp1en) (setq sp2en (polar ce (angle ptst ce) (distance ptst ce))) (setq sp2cv (polar sp2en (+ (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp2 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp2st) (cons 41 1.0) (cons 10 sp2cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp2en) (cons 41 1.0)) ))) (setq sp3st sp2en) (setq sp3en (polar ce (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp3cv (polar sp3st (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp3 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp3st) (cons 41 1.0) (cons 10 sp3cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp3en) (cons 41 1.0)) ))) (setq sp4st sp3en) (setq sp4en sp1st) (setq sp4cv (polar sp4en (- (angle ptst ce) (/ PI 2.0)) (* dxf40 (distance ptst ce)))) (setq sp4 (entmakex (append '((0 . "SPLINE") (100 . "AcDbEntity") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 12) (71 . 2) (72 . 6) (73 . 3) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 1.0) (40 . 1.0) (40 . 1.0)) (list (cons 10 sp4st) (cons 41 1.0) (cons 10 sp4cv) (cons 41 (/ (sqrt 2.0) 2.0)) (cons 10 sp4en) (cons 41 1.0)) ))) (initget 1 "Yes No") (setq ch (getkword "\nErase original ellipse and leave spline (Yes/No) : ")) (if (eq ch "Yes") (entdel el))(princ))