无尘235
发表于 2021-1-31 22:28:37
xiaxiang 发表于 2011-11-16 16:41
多谢大神!
magicheno
发表于 2022-11-25 01:47:49
感谢大佬分享
xzd716
发表于 2022-11-26 10:19:36
多谢xiaxiang分享!
zhangrunze
发表于 2024-4-1 08:58:48
xiaxiang 发表于 2011-11-16 16:41
这个还可以连圆圈内的文字一并删除~
超人黄
发表于 2024-4-7 11:39:30
每天一学习
tender138
发表于 2025-3-14 20:54:09
xiaxiang 发表于 2011-11-16 16:41
非常好的程序,能否改为块内圆剪切?
season_88
发表于 2025-3-30 10:48:44
谢谢楼主分享
fyw12345
发表于 2025-5-16 10:20:56
保留圆内文字 +循环
(defun c:sy ( / circ_pts lst ang inc tmp seg pt ent
ctrim_err x f_pts svd_os svd_cmd svd_err)
(defun ctrim_err (s)
(if(/= s "Function cancelled")
(princ(strcat "\n\n" s)) )
(setvar "cmdecho" svd_cmd)
(setvar "osmode" svd_os)
(setq *error* svd_err)
)
(defun circ_pts (enm)
(setq lst (entget enm)
ang (* pi 2)
inc (/ ang 64)
tmp '()
seg 65
)
(repeat seg
(setq pt (polar(cdr(assoc 10 lst))ang
(-(cdr(assoc 40 lst))0.01))
ang (+ inc ang)
)
(setq tmp(cons pt tmp))
)
tmp
)
(setq ent (car(entsel "\nSelect circle: "))
svd_err *error*
*error* ctrim_err
svd_os(getvar "osmode")
svd_cmd (getvar "cmdecho")
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(while ent
(if(and ent
(=(cdr(assoc 0(entget ent)))"CIRCLE")
)
(progn
(setq f_pts(circ_pts ent))
(command "trim" ent "" "f") ;run twice in case the same
(foreach x f_pts(command x));object intersects circle twice
(command "" "")
(command "trim" ent "" "f")
(foreach x f_pts(command x))
(command "" "")
;(if(setq x(ssget "wp" f_pts))
; (command "erase" x "")
;)
)
)
(setq ent (car(entsel "\nSelect circle: "))
svd_err *error*
*error* ctrim_err
svd_os(getvar "osmode")
svd_cmd (getvar "cmdecho")
)
)
(setvar "cmdecho" svd_cmd)
(setvar "osmode" svd_os)
(setq *error* svd_err)
(princ)
)