CADMonkey92 发表于 2022-7-5 15:50:46

使LISP适应201

我有一个例程,用于通过工具栏按钮/宏在DWG目录中批量运行scr。单击按钮后,用户选择目标目录中的第一个文件,单击“打开”,对话框重新打开,然后用户单击“取消”。此时,宏中指定的脚本将在不包括子文件夹的目录中的所有DWG上运行。我面临的问题是,lsp在2012年和2014年正常运行,但在2018年不会打开和处理任何DWG。
 
任何帮助都将不胜感激。
 
宏文本
^C^C(LOAD"GSCRIPT") GSCRIPT MS-BUTTON N '_SCRIPT "C:/XXXXXX/XXXXX/AppData/Roaming/Autodesk/AutoCAD 2018/R22.0/enu/Support/MS-BUTTON.scr"
 
;script file generator for multiple automated editing of drawings
;by Clint Moore
;;
;;
;;Revision:2.0
;;

(defun c:gscript()
(setq templ (getstring "\nName of Template script file :"))
(initget 1 "Yes No")
(setq ans (getkword "\nSave Changes made to drawings Yes/No: "))
(if (= ans "Yes")
   (setq ans "No")
   (setq ans "Yes")
)
(setq str nil)
(if (setq addscr (findfile (strcat templ ".scr")))
(progn
(setq dwglist nil)
(while (setq dwg (getfiled "Select a Drawing File" "" "dwg" 0))
    (progn
      (setq cnt (strlen dwg)
            str nil
      )
      (while (and (> cnt 0) (/= str "\\"))
          (setq str (substr dwg cnt 1))
          (setq cnt (1- cnt))
      )
      (if (= str "\\")
          (setq su 2)
          (setq su 1)
      )
      (setq s3 (substr dwg (+ su cnt)))
      (setq dpth (substr dwg 1 (- (strlen dwg) (strlen s3))))
      (setq s3 (substr s3 1 (- (strlen s3) 4)))
      (setq dwglist (appenddwglist (list (list s3 dpth))))
      (command "shell" (strcat "dir /b " dpth "*.dwg >" s3 ".lst" ""))
   )
)
(setq wlst "dwgprp.lst"
      wname "begin.scr"
      fnwl(open wlst "r")
      fnw (open wname "w")
)
(foreach dwgnm dwglist
    (setq rname (strcat (nth 0 dwgnm) ".lst"))
    (setq fnr (open rname "r"))
    (while (setq dwg (read-line fnr))
      (write-line "Open" fnw)
      (write-line (strcat (nth 1 dwgnm) dwg) fnw)
      (setq tscr (open addscr "r"))
      (while (setq outline (read-line tscr))
         (write-line outline fnw)
      )
      (close tscr)
    )
    (close fnr)
)
(if (= ans "Yes")
   (write-line "exit" fnw)
   (write-line "QSAVE" fnw)
)
(close fnw)

)
(prompt "Template script file not found")
)
; (command "script" "begin")
)


BIGAL 发表于 2022-7-5 16:27:52

可能是SCR的深-深路径未设置“受信任路径”
 
第二,为什么没有一个像c:\Myprogs这样的目录,它有你所有的Lisp和脚本等,所以更容易找到。

CADMonkey92 发表于 2022-7-5 17:03:38

 
GSCRIPT和MS-BUTTON。SCR位于同一位置。我过去一直使用support文件夹来存放我的所有SCR和LSP,但我可以尝试移动模板脚本文件。
 
宏代码过去看起来像下面的一行,但由于某些原因,它不起作用。
^C^C(LOAD"GSCRIPT") GSCRIPT MS-BUTTON N SCRIPT BEGIN
 
返回这个。
 
 
命令:(加载“GSCRIPT”)C:GSCRIPT
命令:GSCRIPT
模板脚本文件的名称:MS-BUTTON
保存对图形所做的更改是/否:N shell
OS命令:dir/b X:\Working\Drawings\11-6-2017\*。图纸>A-M-EP-0021-SH-1。lst公司
命令:nil
 
命令:脚本
输入脚本文件名:开始
 
 
老实说,我不完全理解这个lisp是如何工作的,而且原作者已经不在我身边,我无法再寻求他的帮助了。
页: [1]
查看完整版本: 使LISP适应201