cindy_fisher 发表于 2011-9-29 20:40:34

老手请教俩简单问题,关于命令和块问题

各位达人好,

请教如下三个问题:
1. 我现在有100张图纸,我自己写了个小程序,并把它加到了启动项里面,现在我在每天图纸的命令行都输入这个命令来执行。有没有别的方法,可以一次性在100张图纸中执行同一个命令。
2. 图纸都有图框,我一般作法是做个reference,然后依次插进去,当然可以做个块,然后一张张插进去,我的想法有没有方法一次插入所有图纸 ,写个小程序也行,只求达人给个想法。当然这些图纸保证插入的点,比例都是相同的。
3.我们都知道,块有两种,一种是直接在文件中,别的文件引用不过去,除非复制粘贴,还有一种是把块做成单个文件,然后可以插入到任何文件。我的问题是关于第一种块,我的图纸中有很多块,我想知道这些块都放到图纸的什么地方,或者系统某个文件夹里面了,谢谢


dunkel 发表于 2011-9-29 22:19:59

1. 如果100个图形文件是固定的那一百个,创建脚本进行处理应该是比较简单的。
2. 这和 1. 类似吧;基本是个可以考虑的方法。
3. 这些块定义是存放在文件的块定义表里的,不存在单独的文件。由于 dwg 文件格式的不公开,所以难以细究;或许看看 dxf 文件的格式说明会有助理解。
   高版本的 acad 具有的设计中心功能,可以插入其它图形里块定义的。

cindy_fisher 发表于 2011-9-30 10:24:16

dunkel 发表于 2011-9-29 22:19 static/image/common/back.gif
1. 如果100个图形文件是固定的那一百个,创建脚本进行处理应该是比较简单的。
2. 这和 1. 类似吧;基本是个 ...

kunkel, 你好,

1。能否普及下创建脚本的知识,在网上搜索了些。但还是请给个介绍或者书名,网址都行,我自己去学。
2。DXF,设计中心正在研究。。。。

谢谢

dunkel 发表于 2011-10-8 08:38:57

脚本,就是一连串的 ACAD 的命令序列,ACAD 的帮助里就有简单示例,并没有什么特别之处吧。只是,处理多文件的话,通过其它手段创建脚本文件更为方便,比如 Excel 之类的。另外,脚本之初一般可置 SDI 为 1 ;最后结束前恢复其为 0 。

cindy_fisher 发表于 2011-10-8 14:50:31

dunkel 发表于 2011-10-8 08:38 static/image/common/back.gif
脚本,就是一连串的 ACAD 的命令序列,ACAD 的帮助里就有简单示例,并没有什么特别之处吧。只是,处理多文件 ...

继续请教,关于脚本。

从网上找了很多例子学习了,但都是针对一个文件多命令的处理,类似于LISP,加载后运行就可以了。
我的需要是无需打开100个文件,然后每个文件执行的命令都相同。

主要是为了不开100张图纸,然后插入图框,达人如果有时间,给个也行。
谢谢

dunkel 发表于 2011-10-8 15:15:28

不打开那些个文件,就插入图框,恐怕是不可以的吧。其实,无论操作怎样复杂,只要是自动进行的就可以了;脚本确是可以做到这点的。
只是创建这类脚本的主要技巧,恐怕是不在脚本自身,而在些系统命令行命令或其它软件的使用上。比如可以将待操作的 100 个文件形成一个带完整路径的列表,导入在 Excel 里添加进适当的命令,重组成最后的脚本文件。
下面是我自己较早前写的个程序里附带的创建脚本文件功能生成的脚本文件框架,或许可以参考下:
; 关闭 多文档窗口模式
(if (>= (atof (getvar "ACADVER")) 15.0) (setvar "SDI" 1))
(if (>= (atof (getvar "ACADVER")) 15.0) (if (= (getvar "SDI") 0) (progn (alert "由于功能的要求, 需要将ACAD的多文档选项暂时关闭, 但失败了!\n最大的可能是本ACAD已经打开了多个dwg窗口.\n请关闭其它dwg窗口再试一次. ") (command "Line" nil))))
(if (>= (atof (getvar "ACADVER")) 15.0) (alert "由于功能的需要, 现已将ACAD的多文档选项关闭! 脚本正常结束时会自动打开. \n如果脚本运行过程被终止, 又不再resume继续运行的话, 需要自己打开这一选项:\n Command: SDI\nEnter new value for SDI <1>: 0"))
; 下面是打开一个文件
(if (/= (getvar "DBMOD") 0) (command "open" "Yes" "m:\\00\\3DK14.DWG") (command "open" "m:\\00\\3DK14.DWG"))
;这里开始执行需要的操作
insert xx 1.0,2.0 ...
; 保存对文件的修改
qsave
; 接着打开下一个文件,如此继续 ……

; 最后恢复 sdi 的设置
(if (>= (atof (getvar "ACADVER")) 15.0) (setvar "SDI" 0))

zoubo604 发表于 2011-10-8 15:39:16

我觉得还可以用这个方法,用VBSCRIPT脚本,写个一遍历打开某文件夹下的所以文件.并执行相应的程序.循环中间的处理过程还是用LISP这些.
        For Each f In fs        '遍历当前文件夹内每个文件
                  打开文件用LISP等处理图形
        Next
呵呵.就是这个思路

cindy_fisher 发表于 2011-10-9 11:12:59

dunkel 发表于 2011-10-8 15:15 static/image/common/back.gif
不打开那些个文件,就插入图框,恐怕是不可以的吧。其实,无论操作怎样复杂,只要是自动进行的就可以了;脚 ...

dunkel大哥,您好,
我的意思是不手动打开每张图纸。
另外我们是不是可以换个思路, 我把100张图纸放到一个文件夹里。
然后我用程序语句去读文件夹,比如说楼下的zoubo。

cindy_fisher 发表于 2011-10-9 11:24:21

zoubo604 发表于 2011-10-8 15:39 static/image/common/back.gif
我觉得还可以用这个方法,用VBSCRIPT脚本,写个一遍历打开某文件夹下的所以文件.并执行相应的程序.循环中间的 ...

您好,能给我个关于自动打开文件,自动执行命令,自动关闭文件的lisp程序,让我学习,学习吗,谢谢。

qfkxc 发表于 2011-10-9 12:57:19

请参考帖子http://bbs.mjtd.com/thread-89228-1-1.html
页: [1] 2
查看完整版本: 老手请教俩简单问题,关于命令和块问题