属性块实体层
你好有人请帮我用一个lisp程序,它改变了所有标签在一个属性块层为单一层由用户选择。 你好
你知道指挥官吗?
如果没有帮助,如果可能的话,请用一张示例图来详细说明您的目标。 谢谢你的回复。
是的,我用过几次巴特曼指挥。使用该命令,我可以更改属性块每个标记的层。但使用该命令,我们只能通过单独选择每个标记来更改层。因此,如果我有一个带有许多标记的属性块,它会变得很乏味。
但我的目标是将属性块的所有标记层更改为公共层。
但是,您可以使用块编辑器更改标记层,然后运行Attsync。
让我问一下,属性定义的图层是否因每个绘图任务而异?或者它是所有人的永久层? 你好,pBe,
我正在寻找LISP,因为这是我现在正在尝试的自动化过程的一部分。
是的,属性定义的图层因每个绘图任务而异。但在大约70%的会话中,它是单层的“注释参考”
你说的自动化过程是指批量?还是你在一个接一个地打开文件?
那30%呢?这是怎么起作用的?
一个lisp例程很简单,我只是想理解它背后的逻辑,我很确定有人正在为此编写代码。
我只是在开始编写lisp代码之前确保我理解了所有条件 感谢您的关注pBe,
让我解释一下我的惯例,
我有很多套图纸,每套包含大约20张图纸。每个图形都包含一个属性块。
该块通常包含多达30个标记。
我打开一个图形,然后使用BATTMAN或只需双击块,将块的所有标记层更改为单个所需层。
70%意味着…在我工作的10个集合中,有7个需要将层更改为层“Note ref”。即在大多数图纸中,块的所有标记都转换为“Note ref”。
撇开这些百分比不谈,
我希望我已经向你澄清了。
请询问是否需要提供更多信息 你好
试试看,让我知道
(defun c:Test (/ _doc ss name l)
;;; Tharwat 31.12.2014 ;;
(if
(and
(or
(tblsearch "LAYER" "Note-ref")
(progn (alert
"Layer name < Note-ref > is not found in the drawing !!"
)
nil
)
)
(princ "\n Select Attributed Blocks ...")
(ssget "_:L" '((0 . "INSERT") (66 . 1)))
)
(progn
(setq _doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for s (setq ss (vla-get-ActiveSelectionSet _doc))
(if (not (member (setq name (vla-get-effectivename s)) l))
(setq l (cons name l))
)
)
(vla-startUndomark _doc)
(vlax-for x (vla-get-blocks _doc)
(if (member (vla-get-name x) l)
(vlax-for b x
(vla-put-layer b "Note-ref")
)
)
)
(mapcar '(lambda (n) (command "_.attsync" "_name" n)) l)
(vla-endundomark _doc)
(if ss
(vla-delete ss)
)
)
)
(princ)
)(vl-load-com)
这代码很好用Tharwat
你能用代码要求用户从图形中可用的图层中选择图层吗。?
试试这个,让我知道。
(defun c:Test (/ *error* _dialog cho _doc dlg ss name l lay)
;;; Tharwat 31.12.2014 ;;
(defun *error* (msg)
(if (and dlg (findfile dlg))
(vl-file-delete dlg)
)
(if cho
(setvar 'CMDECHO cho)
)
(if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))
(princ (strcat "\n** Error: " msg " **"))
)
(princ)
)
;;; ;;;
(defun _dialog (/ nm id f l lay layers)
(cond
((not
(and
(setq dlg (vl-filename-mktemp nil nil ".dcl"))
(setq f (open dlg "w"))
(write-line
"options : dialog {label = \"Layers\"; height = 6;
spacer_1 ;
: popup_list { key = \"lst\";}
: boxed_row {
: button { label = \"Okay\"; key = \"oki\"; width = 12;}
: button { label = \"Exit\"; key = \"esc\"; is_default = true; is_cancel = true; width = 12;}}}"
f
)
(not (close f))
)
)
(alert "Can't load the temporary file <!>")
)
((or (not dlg)
(not (> (setq id (load_dialog dlg)) 0))
(not (new_dialog
"options"
id
)
)
)
(princ "\n Can not load Dialog !")
)
(t
(while (setq l (tblnext "LAYER" (not l)))
(if (not (wcmatch (setq nm (cdr (assoc 2 l))) "*|*"))
(setq layers (cons nm layers))
)
)
(setq layers (acad_strlsort layers))
(start_list "lst")
(mapcar 'add_list layers)
(end_list)
(action_tile
"oki"
"(setq lay (get_tile \"lst\"))(done_dialog)"
)
(action_tile "esc" "(done_dialog)")
(start_dialog)
(unload_dialog id)
(vl-file-delete dlg)
)
)
(if lay
(nth (atoi lay) layers)
)
)
;; ;;;
(if
(and (setq lay (_dialog))
(princ "\n Select Attributed Blocks ...")
(ssget "_:L" '((0 . "INSERT") (66 . 1)))
)
(progn
(setq cho(getvar 'CMDECHO)
_doc (vla-get-ActiveDocument (vlax-get-acad-object))
)
(setvar 'CMDECHO 0)
(vlax-for s (setq ss (vla-get-ActiveSelectionSet _doc))
(if (not (member (setq name (vla-get-effectivename s)) l))
(setq l (cons name l))
)
)
(vla-startUndomark _doc)
(vlax-for x (vla-get-blocks _doc)
(if (member (vla-get-name x) l)
(vlax-for b x
(vla-put-layer b lay)
)
)
)
(mapcar '(lambda (n) (command "_.attsync" "_name" n)) l)
(vla-endundomark _doc)
(setvar 'CMDECHO cho)
(if ss
(vla-delete ss)
)
)
)
(princ)
)(vl-load-com)
页:
[1]
2