BrianTFC 发表于 2022-7-6 08:21:22

将倒角结果更改为

大家好
 
是否有人有Lisp例程将倒角创建的对角线转换为当前层而不是线的原始层?如果有任何帮助,我将不胜感激。
 
 
谢谢
布瑞恩

alanjt 发表于 2022-7-6 08:34:16

你所说的版本(2000i)是旧的LT版本吗?是否支持LISP?

BrianTFC 发表于 2022-7-6 08:37:36

我们使用2000i和2012

alanjt 发表于 2022-7-6 08:51:08

(defun c:Chamfer2 (/ ent)
(setq ent (entlast))
(command "_.chamfer")
(while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (command PAUSE))
(if (not (equal ent (setq ent (entlast))))
   (entmod (list (cons 8 (getvar 'CLAYER)) (cons -1 ent)))
)
(princ)
)

BrianTFC 发表于 2022-7-6 08:52:37

谢谢,这正是我想要的。。。

alanjt 发表于 2022-7-6 08:59:04

不客气。

Ahankhah 发表于 2022-7-6 09:11:23

但是,当Trimmode变量设置为零时,对多段线对象进行倒角时,倒角可能会导致多个对象。
在这种情况下,alanjt的nice代码可以编辑为:
 

(defun c:Chamfer2 (/ ent)
(setq ent (entlast))
(command "_.chamfer")
(while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (command PAUSE))
(while (setq ent (entnext ent))
(entmod (list (cons 8 (getvar 'CLAYER)) (cons -1 ent)))
)
(princ)
)

Lee Mac 发表于 2022-7-6 09:16:20

当“entlast”是属性块或多段线时,请小心。

Ahankhah 发表于 2022-7-6 09:25:27

我检查了多段线,它不会对顶点和序列对象造成任何错误,但会更改属性对象。因此,可以将代码编辑为:
(defun c:Chamfer2 (/ ent)
(setq ent (entlast))
(command "_.chamfer")
(while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (command PAUSE))
(while (setq ent (entnext ent))
(or
(member (cdr (assoc 0 (entget ent))) '("ATTRIB" "VERTEX" "SEQUEND"))
(entmod (list (cons 8 (getvar 'CLAYER)) (cons -1 ent)))
)
)
(princ)
)
页: [1]
查看完整版本: 将倒角结果更改为