您未附调试用图纸(*.dwg)
先提供初步用的 ....
- (defun c:trc (/ oldcmdcho oldosmode enobj kk endata)
- ;; hy_trim_in
- (setq oldcmdcho (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (setq oldosmode (getvar "osmode"))
- (setvar "osmode" 0)
- (command "ucs" "w")
- (COMMAND "REGEN")
- (princ "\n选圆: ")
- (setq enobj (ssname (ssget ":S" '((0 . "Circle"))) 0))
- ;|
- (initget "1 2")
- (setq kk (getkword "\n剪除内部物体<1>,剪除外部物体<2>:<1?>"))
- (if (= kk nil)
- (setq kk "1")
- )
- (setq endata (entget enobj))
- (cond
- ;; 如果enobj为一个圆;;;;;;;
- ((= (cdr (assoc 0 endata)) "CIRCLE")
- |;
- (setq endata (entget enobj)
- ssCir (ssget "X" (list (assoc 0 endata) (assoc 8 endata)))
- idx 0
- )
- (while (setq enobj (ssname ssCir idx))
- (setq idx (1+ idx))
- (hy_trim_in_circle)
- )
- ;|
-
- (t (progn (alert "\n你选的物体不是圆!重新确认") (exit)))
- );end cond
-
- |;
-
- (setvar "cmdecho" oldcmdcho)
- (setvar "osmode" oldosmode)
- (prin1)
- )
- ;;;;;;;;;;剪除圆内或外部的物体;;;;;;;;;;
- (defun hy_trim_in_circle (/ centerpoint radius point_list be_angle jk viu_point item)
- (setq endata(entget enobj))
- (setq centerpoint (cdr (assoc 10 endata)))
- (setq radius (cdr (assoc 40 endata)))
- (setq jk (- radius 0.01))
- (setq point_list '())
- ;; 以0.5度为一阶,半径缩小0.05圆上所有点
- ;;(setq be_angle 0);起始角度为0
- (setq i 0)
- ;;计数器归0
- (repeat 720
- (setq viu_point (polar centerpoint
- (/ (* 0.5 i pi) 180)
- jk
- ) ;end polar
- )
- (setq point_list (cons viu_point point_list))
- (setq i (1+ i))
- ) ;end repeat
- (command "undo" "be")
- (command "trim" enobj "" "f")
- (foreach item point_list (command item))
- (command "" "")
- (command "undo" "e")
- )
|