77077 发表于 2022-7-5 22:33:44

哪一个更好?

代码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]
查看完整版本: 哪一个更好?