明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 888|回复: 3

[提问] 通过AutoLisp/VLisp打开的dwg文件是不是不能使用command/vl-cmdf命令?

[复制链接]
发表于 2021-4-2 11:41:21 | 显示全部楼层 |阅读模式
请问一下各位大神,通过AutoLisp/VLisp打开的dwg文件是不是不能使用command/vl-cmdf命令?
例如,我当前打开文件A,想由AutoCAD在后台自动打开指定目录里的dwg文件(文件B/C/D/E...),运行wblock命令,但wblock命令只能将当前打开的文件A内容写入,而不能将每个后台打开的文件(文件B/C/D/E...)内容写入,导致wblock导出来的文件全部都是同一个文件A的内容。


  1.     (setq path (strcat (getFolder "请选取要批处理的dwg文件所在目录") "\\"))
  2.     (setq cadobj (vlax-create-object "AUTOCAD.Application"))
  3.     (setq i 0)
  4.     (foreach file (vl-directory-files path "*.dwg" 1)
  5.       (setq docobj (vla-open (vla-get-documents cadobj) (strcat path file)))
  6.       (setenv "DefaultFormatForSave" "24");设置另存版本号
  7.       (setvar "filedia" 0)
  8.       (setq filename (strcat path (substr file 1 (- (strlen file) 4)) "_Purged.dwg"))
  9.       (command-s "-wblock" filename "*")
  10.       (setq i (+ 1 i))
  11.       )
  12.     (Vlax-Invoke-Method cadobj 'Quit)




发表于 2021-4-2 17:36:41 | 显示全部楼层
vla-open是后台操作
command则属于交互操作

交互操作无法嵌入后台操作
 楼主| 发表于 2021-4-2 19:01:57 | 显示全部楼层
感谢回复~

我也测试了一下,只能用vla-wblock来处理了

  1.    (setq path (strcat (getFolder "请选取要批处理的dwg文件所在目录") "\\"))
  2.     (setq cadobj (vlax-create-object "AUTOCAD.Application"))
  3.     (setq i 0)
  4.     (foreach file (vl-directory-files path "*.dwg" 1)
  5.       (setq docobj (vla-open (vla-get-documents cadobj) (strcat path file)))
  6.       
  7.       (setq ssetObj (vla-Add (vla-get-SelectionSets docobj) "WBLOCKSET"))
  8.       (setq objsInModelSpace (vlax-make-safearray vlax-vbObject (cons 0 (1- (vla-get-Count (vla-get-ModelSpace docobj)))))
  9.             cnt 0)
  10.       (vlax-for entry (vla-get-ModelSpace docobj)
  11.         (vlax-safearray-put-element objsInModelSpace cnt entry)
  12.         (setq cnt (1+ cnt))
  13.         )
  14.       (vla-AddItems ssetObj objsInModelSpace)
  15.       (setq filename (strcat path (substr file 1 (- (strlen file) 4)) "_Purged.dwg"))
  16.       (vla-Wblock docobj filename ssetObj)
  17.       (vla-Delete ssetObj)
  18.       (setq i (1+ i))
  19.       )
  20.       
  21.     (Vlax-Invoke-Method cadobj 'Quit)
发表于 2022-6-25 00:07:23 | 显示全部楼层
acac 发表于 2021-4-2 19:01
感谢回复~

我也测试了一下,只能用vla-wblock来处理了

这是要实现什么功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 17:29 , Processed in 0.171737 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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