PDA

View Full Version : Turning circle into lines


Matt Mercer
2006-02-27, 08:03 PM
A general question - does anyone have a lisp routine that can change a circle into a line?

Thanks Matt

CADmium
2006-02-27, 09:27 PM
such function ? or like "divide"?


(defun DT:CIRCLE->LWPL (CIRCLE / OBJDATA MIDLEPKT RADIUS)
(if(and(=(type CIRCLE)'ENAME)
(setq OBJDATA(entget CIRCLE))
(=(cdr(assoc 0 OBJDATA))"CIRCLE")
)
(progn
(setq MIDLEPKT (cdr (assoc 10 OBJDATA))
RADIUS (cdr (assoc 40 OBJDATA))
)
(entmake
(vl-remove-if '(lambda(X) (not(cdr X)))
(list
'(0 . "LWPOLYLINE" )
'(100 . "AcDbEntity" )
(cons 67 (cdr(assoc 67 OBJDATA)) )
(cons 410 (cdr(assoc 410 OBJDATA)) )
(cons 8 (cdr(assoc 8 OBJDATA)) )
(cons 62 (cdr(assoc 62 OBJDATA)) )
(cons 420 (cdr(assoc 420 OBJDATA)) )
(cons 430 (cdr(assoc 430 OBJDATA)) )
(cons 6 (cdr(assoc 6 OBJDATA)) )
(cons 48 (cdr(assoc 48 OBJDATA)) )
(cons 370 (cdr(assoc 370 OBJDATA)) )
'(100 . "AcDbPolyline" )
'(90 . 2)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 (list (+ (car MIDLEPKT) RADIUS) (cadr MIDLEPKT)))
'(40 . 0.0)
'(41 . 0.0)
'(42 . 1.0)
(cons 10 (list (- (car MIDLEPKT) RADIUS) (cadr MIDLEPKT)))
'(40 . 0.0)
'(41 . 0.0)
'(42 . 1.0)
'(210 0.0 0.0 1.0)
)
)
)
(entdel (cdr(assoc -1 OBJDATA)))
)
)
(princ)
)
(defun C:CIRCLE->LWPL ( / AUSWAHL CIRCLE INDEX)
(if(or(setq AUSWAHL (ssget "I" '((0 . "CIRCLE"))))
(setq AUSWAHL (ssget '((0 . "CIRCLE"))))
)
(progn
(setq INDEX -1)
(repeat(sslength AUSWAHL)
(DT:CIRCLE->LWPL (ssname AUSWAHL (setq INDEX(1+ INDEX))))
)
)
)
)

it's from here (http://ww3.cad.de/foren/ubb/Forum145/HTML/000885.shtml#000002)

fixo
2006-02-27, 09:45 PM
Here is another one


(defun C:c2l()
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq sset (ssget "_:S" '((0 . "CIRCLE"))))
(if sset (progn
(setq en (ssname sset 0)
elist (entget en)
cpt (cdr (assoc 10 elist))
rad (cdr (assoc 40 elist))
num (getint "\nEnter number of segments : \n"))
(command "_.polygon" num cpt "_I" rad)
(setq polyg (entlast))
(command "explode" polyg "")))
;;; (command "erase" en "");uncomment by suit
(setvar "osmode" 703)
(setvar "cmdecho" 1)
(princ)
)

~'J'~