明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4787|回复: 12

[提问] 多张图纸按原坐标合到一个文件

[复制链接]
发表于 2013-11-20 14:19 | 显示全部楼层 |阅读模式
10明经币
怎么把200张CAD图纸按原坐标自动合并到一张图里面呢?要是一张张打开,复制到一个CAD里边,那费劲死了
发表于 2013-11-20 14:19 | 显示全部楼层
  1. (defun c:dwgins(/ folder dwglist  n )
  2. (command "._undo" "_be")
  3. (setq folder (GetFolder "选择文件夹"))
  4. (setq dwglist (VL-DIRECTORY-FILES folder "*.dwg" 1))
  5. (while (= (length dwglist) 0)
  6. (setq folder (GetFolder "你选中的文件夹里没有DWG文件,重选!"))
  7. (setq dwglist (VL-DIRECTORY-FILES folder "*.dwg" 1))
  8. )
  9. (setq n 0)
  10. (repeat (length dwglist)
  11. (command "insert" (strcat folder "\\" (nth n dwglist)) "0,0" "1" "1" "0"  )
  12. (setq n (1+ n))
  13. )
  14. (command "._zoom" "e")
  15. (command "._undo" "_e")
  16. (princ "\n搞定!")
  17. (princ "\n共插入")(princ (length dwglist))(princ "个DWG文件。")
  18. (princ)
  19. )

  20. ;; 子函数:(GetFolder "选择文件夹:") 返回值:字符串,文件夹路径,如果点了cancel, 返回nil

  21. (defun GetFolder (msg / WinShell shFolder path catchit)
  22.   (setq winshell (vlax-create-object "Shell.Application"))
  23.   (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  24.   (setq
  25.     catchit (vl-catch-all-apply
  26.         '(lambda ()
  27.      (setq shFolder (vlax-get-property shFolder 'self))
  28.      (setq path (vlax-get-property shFolder 'path))
  29.          )
  30.       )
  31.   )
  32.   (if (vl-catch-all-error-p catchit)
  33.     nil
  34.     path
  35.   )
  36. )

点评

正解   发表于 2013-11-21 17:40
回复

使用道具 举报

发表于 2013-11-20 22:13 | 显示全部楼层
200张图纸?那合并的速度绝对会让你爽到极点
回复

使用道具 举报

发表于 2013-11-21 20:55 | 显示全部楼层
合并的速度绝对快,不知精度如何?
回复

使用道具 举报

发表于 2013-11-22 09:06 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-11-22 09:08 编辑

  1. (defun C:PT(/ fname path fns)
  2.    (gc)(setq fname(getfiled "建立总图文件" "C:" "dwg" 1))
  3.    (setq path (strcat (vl-filename-directory fname)))
  4.    (setq fns (vl-directory-files path "*.dwg" 1))
  5.    (setvar"CMDECHO"0)
  6.    (setvar"OSMODE"(+(getvar"OSMODE")16384))
  7.    (foreach fn fns
  8.      (command "INSERT" (strcat "*" path "\\" fn) (list 0 0 0) "1" "0")(gc))
  9.    (command "ZOOM" "E")
  10.    (command "-wblock" fname "*")
  11.    (setvar"OSMODE"(-(getvar"OSMODE")16384))
  12. )


很久很久以前的;在空图上运行,选定一个文件夹,给总图起个图名
回复

使用道具 举报

发表于 2013-11-23 22:46 | 显示全部楼层
好东西,赞一个
回复

使用道具 举报

发表于 2013-11-28 11:07 | 显示全部楼层
用dbx方法试试
回复

使用道具 举报

发表于 2015-11-2 11:58 | 显示全部楼层
llsheng_73 发表于 2013-11-22 09:06
很久很久以前的;在空图上运行,选定一个文件夹,给总图起个图名

合并的图纸都重叠在一起了,有没有办法分开啊,不要重叠的
回复

使用道具 举报

发表于 2015-11-2 14:52 | 显示全部楼层
落雪___ 发表于 2015-11-2 11:58
合并的图纸都重叠在一起了,有没有办法分开啊,不要重叠的

合并到一起了可能是你的图不是每个图都是不同坐标的
如果是这样,插入进行的时候不要散开图形,让它们保持为块,就比较容易人为移开了
回复

使用道具 举报

发表于 2015-11-2 16:43 | 显示全部楼层
llsheng_73 发表于 2015-11-2 14:52
合并到一起了可能是你的图不是每个图都是不同坐标的
如果是这样,插入进行的时候不要散开图形,让它们保 ...

数量蛮多的,有时候上千张呢,有办法改进吗。我每一个图纸的特点是:都是在同一个原点上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 02:11 , Processed in 0.260059 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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