bnmosier 发表于 2022-7-5 15:55:04

属性块的文件名

您好,这里是新用户!
 
我有一个旧的LSP,我总是使用VBE运行,该VBE获取文件名的一部分,并将其插入到相应命名的目录中所有图形的属性块中。
 
示例文件名:DCA-ABC-123456789-E001 R0(图纸编号)。图纸
 
文件名中的每一组字符都将因项目而异,因为它们是基于项目的。我们有一个称为“DCA\U stmp”的DCA块,用于为客户创建变更单,然后将其合并到记录图纸中。很多时候,我们有数百个这样的程序,如果有人向程序包中添加一个图形,我们需要对它们重新编号,因为它们应该按图形编号的字母数字顺序排列。很可怕的是,必须按文件名和图纸戳记内手动重新编号,因此我们尝试将其保留为“DCA-WEH-112177115-EXXX R0(图纸编号).dwg”,直到项目中可能的最新点。它工作得很好,直到我们从AutoCAD 2012跳到2016,现在它运行起来就像在进行更改,保存图形,但不会更改块。
 
我已经附加了LSP,但它不允许我上传VBE。。。谁能帮我弄清楚我需要做什么才能让这一切再次成功??我已经很多年没有上LSP课程了,我的知识是如此的基础,以至于我无法找出问题所在,更不用说如何修复它了。
文件名TodCA。lsp

bnmosier 发表于 2022-7-5 16:15:15

对不起,我忘了包括街区!它位于适当命名的附件内
DCA-ABC-123456789-EXXX R0(图纸编号)。图纸

ronjonp 发表于 2022-7-5 16:26:53

也许张贴一张显示预期结果的图纸。。这是一件永远不应该手动完成的事情。

bnmosier 发表于 2022-7-5 16:36:02

我们已经习惯于使用2012年及之前的LSP,因此我们显然认为它是理所当然的。这是一个包含填充块的dwg。
DCA-WEH-112177115-E002 R0(45B799s205r2)。图纸

ronjonp 发表于 2022-7-5 16:47:20

快速测试和代码在这里工作。。但是,在块中属性的可见性方面发生了一些奇怪的事情?

ronjonp 发表于 2022-7-5 16:58:26

下面是代码的更统一版本。你有没有想过用字段来表示这个(%)?
(defun c:foo (/ i n s)
(cond
   ((null (setq s (ssget "_X" '((0 . "insert") (2 . "dca_stmp") (66 . 1)))))
    (print "Block 'dca_stmp' not found...")
   )
   ((null (setq i (vl-string-position (ascii "-") (setq n (getvar 'dwgname)) 0 t)))
    (print "'-' not found in drawing name...")
   )
   ((foreach b        (mapcar 'cadr (ssnamex s))
      (vl-some        '(lambda (x)
           (and (= "DCA_NO." (vla-get-tagstring x)) (vla-put-textstring x (substr n 1 i)))
       )
        (vlax-invoke (vlax-ename->vla-object b) 'getattributes)
      )
    )
   )
)
(princ)
)
(vl-load-com)
 
附着的是默认设置为“图形名称”的块。
DCA-ABC-123456789-EXXX R0(图纸编号)。图纸
页: [1]
查看完整版本: 属性块的文件名