工作完美:)
塔瓦,你让我开心!
再次感谢!
非常欢迎你。 是否可以将其修改为在字段中使用以获取当前选项卡的名称?CTAB变量不适用于数据提取。
试试这个mods。
(defun c:Test (/ doc )
;; Tharwat - 29.Nov.2016 ;;
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for x(vla-get-layouts doc)
(if (/= (vla-get-name x) "Model")
(vlax-for b(vla-get-block x)
(and (eq (vla-get-objectname b) "AcDbBlockReference")
(eq (vla-get-effectivename b) "TILTEBLOCK")
(vl-some
'(lambda (a)
(and (eq "LAYOUT" (strcase (vla-get-tagstring a)))
(progn
(vla-put-textstring a "%<\\AcVar ctab>%") t)
)
)
(vlax-invoke b 'getattributes)
)
)
)
)
)
(vla-regen doc acAllViewports)
(princ)
)(vl-load-com)
我不知道怎么用。我尝试将其复制到字段中的diesel表达式中,但它表示字段代码无效。
我有在零件名称中使用布局名称的零件文件,因此名称是自动的。然而,当数据提取完成时,它只使用最后保存的选项卡。 只需确保将上面发布的所有代码复制到一个新的txt文件中,并将其保存为扩展名为。lsp然后返回AutoCAD并键入命令名:APPLOAD或AP,然后选择lisp文件,最后键入test以运行lisp例程,您应该使用驻留在中的相关布局名称修改块名“TITLEBLOCK”。 我试图避免用户交互。当用户/绘图人员创建新零件时,我不希望必须依赖于该人员来运行命令。零件名称属性包含文件名变量和CTAB变量,再加上一个递增的数字来标识零件。因此,如果该部分位于“3”选项卡上的VM文件中,则该部分将是VM-3-X,其中X是任意数字。
您的代码提取布局名称而不使用CTAB变量,我想将其放入属性的字段中,可能通过diesel表达式。
页:
1
[2]