gamulj 发表于 2022-7-5 17:37:41

 
工作完美:)
 
塔瓦,你让我开心!
 
再次感谢!

Tharwat 发表于 2022-7-5 17:38:43

 
非常欢迎你。

ramcharger318 发表于 2022-7-5 17:42:13

是否可以将其修改为在字段中使用以获取当前选项卡的名称?CTAB变量不适用于数据提取。

Tharwat 发表于 2022-7-5 17:45:32

 
试试这个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)

ramcharger318 发表于 2022-7-5 17:52:19

我不知道怎么用。我尝试将其复制到字段中的diesel表达式中,但它表示字段代码无效。
 
我有在零件名称中使用布局名称的零件文件,因此名称是自动的。然而,当数据提取完成时,它只使用最后保存的选项卡。

Tharwat 发表于 2022-7-5 17:54:34

只需确保将上面发布的所有代码复制到一个新的txt文件中,并将其保存为扩展名为。lsp然后返回AutoCAD并键入命令名:APPLOAD或AP,然后选择lisp文件,最后键入test以运行lisp例程,您应该使用驻留在中的相关布局名称修改块名“TITLEBLOCK”。

ramcharger318 发表于 2022-7-5 17:57:38

我试图避免用户交互。当用户/绘图人员创建新零件时,我不希望必须依赖于该人员来运行命令。零件名称属性包含文件名变量和CTAB变量,再加上一个递增的数字来标识零件。因此,如果该部分位于“3”选项卡上的VM文件中,则该部分将是VM-3-X,其中X是任意数字。
 
您的代码提取布局名称而不使用CTAB变量,我想将其放入属性的字段中,可能通过diesel表达式。
页: 1 [2]
查看完整版本: 用于块布局名称的Lisp