如何用lisp实现带容差功能的boundary函数
用系统自带的boundary命令拾取内部点生成边界,常常因为区域没完全封闭检测不出孤岛边界,如何用lisp实现根据设置的容差实现未完全封闭的区域也能生成封闭区域边界,希望高手支招,或提供思路,或提供源码,非常感谢!(defun c:tt1 nil
(setq hpboundretain (getvar 'hpboundretain))
(setq hpbound (getvar 'hpbound))
(setq hpgaptol (getvar 'hpgaptol))
(setvar 'hpboundretain 1)
(setvar 'hpbound 1)
(setvar 'hpgaptol 15.0) ;间隙
(setvar 'cmdecho 0)
(setq e (entlast))
(command ".-HATCH" "\\")
(while (> (getvar 'cmdactive) 0) (command ""))
(while (setq e (entnext e)) (if (= "HATCH" (cdr (assoc 0 (entget e)))) (entdel e)))
(setvar 'cmdecho 1)
(setvar 'hpboundretain hpboundretain)
(setvar 'hpbound hpbound)
(setvar 'hpgaptol hpgaptol)
(princ"\n")
(princ)
) cad有点近视,这个不知道怎么解决,期待高手。 可以用填充方式得到你要的结果,系统变量HPGAPTOL可以控制间隙 pzweng 发表于 2022-6-2 08:39
(defun c:tt1 nil
(setq hpboundretain (getvar 'hpboundretain))
(setq hpbound (getvar 'hpbound)) ...
大师出手,思路别出心裁,我看这个方法可行 tigcat 发表于 2022-6-1 17:58
cad有点近视,这个不知道怎么解决,期待高手。
对的。cad好多函数就是如此,可能与算法有关。所谓容差,与像素有关。楼主要求是无解的。 pzweng 发表于 2022-6-1 16:57
(defun c:tt1 nil
(setq hpboundretain (getvar 'hpboundretain))
(setq hpbound (getvar 'hpbound)) ...
思路很独特,效果很nice
页:
[1]