明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5967|回复: 35

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

[复制链接]
发表于 2016-7-3 09:46:05 | 显示全部楼层 |阅读模式
本帖最后由 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,路径都是一样的,方便管理和调试排错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

本帖被以下淘专辑推荐:

 楼主| 发表于 2016-7-3 09:47:03 | 显示全部楼层
我是想加一行命令到现有的lisp里的,所以。。。不想用鼠标点
 楼主| 发表于 2016-7-3 14:18:07 | 显示全部楼层



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-7-3 18:26:04 | 显示全部楼层
或者获取到上次打开文件的完整路径?
 楼主| 发表于 2016-7-4 09:38:44 | 显示全部楼层
额,没人能帮帮忙吗? 还是我问得不对?
 楼主| 发表于 2016-7-4 09:51:41 | 显示全部楼层
或者再变通一下,弹出个文件选择框,选择文件在当前CAD打开。。。一定要在当前CAD打开,不然我其他lisp失效。。。
发表于 2016-7-4 12:11:41 | 显示全部楼层
Rocky121209 发表于 2016-7-4 09:51
或者再变通一下,弹出个文件选择框,选择文件在当前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
  )
)

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

发表于 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找到最新的文件,打开相应文件名即可
发表于 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文件自动删
同理路径自己改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-27 04:17 , Processed in 0.189013 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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