如何获得一个实体最近另外一个实体
比如获得指定的文字最近line线或者pline,用autolisp如何实行?谢谢。<br/>还有,autocad2004在提示输入的时候,能不能用autolisp在鼠标旁边输出一行提示文字,就像2007一样的半透明提示框。<br/> 自己解决了,获得实体的坐标,然后构造一个选择区域,用ssget获得区域内的实体,可逐步增加区域,获得实体后停止。挺简单。呵呵。 本帖最后由 作者 于 2008-12-27 19:44:24 编辑我现在也正需要这方面的,可不可以贴出来学习一下? (defun Fun_SSGet(sdPt sdDelObj sdLayNM / My_tot My_objss My_LD My_RU My_x My_y );//(点坐标,ssname,图层)<br/> (setq My_x (car sdpt)<br/> My_y (cadr sdpt)<br/> My_objss nil<br/> My_prcsn 5.0<br/> My_addstep 0.5<br/> My_tot 0<br/> )<br/> (while(< My_tot 2)<br/> (setq My_prcsn (+ My_prcsn My_addstep)<br/> My_RU (list (+ My_x My_prcsn) (+ My_y My_prcsn))<br/> My_LD (list (- My_x My_prcsn) (- My_y My_prcsn))<br/> My_objss (ssget "_c" My_LD My_RU sdLayNM)<br/> )<br/> (if ( null My_objss)<br/> (setq My_objss nil)<br/> (setq My_tot (sslength My_objss ))<br/> )<br/> (if (> My_prcsn 100.0)<br/> (setq My_tot 10000)<br/> )<br/> )<br/> (if ( null My_objss)<br/> (alert "None object")<br/> (progn<br/> (setq My_obj(ssdel sdDelObj My_objss));;删除自身<br/> )<br/> )<br/> (setq ObjNm(ssname My_objss 0))<br/>) 对于一个初学者来说是一个很大的帮助 fwdll 发表于 2008-12-28 23:02 static/image/common/back.gif
(defun Fun_SSGet(sdPt sdDelObj sdLayNM / My_tot My_objss My_LD My_RU My_x My_y );//(点坐标,ssname,图 ...
这个子函数只是针对我自己的目的写的,可能不一定通用,比如选取不同类型的物体,我的图纸一般是分层处理,所以有一个图层的参数,不过大家可以在上面修改,增加类型判断还是很容易的。
至于第二点,其实还有一个子函数,求距离最近的物体,只是增加一个函数,感觉运算慢了很多,所以还是删除了,大家有兴趣也可以增加进去,distance函数就ok了。
页:
[1]