求助:怎么样可以在闭和内裁剪出里面的图元??
<P>求助各位,怎么样可以将一个闭和区域内的所有图元裁剪出来,什么方法都可以,</P><P>谢谢。最好能给小弟完整的事例谢谢</P> <P>给一个局部放大程序供参考:</P>
<P>(defun c:FD (/ set1 set2 set3 set4 cpoint r p k n<BR> ep ss pt1 pt2 pt3 pt4 dh smw1 me me1 xb<BR> yb pp pn kk me2 me3 smw2 me4 me5 x1 y1<BR> )<BR> (prompt "\n请指定放大区域:\n")<BR> (setq set1 (getvar "osmode"))<BR> (setq set2 (getvar "orthomode"))<BR> (SETQ SET3 (GETVAR "BLIPMODE"))<BR> (SETQ SET4 (GETVAR "CMDECHO"))<BR> (SETVAR "BLIPMODE" 0)<BR> (setvar "osmode" 0)<BR> (setvar "orthomode" 0)<BR> (SETVAR "CMDECHO" 0)<BR> (command "circle" pause pause)<BR> (setq cpoint (cdr (assoc 10 (entget (entlast)))))<BR> (setq r (cdr (assoc 40 (entget (entlast)))))<BR> (setq pt1 (polar cpoint (/ pi 2) (+ 0.01 r)))<BR> (setq pt2 (polar pt1 (* pi 0.75) 10))<BR> (setq pt3 (polar pt2 pi 8))<BR> (setq pt4 (polar pt3 (* pi 0.25) 2))<BR> (command "line" pt1 pt2 pt3 "")<BR> (setq dh (getstring "\n 请输入局部代号:"))<BR> (command "text" pt4 "4" "0" dh)<BR> (setq p (getpoint "\n 请指定放大图放置位置:"))<BR> (setq k (getreal "\n 请指定放大倍数:"))<BR> (command "copy" "cp")<BR> (setq n 0)<BR> (repeat 180<BR> (command (polar cpoint (/ (* 2 n pi) 180) r))<BR> (setq n (1+ n))<BR> )<BR> (command "" "" cpoint p)<BR> (setq n 0)<BR> (setvar "PICKBOX" 5)<BR> (command "ZOOM" "C" P (* 3 r))<BR> (command "circle" p r)<BR> (setq ep (entlast))<BR> (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 "")<BR> (command "zoom" "p")<BR> (setq ss (ssget "c"<BR> (list (- (car p) r) (- (cadr p) r))<BR> (list (+ (car p) r) (+ (cadr p) r))<BR> )<BR> )<BR> (command "scale" ss "" p k)<BR> (command "erase" ep "")<BR> (setq smw1 (list 0 0 0))<BR> (setq smw2 (polar smw1 0 24))<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(command "text" smw1 "4" "0" (strcat dh "部放大" ))<BR> (setq me (entlast))<BR> (setq me1 (entget me))<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(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))</P>
<P> </P>
<P> </P>
<P> </P>
<P>)</P> <P>能不能帮忙,把选择圆该为自定义的任意闭和多边形呢</P> 楼住,来没来啊。帮帮忙啊,我不动LISP
页:
[1]