引用函数需要输入三个参数:点,搜索范围的区域边长,搜索的图元名称(可以是"TEXT"、"INSERT"、"SHAPE"、"CIRCLE"等等)
;;;;;;;;;已经测试通过;;;;;;;;;;;;;;;;;;;;;;;;;查找距离point,范围R以内最近的图元Tuyuan;;;;;;;制作:qiiqii;;;;;;
(defun GetA_nea_TY (Point R TuYuan / X Y MinX MaxX MinY MaxY Ob NN ob_N Pt Dis)
(setq X (car Point)
MinX (- X R)
MaxX (+ X R)
Y (cadr Point)
MinY (- Y R)
MaxY (+ Y R)
NN 0
ob_N 0
Dis R)
(setq ob (ssget "X" (list '(-4 . "<and") '(-4 . ">=,>=,*")(list 10 MinX MinY 0)'(-4 . "<=,<=,*")(list 10 MaxX maxY 0)(cons 0 TuYuan)'(-4 . "and>"))))
(cond
((= (sslength ob) 1) (ssname ob 0))
((> (sslength ob) 1)
(progn
(repeat (sslength ob)
(setq pt (cdr (assoc 10 (entget (ssname ob NN)))))
(if (< (Get_Plane_Dis Point pt) dis)(setq ob_N NN))
(setq Dis (min Dis (Get_Plane_Dis Point pt)))
(setq NN (1+ NN))
))))
(if ob (ssname ob ob_N))
) <p><font face="Verdana"> 这是<font face="Verdana">nonsmall</font>的,当然巧妙</font></p>
<p><font face="Verdana">(defun getCircle_name (ob / i pt_center radius ss_name)<br/> (setq Radius (Vlax-Get ob 'Radius ))<br/> (setq Pt_center (Vlax-Get ob 'Center ))<br/> (setq i 1)<br/> (while (and (< i 10) (not ss_name))<br/> (setq ss_name (ssget "c" (polar Pt_center (* pi 0.25) (* Radius i)) (polar Pt_center (* pi 1.25) (* Radius i)) '((0 . "*TEXT"))))<br/> (setq i (1+ i))<br/> )<br/> (if ss_name (ssname ss_name 0))<br/> )</font></p> (list '(-4 . "<and") 中的-4 是什么意思,请高手指教,谢谢! Gu_xl 发表于 2010-11-4 16:46
;;;ssget "c" 只能再屏幕显示下才能选择,你可以按下列方式选择试试!pt 点 r 半径
(defun tt (pt r ...
这个方法好,多谢Gu版
页:
1
[2]