Rocky121209 发表于 2016-7-3 09:46:05

请问一下lisp可不可以直接打开上次关闭的dwg文件

本帖最后由 Rocky121209 于 2016-7-6 18:39 编辑




就是想加个命令打开这个文件,不知道是否可以?


很感谢各位的耐心解答,最终采用了18楼Sylvanas的代码,已经达到了我想要的结果,感谢大家



果然是强迫症

那好吧 其实要解决这个scr文件也是可以的。

改成这样

(defun c:tt ()
   (setq ffn "D:\\openfile.scr"
         ff (open ffn "w")
         )
   (write-line "open \"\" (while (null (vl-file-delete \"D:\\openfile.scr\"))(command \"delay\" 100))" ff)
   (close ff)
   (command "script" ffn)
   )

这样就一次解决了,路径命令什么的自己改

我之所以习惯不删是因为经常用scr,路径都是一样的,方便管理和调试排错

Rocky121209 发表于 2016-7-3 09:47:03

我是想加一行命令到现有的lisp里的,所以。。。不想用鼠标点

Rocky121209 发表于 2016-7-3 14:18:07




当Filedia设置为0的时候,open命令的默认项就可以达到我要求,但是怎么把open写到lisp里??比如就我现在这个时候,如何执行open命令,然后就默认选项就可以了,代码怎么写?

Rocky121209 发表于 2016-7-3 18:26:04

或者获取到上次打开文件的完整路径?

Rocky121209 发表于 2016-7-4 09:38:44

额,没人能帮帮忙吗? 还是我问得不对?

Rocky121209 发表于 2016-7-4 09:51:41

或者再变通一下,弹出个文件选择框,选择文件在当前CAD打开。。。一定要在当前CAD打开,不然我其他lisp失效。。。

陨落 发表于 2016-7-4 12:11:41

Rocky121209 发表于 2016-7-4 09:51 static/image/common/back.gif
或者再变通一下,弹出个文件选择框,选择文件在当前CAD打开。。。一定要在当前CAD打开,不然我其他lisp失效 ...

弹出文件选择框是可以办到的

陨落 发表于 2016-7-4 12:13:28

(defun qf_getFolder (msg / WinShell shFolder path catchit)
(vl-load-com)
(setq winshell (vlax-create-object "Shell.Application"))
; (vlax-dump-object winshell T)
(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
)
)

陨落 发表于 2016-7-4 13:21:27

你的思路也可以直接实现
(setq fso (vlax-get-or-create-object "Scripting.FileSystemObject") )
(setq filelist (vl-directory-files"C:\\Users\\***\\AppData\\Roaming\\Autodesk\\AutoCAD 2014\\R19.1\\chs\\Recent\\选择文件"nil 0))
(setq filelist (cdr (cdr filelist)))
(foreach x filelist
(progn
(setq fn(vlax-invoke-method fso 'getfile(strcat"C:\\Users\\***\\AppData\\Roaming\\Autodesk\\AutoCAD2014\\R19.1\\chs\\Recent\\选择文件\\"x)))

(setq datelst(cons (cons x (vlax-get-property fn 'DateCreated))datelst)
)

)
然后比较datelst找到最新的文件,打开相应文件名即可

Sylvanas 发表于 2016-7-4 16:16:12

试试scr吧

(defun c:tt ()
(setq ffn "D:\\openfile.scr"
        ff (open ffn "w")
        )
(write-line "open \"\"" ff)
(close ff)
(command "script" ffn)
)

路径自己改喜欢的,至于生成的scr嘛,不碍事就留着好了。
强迫症的话可以手动删,或者在acaddoc.lsp加一条
(vl-file-delete "D:\\openfile.scr")
每次打开dwg文件自动删
同理路径自己改
页: [1] 2 3 4
查看完整版本: 请问一下lisp可不可以直接打开上次关闭的dwg文件