属性编辑
大家好,我确实搜索了论坛,发现了许多lisp的想法,并试图修改以满足我的需要,但没有什么结果像我想的那样。所以我会尽力解释我的需要。
我用一个有两个布局的模板开始绘图。一个有一个大标题栏,另一个有一个小标题栏。(参考“A”“B”的块名)。两者都是具有属性的块。所有标记都相同,只是块名称不同。当图纸签署时,我用签名名称更新标题栏,删除“供批准”,有时反之亦然。
我想热键,添加一个名称,以“检查”和删除“审批”从stauts。
然后,另一个命令将名称从“检查”中删除,并将“供批准”添加到状态。
例如属性
block name“A”tag“checked”value“name here”
块名称“B”标记“选中”值“此处的名称”
块名称“A”标签“状态”值“供批准”
块名称“B”标签“状态”值“供批准”
我已经写了一个lisp使用的代码,我在这个网站上找到了它的作品ok。
但也存在一些问题:
我可以在两个块上使用相同的命令吗?(每个标题栏不写一个。
2、当我需要取消审批图纸时,我需要删除名称,无论名称是什么。(意思是我写的代码,我必须为每个可能签署图纸的人写一个代码)。
感谢您的帮助,代码如下:
(defun c:commandname ()
(command "attedit" "_N" "_N" "blockname" "tag" "*" "old value" "new value")
(command "attedit" "_N" "_N" "blockname" "tag" "*" "old value" "new value")
(graphscr)
(princ)
);end defun
;Ex with tags
(defun c:name ()
(command "attedit" "_N" "_N" "titleb" "checked" "*" "" "approved by name")
(command "attedit" "_N" "_N" "titleb" "status" "*" "FOR APPROVAL" "")
(graphscr)
(princ)
);end defun
假设块不是动态的,请尝试以下操作:
(defun c:addname ( / ss name data i )
(if (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1) (2 . "A,B"))))
(progn
(setq name (getstring t "\nSpecify Name: "))
(setq data
(list
(cons "CHECKED" name)
'("STATUS" . "")
)
)
(repeat (setq i (sslength ss))
(LM:SetAttributeValues (ssname ss (setq i (1- i))) data)
)
)
)
(princ)
)
(defun c:forapproval ( / ss data i )
(if (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1) (2 . "A,B"))))
(progn
(setq data
'(
("CHECKED" . "")
("STATUS" . "FOR APPROVAL")
)
)
(repeat (setq i (sslength ss))
(LM:SetAttributeValues (ssname ss (setq i (1- i))) data)
)
)
)
(princ)
)
;; Set Attribute Values-Lee Mac
;; Sets the block attributes whose tags are found in the supplied
;; association list to their associated values.
(defun LM:SetAttributeValues ( block lst / elist item )
(if
(eq "ATTRIB"
(cdr
(assoc 0
(setq elist
(entget (setq block (entnext block)))
)
)
)
)
(if (setq item (assoc (strcase (cdr (assoc 2 elist))) lst))
(progn
(if (setq elist (entmod (subst (cons 1 (cdr item)) (assoc 1 elist) elist)))
(entupd (cdr (assoc -1 elist)))
)
(LM:SetAttributeValues block lst)
)
(LM:SetAttributeValues block lst)
)
)
)
您可能还对这些函数感兴趣。 你就是李。谢谢 不客气,布拉德。
我试图设置这些函数,以便可以轻松修改它们,而不需要知道“LM:setAttributeValue”函数的具体工作原理,但只需要知道它需要一个格式正确的标签和值列表。
如果您对如何修改代码有任何疑问,请提问。
李 我只是做了一些简单的修改
更改块名称
将getstring更改为调用变量,发出短命令,在其中键入签名的首字母,然后它调用addname。
非常好,再次感谢。 好东西
页:
[1]