The Courage Dog 发表于 2022-7-6 12:57:42

图纸文件名与布局相同

您好,是否有一个LISP例程,当您保存图形时,它会自动创建一个与图形文件名相同的布局,如果有多个布局,则删除?(例如,如果图纸文件名为A-001.dwg,则布局名称也将为A-001。它将自动重命名现有布局名称,而不是键入。这样,每次保存为图形时,它都会自动对布局名称执行相同的操作)。
 
在我们的office CAD标准中,我们仅为每个图纸文件保留一(1)个布局。图纸文件名与布局名称相同。
 
非常感谢你的帮助。
提前谢谢。

Commandobill 发表于 2022-7-6 13:08:55

您可以在中使用类似的内容和一些saveas代码。。。
 
(vla-put-name
(vla-item
   (vla-get-layouts
   (vla-get-activedocument
   (vlax-get-acad-object))) 0) (substr (setq dwgn (getvar "dwgname")) 1 (- (strlen dwgn) 4)))

The Courage Dog 发表于 2022-7-6 13:15:09

哇,我试过你的代码,太棒了。
谢谢commandobill先生:)

Commandobill 发表于 2022-7-6 13:24:17

没问题!希望你一切顺利。

The Courage Dog 发表于 2022-7-6 13:29:03

您好,有时代码如果工作完美,我的意思是它根据图纸名称重命名布局。但有时它也不会重命名布局,命令提示符上出现的消息是:command:(load“rename layout”);错误:自动化错误。无法重命名模型布局。。
 
谢谢
 
 

Commandobill 发表于 2022-7-6 13:40:43

嗯,我必须查看您的代码,但我会添加一个检查,看看您试图更改的布局是否是模型选项卡,然后再运行其余的代码。

The Courage Dog 发表于 2022-7-6 13:49:19

无论我是否在model选项卡、modelspace或papespace中,有时它都根本不起作用。
 
代码如下:
 
(vla put名称
(vla项目
(vla获取布局
(vla获取activedocument
(vlax get acad object)))0)(substr(setq dwgn(getvar“dwgname”))1(-strlen dwgn)4)
 
这和你发给我的代码是一样的。
 
谢谢你的时间commandobill。

Commandobill 发表于 2022-7-6 13:53:15

正如我所说,我认为您需要的是一个简单的检查,看看您试图更改的选项卡是否是model。像这样的事情就足够了。
(defun c:rname ( / lay layo dwgn)
(setq layo (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))))
(if (= (vla-get-name (setq lay (vla-item layo 0))) "Model")
   (setq lay (vla-item layo 1)))
(vla-put-name lay (substr (setq dwgn (getvar "dwgname")) 1 (- (strlen dwgn) 4)))
)

The Courage Dog 发表于 2022-7-6 14:03:34

你的新代码现在运行得很好。
谢谢比尔。
页: [1]
查看完整版本: 图纸文件名与布局相同