明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3211|回复: 10

批量将B文件夹内的每个DWG文件插入到A文件夹内的同名文件中

[复制链接]
发表于 2011-10-9 19:46 | 显示全部楼层 |阅读模式
1明经币
求助:有A B两个文件夹,A B文件夹内分别都有1 2 3 4.......DWG文件,要求将B文件夹内的1.DWG解块插入到A文件夹内的1.DWG文件(基点为0,0),依次类推.
发表于 2011-10-9 19:46 | 显示全部楼层
本帖最后由 byghbcx 于 2011-11-19 22:16 编辑

  1. (defun c:cn_dx(/ dir dir1 file n file$ newdoc dwgname);批量处理地图
  2.     (defun qf_getFolder  (msg / WinShell shFolder path catchit)
  3.       (vl-load-com)
  4.       (setq winshell (vlax-create-object "Shell.Application"))
  5.       (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  6.       (setq catchit
  7.   (vl-catch-all-apply
  8.     '(lambda ()
  9.        (setq shFolder (vlax-get-property shFolder 'self))
  10.        (setq path (vlax-get-property shFolder 'path))
  11.        )
  12.     )
  13. )
  14.       (if (vl-catch-all-error-p catchit)
  15. nil
  16. path
  17. )
  18.       )
  19.   (vl-load-com)
  20.   (setvar 'blipmode 0)
  21.   (setvar 'cmdecho 0)
  22.   (setq dir (qf_getFolder "请选择要批量处理文件所在文件夹" ))
  23.   (setq dir1 (qf_getFolder "请选择要插入源图文件的文件夹" ))
  24.   (setq file (vl-directory-files dir "*.dwg" 1) n 0)
  25.   (repeat (length file)
  26.     (setq file$ (nth n file))
  27.     (setq dwgname (strcat dir "\\" file$))
  28.     (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) dwgname));打开并获得档
  29.     (vla-insertblock (vla-get-modelspace newdoc) (vlax-3d-point '(0 0 0)) (strcat dir1 "\\" file$) 1 1 1 0)
  30.     (princ (strcat "\r正在处理地形图" dir "\\" file$))
  31.     (vla-close newdoc :vlax-true);关闭另存档
  32.     (setq n (1+ n))
  33.     )
  34.   (setvar 'cmdecho 1)
  35.   (princ)
  36. )

回复

使用道具 举报

发表于 2011-11-17 15:07 | 显示全部楼层
唉,这个用处好像不大啊,如果你有编辑那么多不同的块的时间,顺手就把他插到图形中算了
回复

使用道具 举报

发表于 2011-11-18 11:15 | 显示全部楼层
希望高手能尽快解决啊 谢谢
回复

使用道具 举报

 楼主| 发表于 2011-11-18 13:05 | 显示全部楼层
shalei021647 发表于 2011-11-17 15:07
唉,这个用处好像不大啊,如果你有编辑那么多不同的块的时间,顺手就把他插到图形中算了

主要用于测绘中的等高线处理,图形编辑与等高线是分开处理的,多个分幅图合在一起勾绘等高线,勾绘好后批量分幅,等高线分幅图与图形编辑分幅图合并成最终数据。
回复

使用道具 举报

发表于 2011-11-19 13:55 | 显示全部楼层
测试一下,真的还不错啊 谢谢啊
回复

使用道具 举报

 楼主| 发表于 2011-11-19 16:14 | 显示全部楼层
命令: appload
已成功加载 批量处理地图.lsp。
命令: ; 错误: 输入的列表有缺陷
命令:
回复

使用道具 举报

发表于 2011-11-19 20:40 | 显示全部楼层
本帖最后由 byghbcx 于 2011-11-19 22:04 编辑
874185423 发表于 2011-11-19 16:14
命令: appload
已成功加载 批量处理地图.lsp。
命令: ; 错误: 输入的列表有缺陷


哪里出错?试了一下,VLA-INSERTBLOCK好象不能插入分解块,把“*”号去掉,如需分解,加一句把刚插入的文件块炸一下。
回复

使用道具 举报

 楼主| 发表于 2011-11-20 14:46 | 显示全部楼层
多谢,可以正常使用,可能我昨天复制代码时没复制全
回复

使用道具 举报

发表于 2020-8-29 18:59 | 显示全部楼层
本帖最后由 softbird 于 2020-8-30 10:51 编辑

  • (defun c:ctml(/ dir dir1 file n file$ newdoc dwgname);批量处理地图
  •   (defun qf_getFolder  (msg / WinShell shFolder path catchit)
  •     (vl-load-com)
  •     (setq winshell (vlax-create-object "Shell.Application"))
  •     (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  •     (setq catchit
  •       (vl-catch-all-apply
  •         '(lambda ()
  •            (setq shFolder (vlax-get-property shFolder 'self))
  •            (setq path (vlax-get-property shFolder 'path))
  •          )
  •       )
  •     )
  •     (if (vl-catch-all-error-p catchit)
  •       nil
  •       path
  •     )
  •   )
  •   (vl-load-com)
  •   (setvar 'blipmode 0)
  •   (setvar 'cmdecho 0)
  •   (setq dir (qf_getFolder "请选择要批量处理文件所在文件夹" ))
  •   ;;(setq dir1 (qf_getFolder "请选择要插入源图文件的文件夹" ))
  •   (setq file (vl-directory-files dir "*.dwg" 1) n 0)
  •   (repeat (length file)
  •     (setq file$ (nth n file))
  •     (setq dwgname (strcat dir "\\" file$))
  •     (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) dwgname));打开并获得档
  •     (vla-insertblock (vla-get-modelspace newdoc) (vlax-3d-point '(0 0 0)) (strcat "d:\\源图\\" (substr file$ 1 13) ".dwg") 1 1 1 0)
  •   ;(vla-insertblock (vla-get-modelspace newdoc) (vlax-3d-point (list (car (getvar "extmin"))(cadr (getvar "extmin")) 0.0)) (strcat "d:\\" (substr file$ 1 13) ".dwg") 1 1 1 0)
  •     ;(list (car (getvar "extmin"))(cadr (getvar "extmin")) 0.0))这个得到的坐标不准确,偏离很远,不知道为什么?
  •     (VLA-EXPLODE (vlax-ename->vla-object (entlast)))
  •      (princ (strcat "\r正在处理地形图" dir "\\" file$))
  •     (vla-close newdoc :vlax-true);关闭另存档
  •     (setq n (1+ n))
  •   )
  •   (setvar 'cmdecho 1)
  •   (princ)
  • )
  • ;请教一下;(VLA-EXPLODE (vlax-ename->vla-object (entlast)))--这个炸不开?
    ;(list (car (getvar "extmin"))(cadr (getvar "extmin")) 0.0))这个得到的坐标不准确,偏离很远,不知道为什么?



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 17:47 , Processed in 0.138009 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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