qiiqii 发表于 2010-11-12 12:23:00

在大家的帮助下本人制作了一个 函数 能查找到距离“输入点”“某范围内”最近的“指定图元”,欢迎指教
引用函数需要输入三个参数:点,搜索范围的区域边长,搜索的图元名称(可以是"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))
)

gzxl 发表于 2010-11-12 19:14:00

<p><font face="Verdana">&nbsp;这是<font face="Verdana">nonsmall</font>的,当然巧妙</font></p>
<p><font face="Verdana">(defun getCircle_name (ob / i pt_center radius ss_name)<br/>&nbsp;(setq Radius (Vlax-Get ob 'Radius ))<br/>&nbsp;(setq Pt_center (Vlax-Get ob 'Center ))<br/>&nbsp;(setq i 1)<br/>&nbsp;(while (and (&lt; i 10) (not ss_name))<br/>&nbsp;&nbsp;(setq ss_name (ssget&nbsp; "c" (polar Pt_center (* pi 0.25) (* Radius i)) (polar Pt_center (* pi 1.25) (* Radius i)) '((0 . "*TEXT"))))<br/>&nbsp;&nbsp;(setq i (1+ i))<br/>&nbsp;)<br/>&nbsp;(if ss_name (ssname ss_name 0))<br/>&nbsp;)</font></p>

csc123456 发表于 2011-8-31 14:42:59

(list '(-4 . "<and") 中的-4 是什么意思,请高手指教,谢谢!

20060510412 发表于 2022-6-18 14:11:30

Gu_xl 发表于 2010-11-4 16:46
;;;ssget&nbsp; "c" 只能再屏幕显示下才能选择,你可以按下列方式选择试试!pt 点 r 半径
(defun tt (pt r ...

这个方法好,多谢Gu版
页: 1 [2]
查看完整版本: [求助]如何在指定的区域半径内搜索文本图元