找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 592|回复: 4

[每日一码] 打印当前定义的所有函数信息到屏幕或文件

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-1-13 14:57:33 | 显示全部楼层 |阅读模式

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

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

×
(defun C:LISTFUNS (/ *error* vars str vtype ans mode item items)
                                        ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                        ;*                                                                           *
                                        ;*         LISTFUNS.LSP  by  John F. Uhden                                   *
                                        ;*                           2 Village Road                                  *
                                        ;*                           Sea Girt, NJ  08750                             *
                                        ;*                                                                           *
                                        ;* * * * * * * * * * * * * * * * * * * * * * * * *
                                        ; v2.2 (10-10-00) added (wcmatch) search for both input and (strcase) of input
                                        ; v15.00 (04-07-00) for R15
                                        ; v15.01 (11-05-01) finally added choices for pageTb saFearray vAriant Vla-Object
                                        ; v15.01F (01-04-17) removed security for release as freeware to AutoCAD forum.

  ;; Function lists all atoms in the (atoms-family) via wildcard match,
  ;; and let's you restrict the search to atoms of certain types.

  (gc)
  (prompt "\nLISTFUNS v15.01F (c)1994-2016, John F. Uhden")
  (setq items (atoms-family 1))                ; set list before this program adds any items, er atoms.

  (defun *error* (err)
    (if        (= (type fp) 'FILE)
      (setq fp (close fp))
    )
    (mapcar '(lambda (x) (setvar (car x) (cdr x))) vars)
    (vla-endundomark *doc*)
    (if        (wcmatch (strcase err) "*CANCEL*,*QUIT*")
      (vl-exit-with-error
        "\r                                              "
      )
      (vl-exit-with-error (strcat "\r*ERROR*: " err))
    )
  )
  (or *acad* (setq *acad* (vlax-get-acad-object)))
  (or *doc* (setq *doc* (vla-get-ActiveDocument *acad*)))
  (vla-endundomark *doc*)
  (vla-startundomark *doc*)
  ;; Kent Cooper's method is much cleaner, but I am not Kent Cooper, just a fan.
  (setq vars (mapcar '(lambda (x) (cons x (getvar x))) '("cmdecho")))
  (mapcar '(lambda (x) (setvar (car x) 0)) vars)
  (command "_.expert" (getvar "expert"))
  ;; dummy command
  (if (/= (type $cv_lf_str) 'STR)
    (setq $cv_lf_str "*")
  )
  (if (/= (type $cv_lf_file) 'STR)
    (setq $cv_lf_file "LISTFUNS.TXT")
  )

  (if (/= (setq        str
                 (getstring (strcat "\nFunction name(s)/<" $cv_lf_str ">: "))
          )
          ""
      )
    (setq $cv_lf_str str)
  )
  (if (not (vl-position
             $cv_lf_vtype
             '("Exsubr"           "eXrxsubr"  "File"           "Int"
               "List"           "eName"     "paGetb"           "Pickset"
               "Real"           "Safearray" "sTr"           "sUbr"
               "sYm"           "vAriant"   "Vla-object"
               "*"
              )
           )
      )
    (setq $cv_lf_vtype "*")
  )
  (initget
    "Exsubr eXrxsubr File Int List eName paGetb Pickset Real Safearray sTr sUbr sYm vAriant Vla-object *"
  )
  (setq        ans
         (getkword
           (strcat
             "\nVariable Type...\n Exsubr/eXrxsubr/File/Int/List/eName/paGetb/Pickset/Real/Safearray/sTr/sUbr/sYm/vAriant/Vla-object/*, <"
             $cv_lf_vtype
             ">:"
           )
         )
  )
  (if ans
    (setq $cv_lf_vtype ans)
  )
  (initget "Append Overwrite No")
  (setq ans (getkword "\nWrite to file?  Append/Overwrite/<No>: "))
  (cond
    ((= ans "Append") (setq mode "a"))
    ((= ans "Overwrite") (setq mode "w"))
    (1 (setq mode nil))
  )
  (if (and mode
           (setq ans (getfiled "Enter File Name" $cv_lf_file "" 5))
      )
    (setq $cv_lf_file ans
          fp              (open $cv_lf_file mode)
    )
    (setq fp nil)
  )
  (foreach item        items
    (if
      (and item
           (wcmatch item (strcat $cv_lf_str "," (strcase $cv_lf_str)))
           (or (= $cv_lf_vtype "*")
               (= (type (eval (read item))) (read $cv_lf_vtype))
           )
      )
       (if fp
         (progn
           (princ (strcat "\n" item "\t") fp)
           (prin1 (eval (read item)) fp)
         )
         (progn
           (princ (strcat "\n" item "\t"))
           (prin1 (eval (read item)))
         )
       )
    )
  )
  (*error* nil)
)
(defun c:LF () (c:listfuns))

评分

参与人数 1D豆 +5 收起 理由
WhoCanSay + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-1-13 17:03:59 | 显示全部楼层

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2021-12-1 07:32:22 | 显示全部楼层
感谢分享打印当前定义的所有函数信息到屏幕或文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 15:40 , Processed in 0.384842 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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