lichh_2003 发表于 2006-3-30 09:09:00

求助:怎么样可以在闭和内裁剪出里面的图元??

求助各位,怎么样可以将一个闭和区域内的所有图元裁剪出来,什么方法都可以,
谢谢。最好能给小弟完整的事例谢谢

wyj7485 发表于 2006-3-30 17:40:00

给一个局部放大程序供参考:
(defun c:FD (/    set1 set2 set3 set4 cpoint   r    p    kn
      ep   sspt1pt2pt3 pt4dh   smw1 me   me1xb
      yb   pppn   kk   me2 me3smw2 me4me5x1y1
       )
(prompt "\n请指定放大区域:\n")
(setq set1 (getvar "osmode"))
(setq set2 (getvar "orthomode"))
(SETQ SET3 (GETVAR "BLIPMODE"))
(SETQ SET4 (GETVAR "CMDECHO"))
(SETVAR "BLIPMODE" 0)
(setvar "osmode" 0)
(setvar "orthomode" 0)
(SETVAR "CMDECHO" 0)
(command "circle" pause pause)
(setq cpoint (cdr (assoc 10 (entget (entlast)))))
(setq r (cdr (assoc 40 (entget (entlast)))))
(setq pt1 (polar cpoint (/ pi 2) (+ 0.01 r)))
(setq pt2 (polar pt1 (* pi 0.75) 10))
(setq pt3 (polar pt2 pi 8))
(setq pt4 (polar pt3 (* pi 0.25) 2))
(command "line" pt1 pt2 pt3 "")
(setq dh (getstring "\n 请输入局部代号:"))
(command "text" pt4 "4" "0" dh)
(setq p (getpoint "\n 请指定放大图放置位置:"))
(setq k (getreal "\n 请指定放大倍数:"))
(command "copy" "cp")
(setq n 0)
(repeat 180
    (command (polar cpoint (/ (* 2 n pi) 180) r))
    (setq n (1+ n))
)
(command "" "" cpoint p)
(setq n 0)
(setvar "PICKBOX" 5)
(command "ZOOM" "C" P (* 3 r))
(command "circle" p r)
(setq ep (entlast))
(command "TRIM" EP "")(repeat 180(command (polar p (/ (* 2 n pi) 180) (* r 1.1)))(command "f" (polar p (/ (* 2 n pi) 180) (* r 1.1)))(setq n (+ n 1))(command (polar p (/ (* 2 n pi) 180) (* r 1.01)) ""))(command "")
(command "zoom" "p")
(setq ss (ssget "c"
    (list (- (car p) r) (- (cadr p) r))
    (list (+ (car p) r) (+ (cadr p) r))
    )
)
(command "scale" ss "" p k)
(command "erase" ep "")
(setq smw1 (list 0 0 0))
(setq smw2 (polar smw1 0 24))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(command "text" smw1 "4" "0" (strcat dh "部放大" ))
(setq me (entlast))
(setq me1 (entget me))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(command "line" smw1 smw2 "")(setq me2 (entlast))(setq me3 (entget me2));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(command "text" smw1 "4" "0" (strcat(rtos k) ":1" ))(setq me4 (entlast))(setq me5 (entget me4));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(setq pn T)(princ"\n 请确定说明文字位置:")(while pn(setq pp (grread t))(setq kk (car pp))(setq pp (cadr pp))(setq xb (nth 0 pp))(setq yb (nth 1 pp))(setq x1 (- xb 36))(setq y1 (+ yb 12));;;;;;;;;;;;;;;;;;;;;;;;;;;(setq me1 (subst (list 10 x1 y1)(assoc 10 me1) me1))(entmod me1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;(setq me3 (subst (list 10 (- x1 4) (- y1 2))(assoc 10 me3) me3))(setq me3 (subst (list 11 (+ x1 20) (- y1 2))(assoc 11 me3) me3))(entmod me3);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(setq me5 (subst (list 10 (+ x1 4) (- y1 8))(assoc 10 me5) me5))(entmod me5);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(if (= kk 3)(setq pn nil));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;)(command "redraw")(setvar "osmode" set1)(setvar "orthomode" set2)(setvar "blipmode" set3)(setvar "cmdecho" set4)(PRINC))



)

lichh_2003 发表于 2006-4-7 08:35:00

能不能帮忙,把选择圆该为自定义的任意闭和多边形呢

lichh_2003 发表于 2006-4-14 10:11:00

楼住,来没来啊。帮帮忙啊,我不动LISP
页: [1]
查看完整版本: 求助:怎么样可以在闭和内裁剪出里面的图元??