我更新了我的第一篇帖子,此外,我还编写了可以保存*的代码。仅当在中找到块时才使用dwg。。。下面是代码:
- (defun c:3xselexp-cl ( / qaf ss ent enta ) (vl-load-com)
- (setq qaf (getvar 'qaflags))
- (setvar 'qaflags 1)
- (repeat 3
- (setq ss (ssget "_X" '((0 . "INSERT")) ))
- (repeat (setq ssn (sslength ss))
- (setq enta (vlax-ename->vla-object (ssname ss (setq ssn (1- ssn)) )))
- (if (vlax-property-available-p enta 'Path)
- (progn
- (setq ent (vlax-vla-object->ename enta))
- (ssdel ent ss)
- )
- )
- )
- (if ss
- (if (> (sslength ss) 0)
- (progn
- (command "_.explode" ss "")
- (setq expflg T)
- )
- )
- )
- )
- (setvar 'qaflags qaf)
- (princ)
- )
- (defun c:nxop3xexcl ( lspf / scrf filens path )
- (setq scrf (open "c:/opexpclall.scr" "w"))
- (setq filens (vl-directory-files (setq path (vl-filename-directory (getfiled "Pick one dwg in dirctory where are all other dwgs stored" "" "dwg" )) "*.dwg"))
- (repeat (strlen path)
- (setq path (vl-string-subst (chr 47) (chr 92) path))
- )
- (foreach f filens
- (progn
- (princ "_.open" scrf)
- (princ "\n" scrf)
- (prin1 (strcat path (chr 47) f) scrf)
- (princ "\n" scrf)
- (princ "(setq lspflg T)" scrf)
- (princ "\n" scrf)
- (princ (strcat "(load "" lspf "")") scrf)
- (princ "\n" scrf)
- (princ "3xselexp-cl" scrf)
- (princ "\n" scrf)
- (princ "(if (eq expflg T) (command "_.qsave"))" scrf)
- (princ "\n" scrf)
- )
- )
- (princ "_.shell" scrf)
- (princ "\n" scrf)
- (princ "erase c:\\opexpclall.scr" scrf)
- (princ "\n" scrf)
- (princ "_.closeall" scrf)
- (princ "\n" scrf)
- (close scrf)
- (command "_.script" "c:/opexpclall.scr")
- (princ)
- )
- (if (eq lspflg nil)
- (progn
- (setq lspf (getfiled "SELECT LSP FILE THAT YOU JUST LOADED" "" "lsp" )
- (repeat (strlen lspf)
- (setq lspf (vl-string-subst (chr 47) (chr 92) lspf))
- )
- (c:nxop3xexcl lspf)
- )
- )
- (princ)
这是我最后的结果。。。(命令“_.explode”ss)有一些问题(而(不是(eq(getvar'cmdactive)0))(命令“”)
希望这最终能有所帮助。。。如果您仍然无法在c:\drive的根目录下创建和删除文件,只需将drive更改为d:\,但请确保在c:\OPEXPCall所在的所有位置都更改了字母。scr文件发生。。。
M、 R.(Marko Ribar,d.i.a.毕业于建筑学工程师) |