无尘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)
)
页: 1 2 [3]
查看完整版本: 求修剪圆内直线和多段线!