找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2780|回复: 18

[研讨] [随想]山寨acet-autoload

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2015-5-14 15:54:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 /db_自贡黄明儒_ 于 2015-5-14 15:56 编辑

;;(acet-autoload '("lman.lsp" "(bns_sl ls)"))
;;我没有找到acet-autoload用法,顾名思义的猜想,是执行(bns_sl ls)时,才去加载lman.lsp。为
;;什么要这么做呢,想必是蛋疼的时候。于是我在想,是不是可以山寨一个acet-autoload,对于非安
;;装ET的人来说,可能是一个福音。

;;第一步,通用函数,必需是加载
(defun My_autoload (Lst / FILE)
  (setq file (car Lst))
  (setq Lst (read (cadr Lst)))
  (if ;;bns_sl不是函数http://bbs.mjtd.com/thread-100187-1-1.html
    (load (findfile file))
  )
)

;;第二步,写自己的函数
(defun C:w1 ()
  (My_autoload '("lman.lsp" "(bns_sl ls)"))
  (bns_sl ls);;假如lman.lsp是自己的通用函数,其中定义了bns_sl
  (princ)
)
游客,如果您要查看本帖隐藏内容请回复
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2015-5-14 17:00:25 | 显示全部楼层
本帖最后由 q3_2006 于 2015-5-14 17:02 编辑

我是能用的工具全用之....黄工研究...精神可嘉
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2015-5-14 17:29:01 | 显示全部楼层
学习一下,这个函数有意思
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-5-14 18:16:52 | 显示全部楼层
autocad 自带的 acad20xxdoc.lsp 中就定义了 autoload 函数,但是一个支持函数中少了 vlx 支持,需要修改下这个
  1. (defun ai_ffile (app)
  2.   (or (findfile (strcat app ".lsp"))
  3.       (findfile (strcat app ".exp"))
  4.       (findfile (strcat app ".exe"))
  5.       (findfile (strcat app ".arx"))
  6.       (findfile (strcat app ".fas"))
  7.       (findfile (strcat app ".vlx"))
  8.       (findfile app)
  9.   )
  10. )
  11. (defun ai_nofile (filename)
  12.   (princ
  13.     (strcat "\n在支持路径中未找到 "
  14.             filename
  15.             "(.lsp/.exe/.arx/.fas/.vlx) 文件."
  16.     )
  17.   )
  18.   (princ "\n检查你的 Support 路径并再次运行.")
  19.   (princ)
  20. )

使用时需要一个个文件写

(autoload "**" '("x1“ "x2" "x3"))

批量的话可以这样
(mapcar '(lambda (x) (apply 'autoload x)) '(("**" '("x1" "x2")) ("zzz" '("z1" "z2"))))


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2015-5-14 20:10:41 来自手机 | 显示全部楼层
iLisp 发表于 2015-5-14 18:16
autocad 自带的 acad20xxdoc.lsp 中就定义了 autoload 函数,但是一个支持函数中少了 vlx 支持,需要修改下 ...

倒像是autocad的应用,定义呢?

点评

打开 acad20xxdoc.lsp 就可以看到, 其中的部分  详情 回复 发表于 2015-5-15 02:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-5-14 22:40:32 | 显示全部楼层
蕴魂呼呼的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-5-15 02:25:12 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2015-5-14 20:10
倒像是autocad的应用,定义呢?

打开 acad20xxdoc.lsp 就可以看到, 其中的部分
  1. ;;; ===== AutoLoad =====

  2. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
  3. ;;; for the name of a certain appplication <appname>.
  4. ;;; Returns T if <appname> is loaded.

  5. (defun ai_AppLoaded (appname apptype)
  6.    (apply 'or
  7.       (mapcar
  8.         '(lambda (j)
  9.             (wcmatch
  10.                (strcase j T)
  11.                (strcase (strcat "*" appname "*") T)
  12.             )   
  13.          )
  14.          (eval (list (read apptype)))
  15.       )
  16.    )
  17. )

  18. ;;  
  19. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must
  20. ;;  be called via (command).  Therefore they require their own autoload
  21. ;;  command.

  22. (defun autonativeload (app cmdliste / qapp)
  23.   (setq qapp (strcat "\"" app "\""))
  24.   (setq initstring "\n正在初始化...")
  25.   (mapcar
  26.    '(lambda (cmd / nom_cmd native_cmd)
  27.       (progn
  28.         (setq nom_cmd (strcat "C:" cmd))
  29.         (setq native_cmd (strcat "\"_" cmd "\""))
  30.         (if (not (eval (read nom_cmd)))
  31.             (eval
  32.              (read (strcat
  33.                     "(defun " nom_cmd "()"
  34.                     "(setq m:err *error* *error* *merrmsg*)"
  35.                     "(if (ai_ffile " qapp ")"
  36.                     "(progn (princ initstring)"
  37.                     "(_autoarxload " qapp ") (command " native_cmd "))"
  38.                     "(ai_nofile " qapp "))"
  39.                     "(setq *error* m:err m:err nil))"
  40.                     ))))))
  41.    cmdliste)
  42.   nil
  43. )

  44. (defun _autoqload (quoi app cmdliste / qapp symnam)
  45.   (setq qapp (strcat "\"" app "\""))
  46.   (setq initstring "\n正在初始化...")
  47.   (mapcar
  48.    '(lambda (cmd / nom_cmd)
  49.       (progn
  50.         (setq nom_cmd (strcat "C:" cmd))
  51.         (if (not (eval (read nom_cmd)))
  52.             (eval
  53.              (read (strcat
  54.                     "(defun " nom_cmd "( / rtn)"
  55.                     "(setq m:err *error* *error* *merrmsg*)"
  56.                     "(if (ai_ffile " qapp ")"
  57.                     "(progn (princ initstring)"
  58.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"
  59.                     "(ai_nofile " qapp "))"
  60.                     "(setq *error* m:err m:err nil)"
  61.                     "rtn)"
  62.                     ))))))
  63.    cmdliste)
  64.   nil
  65. )

  66. (defun autoload (app cmdliste)
  67.   (_autoqload "" app cmdliste)
  68. )

  69. (defun autoarxload (app cmdliste)
  70.   (_autoqload "arx" app cmdliste)
  71. )

  72. (defun autoarxacedload (app cmdliste / qapp symnam)
  73.   (setq qapp (strcat "\"" app "\""))
  74.   (setq initstring "\n正在初始化...")
  75.   (mapcar
  76.    '(lambda (cmd / nom_cmd)
  77.       (progn
  78.         (setq nom_cmd (strcat "C:" cmd))
  79.         (if (not (eval (read nom_cmd)))
  80.             (eval
  81.              (read (strcat
  82.                     "(defun " nom_cmd "( / oldcmdecho)"
  83.                     "(setq m:err *error* *error* *merrmsg*)"
  84.                     "(if (ai_ffile " qapp ")"
  85.                     "(progn (princ initstring)"
  86.                     "(_autoarxload " qapp ")"
  87.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"
  88.                     "(setvar \"CMDECHO\" 0)"
  89.                     "(command " "\"_" cmd "\"" ")"
  90.                     "(setvar \"CMDECHO\" oldcmdecho))"
  91.                     "(ai_nofile " qapp "))"
  92.                     "(setq *error* m:err m:err nil)"
  93.                     "(princ))"
  94.                     ))))))
  95.    cmdliste)
  96.   nil
  97. )

  98. (defun _autoload (app)
  99. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)
  100.   (load app)
  101. )

  102. (defun _autoarxload (app)
  103. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)
  104.   (arxload app)
  105. )

  106. (defun ai_ffile (app)
  107.   (or (findfile (strcat app ".lsp"))
  108.       (findfile (strcat app ".exp"))
  109.       (findfile (strcat app ".exe"))
  110.       (findfile (strcat app ".arx"))
  111.       (findfile app)
  112.   )
  113. )

  114. (defun ai_nofile (filename)
  115.   (princ
  116.     (strcat "\n文件 "
  117.             filename
  118.             "(.lsp/.exe/.arx) 在搜索路径文件夹中未找到。"
  119.     )
  120.   )
  121.   (princ "\n请检查支持文件的安装,然后重试。")
  122.   (princ)
  123. )


  124. ;;;===== AutoLoad LISP Applications =====
  125. ;  Set help for those apps with a command line inte**ce

  126. (autoload "edge"  '("edge"))
  127. (setfunhelp "C:edge" "" "edge")

评分

参与人数 1D豆 +10 收起 理由
/db_自贡黄明儒_ + 10 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5586个

财富等级: 富甲天下

发表于 2015-5-15 07:58:12 | 显示全部楼层
装载程序,平常用autoload方式比较多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2015-5-15 11:35:51 | 显示全部楼层
前来学习:D
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2015-12-7 11:14:39 | 显示全部楼层
是个好东西,看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2015-12-8 22:39:23 来自手机 | 显示全部楼层
haohaohao'h'hh'hhhhhhh
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3255个

财富等级: 富可敌国

发表于 2018-4-11 11:42:59 | 显示全部楼层
学习一下 黄总的思路

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 158个

财富等级: 日进斗金

发表于 2019-1-30 20:30:53 来自手机 | 显示全部楼层
学习                    
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 166个

财富等级: 日进斗金

发表于 2019-2-2 17:14:32 | 显示全部楼层
来学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2019-2-2 22:12:45 | 显示全部楼层
山寨acet-autoload
黄总好牛
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-27 01:31 , Processed in 0.378178 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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