明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1255|回复: 3

[基础] 求助:关于批量插入文件,可否帮忙完善下程序?

[复制链接]
发表于 2011-2-13 18:58 | 显示全部楼层 |阅读模式
Gu_xlxyp1964两位版主的帮助下,编了一个批量插入文件的程序(对两位大侠表示感谢!),代码如下:

;;;将"E:/file/"下的所有文件插入当前文件
(defun c:inf (/ a b i bn)
(setq ocm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq a 0)
(setq b 0)
(setq i 1)
  (foreach bn (vl-directory-files "E:/file/" "*.dwg" 1)
    (progn
      (command "insert" (strcat "E:/file/" bn) (list a b) "" "" "" "" "" "")        ;插入"E:/file/"下的所有文件
      (setq a (+ a 2000))                                ;设置列间距
      (if (< i 10) (setq i (+ i 1)) (progn (setq a 0) (setq b (- b 1300)) (setq i 1))    ;设置行间距,每行10个文件
      )
    )
  )
(setvar "cmdecho" ocm)
)

希望添加以下功能:
1、可否将文件中“所有的块”打散之后再插入当前文件中?(我的E:/file/目录下存的都是solidworks转来的图纸,这类图纸有个特点,就是很多图元转过来以后都是块,而且这些块命名都是按一定规律排列,不同的文件里面块的名字重复的很多。这样导致插入另一个文件以后,块图元容易出错)

2、可否增加弹出对话框的功能?(现在是程序中设置目录为E:/file/,可否增加功能弹出对话框,用鼠标选择目录?)

3、个人感觉,通过插入命令来实现这个功能(将一个目录下的所有文件复制到当前文件中)似乎有些缺陷(若有带属性的块,那么“”的数量就不好确定),请教:这功能可否用复制命令实现?
发表于 2011-2-13 19:16 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2011-2-13 19:17 编辑


(command "insert" (strcat "E:/file/" bn) (list a b) "" "" "" "" "" "")
改成
(command "insert" (strcat "*E:/file/" bn) (list a b) "" "" "" "" "")
块插入是散的
 楼主| 发表于 2011-2-13 20:35 | 显示全部楼层
本帖最后由 jsj_306 于 2011-2-13 20:38 编辑

回复 ZZXXQQ 的帖子

多谢大侠,可能我没说太明白

比如我要插入10个文件,这10个文件中都有名字为“SW_TABLEANNOTATION_0”的块,但不同文件中的块是不相同的,用我这程序插入文件的话,后面9个文件中的块都会跟第一个文件中的块一样。
因为文件都是从solidworks转过来的,所以块名重复的很多,只能先打散再插入,才能避免出错。

请问大侠这个功能如何实现?
发表于 2011-2-13 21:41 | 显示全部楼层
直接使用外部参照xref代替insert试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-7 12:45 , Processed in 0.235407 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表