哪一个更好?
代码1(defun c:tt ()
(vl-load-com)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq ps (getvar "peditaccept"))
(setvar "peditaccept" 1)
(setq ss (ssget '((0 . "LINE"))))
(command "pedit" "m" ss "" "j" "" "")
(setq en1 (entlast))
(if (> (rem (cdr (assoc 70 (entget en1))) 2) 0)
(progn
(command "_region" en1 "")
(setq en2 (entlast))
(setq obj2 (vlax-ename->vla-object en2))
(setq area (vla-get-Area obj2))
(setq ptc (vlax-safearray->list
(vlax-variant-value (vla-get-centroid obj2))
)
)
(setq radius (sqrt (/ area pi)))
(command "_circle" ptc radius)
(entdel en2)
)
(progn
(setq obj1 (vlax-ename->vla-object en1))
(setq pts (vlax-curve-getstartpoint obj1))
(setq pte (vlax-curve-getendpoint obj1))
(setq dis (vlax-curve-getdistAtPoint obj1 pte))
(setq ptm (vlax-curve-getpointatdist obj1 (* dis 0.5)))
(command "_arc" pts ptm pte)
(entdel en1)
)
)
(setvar "peditaccept" ps)
(setvar "osmode" os)
(princ)
)
代码2
(defun c:tt ()
(vl-load-com)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq ps (getvar "peditaccept"))
(setvar "peditaccept" 1)
(setq ss (ssget '((0 . "LINE"))))
(setq s1 (entlast) ss2 (ssadd));;;;;;;;;;;
(command "pedit" "m" ss "" "j" "" "")
(while (setq s1 (entnext s1)) (ssadd s1 ss2));;;;;;;;
(setq en1 (entlast))
(if (> (rem (cdr (assoc 70 (entget en1))) 2) 0)
(progn
(command "_region" en1 "")
(setq en2 (entlast))
(setq obj2 (vlax-ename->vla-object en2))
(setq area (vla-get-Area obj2))
(setq ptc (vlax-safearray->list
(vlax-variant-value (vla-get-centroid obj2))
)
)
(setq radius (sqrt (/ area pi)))
(command "_circle" ptc radius)
(entdel en2)
)
(progn
(setq obj1 (vlax-ename->vla-object en1))
(setq pts (vlax-curve-getstartpoint obj1))
(setq pte (vlax-curve-getendpoint obj1))
(setq dis (vlax-curve-getdistAtPoint obj1 pte))
(setq ptm (vlax-curve-getpointatdist obj1 (* dis 0.5)))
(command "_arc" pts ptm pte)
(entdel en1)
)
)
(setvar "peditaccept" ps)
(setvar "osmode" os)
(princ)
)
测试图纸:
za2.dwg
页:
[1]