- UID
- 42964
- 积分
- 2669
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-4-14
- 最后登录
- 1970-1-1
|
发表于 2003-12-31 15:38:14
|
显示全部楼层
近来在网上看到下面的一篇文章,说的是在R14中调用*.fas文件和*.vlx文件的方法,我照此方法试了一下,但不成功。好象是“(if (= (vl-load n) "invalid")”语句中的“vl-load ”问题,不知有哪位朋友能提供一个可行的方法。
<body><p><font color="#0000FF">
问:我的r14版本为14.0,加装vlisp demo版,将*.lsp用vlisp编译*.fas文件,请问不通过VLISP的调用,如何在14.0版中调用与执行*.fas? (appload 只能调用*.lsp *.exe *.arx 文件)是否需加装补丁?
答:
1.将/vlisp目录加入支持路径中:
可在选项中的文件支持路径中增加该路径;
2.在acadr14.lsp的最后增加以下内容:
;; 以下内容将加载Visual LISP以使FAS、VLX文件有效。
(if (not (member "vlrts.arx" (arx)))
(arxload (findfile "vlrts.arx") )
)
(vlrts-init)
(setvar "lispinit" 0)
(setq *VL-NEW-FULL-INIT* nil)
3.在appload.lsp文件中,用以下内容替换函数“loadf”
(defun loadf( / n)
(setq no_load 0)
(foreach n (setq er (make_list))
(princ (strcat "\n加载 " n " ..."))
(cond
((= "lsp" (strcase (substr n (- (strlen n) 2)) T))
(if (= (load n "invalid") "invalid")
(princ(strcat "文件 " n " 未找到。"))
)
)
((or(= "fas" (strcase (substr n (- (strlen n) 2)) T))(= "vlx" (strcase (substr n (- (strlen n) 2)) T)))
(if (= (vl-load n) "invalid")
(princ(strcat "文件 " n " 未找到。"))
)
)
((or (member (strcase n) (arx)) (member (strcase n) (ads)))
(princ (strcat "\n应用程序 " n " 已加载。"))
)
(T
(if (and (= (arxload n "invalid") "invalid")
(= (xload n "invalid") "invalid")
)
(princ (strcat "\n文件 " n " 无效。"))
(princ (strcat "\n文件 " n " 已加载。"))
)
)
)
)
)
4.在appload.lsp文件中找到appload_mail函数中的以下语句:
;; Only check the initial letters as these extensions are
;; good for NT and Windows.
((= (substr (getvar "platform") 1 17) "Microsoft Windows")
(setq filetype "lsp;exe;arx")
)
将(setq filetype "lsp;exe;arx")替换为
(setq filetype "lsp;fas;vlx;exe;arx")
这样就可以在“加载应用程序”对话框中直接加载fas和vlx文件。 </font></p></body>
<font color="#FF0000">上面的问题我已经解决了,就是将“2.在acadr14.lsp的最后增加以下内容:”添加在“acad.mnl”文件中,1、3、4项做法不变。但具体道理我仍不懂,请大家赐教。</font> |
|