cynwalker 发表于 2022-7-5 18:36:55

结合文件n重命名层

你好
我有136个文件名为stope_1。dxf,stope_2。dxf等,每个文件都有名为1\u obj\u 1\u tris\u 1、1\u obj\u 2\u tris\u 1、1\u obj\u 3\u tris\u 1等的层。其中只有层名称中的对象编号区分层。我需要将文件名添加到图层名中,以便每个图层都不同,最后我会在第一个图形中使用类似的内容:stope1\u obj\u 1\u tris1、stope1\u obj\u 2\u tris1等,然后在下一个图形中使用:stope2\u obj\u 1\u tris1、stope2\u obj\u 2\u tris1等。我可以将它们全部添加到一个图形中,并创建dxf以用于挖掘软件程序。
 
我可以对层进行全局重命名,但我不知道如何将一些东西放在一起,这样我就可以一次性完成。任何帮助都将不胜感激。
 
谢谢
 
辛迪·沃克

Tharwat 发表于 2022-7-5 18:49:20

像这样的?
 

(defun c:Test (/ l d n e)
(while (setq l (tblnext "LAYER" (not l)))
   (setq d (getvar 'dwgname))
   (if
   (not
       (tblsearch
         "LAYER"
         (setq
         n (strcat (substr d 1 (- (strlen d) 4)) (cdr (assoc 2 l)))
         )
       )
   )
      (entmod
      (subst
          (cons 2 n)
          (assoc 2
               (setq e (entget (tblobjname "LAYER" (cdr (assoc 2 l)))))
          )
          e
      )
      )
   )
)
(princ)
)

cynwalker 发表于 2022-7-5 18:55:05

是的,这几乎是完美的。有没有办法在文件名和图层名之间加下划线或破折号?

cynwalker 发表于 2022-7-5 19:07:09

有没有办法自动运行lsp例程?

Tharwat 发表于 2022-7-5 19:17:42

 
是的,当然,你可以这样自己添加:
 

(strcat (substr d 1 (- (strlen d) 4)) "_" (cdr (assoc 2 l)))

Tharwat 发表于 2022-7-5 19:26:28

是的,当然,在之前发布的程序末尾添加以下内容。
 

(c:Test)

cynwalker 发表于 2022-7-5 19:31:53

非常感谢,这正是我需要的。我将把它封装在一个脚本或其他东西中,自动打开我的所有文件,加载lsp例程,保存并关闭文件。

Tharwat 发表于 2022-7-5 19:39:00

 
不客气。
 
祝你好运
页: [1]
查看完整版本: 结合文件n重命名层