一张单程票 发表于 2022-6-1 16:57:07

如何用lisp实现带容差功能的boundary函数

用系统自带的boundary命令拾取内部点生成边界,常常因为区域没完全封闭检测不出孤岛边界,如何用lisp实现根据设置的容差实现未完全封闭的区域也能生成封闭区域边界,希望高手支招,或提供思路,或提供源码,非常感谢!

pzweng 发表于 2022-6-1 16:57:08

(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)
)

tigcat 发表于 2022-6-1 17:58:30

cad有点近视,这个不知道怎么解决,期待高手。

pzweng 发表于 2022-6-2 08:09:59

可以用填充方式得到你要的结果,系统变量HPGAPTOL可以控制间隙

一张单程票 发表于 2022-6-2 10:26:23

pzweng 发表于 2022-6-2 08:39
(defun c:tt1 nil
(setq hpboundretain (getvar 'hpboundretain))
(setq hpbound (getvar 'hpbound)) ...

大师出手,思路别出心裁,我看这个方法可行

自贡黄明儒 发表于 2022-6-2 11:18:10

tigcat 发表于 2022-6-1 17:58
cad有点近视,这个不知道怎么解决,期待高手。

对的。cad好多函数就是如此,可能与算法有关。所谓容差,与像素有关。楼主要求是无解的。

13763815647 发表于 2024-12-9 13:26:53

pzweng 发表于 2022-6-1 16:57
(defun c:tt1 nil
(setq hpboundretain (getvar 'hpboundretain))
(setq hpbound (getvar 'hpbound)) ...

思路很独特,效果很nice
页: [1]
查看完整版本: 如何用lisp实现带容差功能的boundary函数