直线、圆、,
我在autocad中有一个三维对象,我想使用visual lisp创建该对象的直线、圆、圆弧和多段线的选择集。请帮忙。。
提前感谢。。。
图纸1.dwg 例如:-
圆的选择集:-
(ssget '((0 . "circle")))
多段线的选择集:-
(ssget '((0 . "*polyline")))
弧的选择集:-
(ssget '((0 . "arc")))
你可以这样组合它们:-
(ssget '((0 . "arc,circle,line,*polyline")))
在选择这些实体时,您试图实现什么?你只是想选择它们吗?
(setq selset
(ssget
(list
(cons -4 "<OR")
(cons 0 "ARC")
(cons 0 "CIRCLE")
(cons 0 "ELLIPSE")
(cons 0 "LINE")
(cons 0 "LWPOLYLINE")
(cons 0 "POINT")
(cons 0 "POLYLINE")
(cons -4 "OR>")
)
)
)
无论如何,在你的附图中,我找不到任何实体,除了三维实体对象。 先生,我有一个三维实体,那么首先我要做什么来将它们转换成一个实体呢?
如果你熟悉SOLPROF命令,你可以做到这一点,但如果你不熟悉,我们开始吧,这很容易。
打开图形,
转到任何布局
创建视口>单个“选择要具有二维轮廓的视图”
键入MSPACE>ENTER
使用SOLPROF>ENTER>Select 3D Solid>ENTER>ENTER>ENTER
现在转到模型空间并移动3D对象,以便可以看到2D轮廓
请参阅快照
上部>2D剖面
下部>3D对象
顺便说一句,您需要分解二维轮廓,以便可以更改线型等。 我相信OP想要实现的是提取实体的边缘。使用SOLIDEDIT可以实现这一点。
我希望使用autocad和visuallispDoc1进行特征提取,如附件(doc1.docx)所示。docx文件 据我所知,不可能使用lisp提取实体的边缘。 当然有。我用另一个Lisp程序的Lisp程序把这句话拼凑在一起,所以你必须经历并调整,但这只是一个开始
(
(lambda ( e / g )
(if e
(progn
(setq g (entget (cdr (assoc 360 (entget (cdr (assoc 350 (entget e))))))))
(mapcar (function cdr)
(vl-remove-if-not
(function
(lambda ( x )
(eq (car x) 360)
)
) g
)
)
)
)
) (car (entsel "\nSelect a solid: "))
)
你是说剩下的是assoc 360实体的列表,这些实体是实体的边缘?我运行了您的代码,进行了一些编辑,只剩下一个实体ACAD\U评估图。你能解释一下你的代码在做什么吗?
页:
[1]
2