gpt4 book ai didi

lisp - 选择特定实体类型 AutoLisp

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:23 25 4
gpt4 key购买 nike

选择一个点时,就有一种方法可以过滤OSNAP,只能捕捉特定实体类型,而不是其他类型的实体。例如

仅对齐线。

setq startpt (*SNAP FILTER CODE* "LINE" (getpoint "\nChoose Start Line : "))

仅捕捉到圆弧。

setq startpt (*SNAP FILTER CODE* "ARC" (getpoint "\nChoose Start Arc: "))

仅吸附到折线。

setq startpt (*SNAP FILTER CODE* "POLYLINE" (getpoint "\nChoose Start Polyline: "))

我希望上面的假口齿不清有助于理解我想问的问题。

提前致谢。

最佳答案

AutoLISP osnap 函数可用于使用提供的对象捕捉修改器返回捕捉到几何体的点,但是,此函数不会过滤候选几何体。

因此,您可以选择提供 getpoint 返回的点作为筛选的 ssget 选择的点参数,或者测试 nentselp< 返回的实体 函数。

这是一个使用 ssget 的可能解决方案:

(defun c:test1 ( / pnt )
(while
(and
(setq pnt (getpoint "\nSelect start point on arc: "))
(not (ssget pnt '((0 . "ARC"))))
)
(princ "\nThe point does not lie on an arc.")
)
(if pnt
(princ (strcat "\nThe user picked (" (apply 'strcat (mapcar 'rtos pnt)) ")."))
(princ "\nThe user did not supply a point.")
)
(princ)
)

这是一个使用 nentselp 的可能解决方案:

(defun c:test2 ( / ent pnt )
(while
(and (setq pnt (getpoint "\nSelect start point on arc: "))
(not
(and
(setq ent (car (nentselp pnt)))
(= "ARC" (cdr (assoc 0 (entget ent))))
)
)
)
(princ "\nThe point does not lie on an arc.")
)
(if pnt
(princ (strcat "\nThe user picked (" (apply 'strcat (mapcar 'rtos pnt)) ")."))
(princ "\nThe user did not supply a point.")
)
(princ)
)

关于lisp - 选择特定实体类型 AutoLisp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com