明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2047|回复: 16

[求助]如何将两个DWG文件的内容根据一定规律放在一个DWG文件中?

  [复制链接]
发表于 2008-6-16 14:05 | 显示全部楼层 |阅读模式

因为工作需要,得将两个DWG文件的内容根据一定规律放在一个DWG文件中,每次都是手工操作,就两张图还好办,如果有20张图呢?200张图呢?所以想让程序来执行了。

每张图宽度都是297,长度未知。

思路已经有了,就是不知道怎么去写。请前辈们帮帮忙。

首先将需要贴在一起图放在同一文件夹下,打开第一张图,全部复制,关闭第一张图。打开第二张图,全部MOVE,EXTMIN→(0 0 0),粘贴,(0 360 0),另存为文件名AA1,关闭,打开下一张图,全部复制……如此循环下去

现在第一难点是如何获取该文件夹下所有的文件列表,第二疑问是这个思路会不会导致程序执行速度非常慢?

发表于 2008-6-16 16:22 | 显示全部楼层

您用的 CAD 是那一个版次呀

获取该文件夹下所有的文件列表
vl-directory-files

发表于 2008-6-16 17:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2008-6-17 08:12 | 显示全部楼层

谢谢2楼,但我用(command "open" "filename")怎么打不开文件呢?

或者问怎样用LISP打开CAD文件(已经文件名和路径)?

发表于 2008-6-17 08:41 | 显示全部楼层
http://www.autolisp.org/lisps-by-brian.lsp
===>
(defun cmdOpen (name) ....)
发表于 2008-6-17 10:35 | 显示全部楼层
用DOSLib,会更方便些
发表于 2008-6-17 10:48 | 显示全部楼层
所有操作命令要用vla-
 楼主| 发表于 2008-6-17 12:36 | 显示全部楼层

感谢5楼,这段程序我将借用,虽然还看不明白是什么意思。

Doslib听说过,但现在所学甚浅,还不敢去试用它。

vla-s也不怎么懂

需要更深入的学习啊!

 楼主| 发表于 2008-6-17 13:37 | 显示全部楼层
打开第一张图时就死在那里了,请前辈位再指点迷津!!
  1. (defun c:gt (/ ACADLSP EXTMIN LST N NEWNAME PATH)
  2. (setvar "SDI" 0)
  3. (setq acadlsp (getvar "acadlspasdoc"))
  4. (setvar "acadlspasdoc" 0)
  5. (setq lst (vl-directory-files
  6.      (setq path (getvar "dwgprefix"))
  7.      "*.dwg"
  8.     ) ;_ End vl-directory-files
  9. ) ;_ End setq
  10. (setq n -1)
  11. (repeat (fix (/ (length lst) 2.0))
  12.   (cmdopen (strcat path (nth (setq n (1+ n)) lst)))
  13.   (command "copyclip" "all" "")
  14.   (command "close" "n")
  15.   (cmdopen (strcat path (nth (setq n (1+ n)) lst)))
  16.   (command "zoom" "e")
  17.   (setq extmin (getvar "extmin"))
  18.   (command "move" "all" "" extmin (list 0 0 0))
  19.   (command "PASTECLIP" (list 0 360 0))
  20.   (if (findfile (setq newname (strcat "Print" (itoa (/ n 2)) ".dwg")))
  21.    (command "wblock" newname "Y" "*")
  22.    (command "wblock" newname "*")
  23.   ) ;_ End if
  24.   (command "close" "n")
  25. ) ;_ End repeat
  26. (setvar "acadlspasdoc" acadlsp)
  27. (princ)
  28. ) ;_ End defun
  29. (defun cmdopen (name) ; by others
  30. (vl-load-com)
  31. (if (= 0 (getvar "SDI"))
  32.   (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) name))
  33.   (vla-sendcommand
  34.    (vla-get-activedocument (vlax-get-acad-object))
  35.    (strcat "(command "_.OPEN")\n" name "\n")
  36.   ) ; vla-activate
  37. ) ; if sdi
  38. ) ; defun cmdopen
发表于 2008-6-17 17:14 | 显示全部楼层
为什么要复制?直接在指定位置插入该文件为块,然后炸开,,,,何必打开然后再复制????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 09:41 , Processed in 0.177977 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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