 - ;;碎线转圆,弧
- (defun c:test (/ ss s1 ss2)
- (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"))))
- (if ss
- (progn
- (setq s1 (entlast))
- (setq ss2 (ssadd))
- (command "pedit" "m" ss "" "j" "" "")
- (while (setq s1 (entnext s1))
- (ssadd s1 ss2)
- )
-
- (setq l (sslength ss2))
- (setq i 0)
- (repeat l
- (setq ssn (ssname ss2 i))
- (if (> (rem (cdr (assoc 70 (entget ssn))) 2) 0)
- (progn
- (command "_region" ssn "")
- (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 ssn))
- (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 ssn)
- )
- )
- (setq i (1+ i))
- )
- )
- )
- (setvar "peditaccept" ps)
- (setvar "osmode" os)
- (princ)
- )
|