明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1694|回复: 4

lisp能否实现由用户自已定义起动命令

[复制链接]
发表于 2011-9-25 18:06:31 | 显示全部楼层 |阅读模式
本帖最后由 logoin 于 2011-9-25 18:06 编辑

因为各人的习惯和爱好不同,加上有很多lisp,所以新程序给其他人用时起动命令老有冲突
比如我写了个(defun c:ff())的程序,有些人已经用ff了,不知道lisp能不能实现让他们自已定义起动命令?人数多,为了更新方便,vlx文件放在服务器上,没有下载到个人电脑上用。
发表于 2011-9-25 19:37:19 | 显示全部楼层
本帖最后由 cabinsummer 于 2011-9-25 19:40 编辑

验证符号CAR.CDR和XYZ是否已经定义,并以字符串平表的格式返回它们(假定在现行环境中没有定义符号XYZ)。
  1. (atoms_family 1'("CAR" "CDR" "XYZ")) ;;; 返回("CAR" "CDR" "nil")

发表于 2011-9-25 19:45:15 | 显示全部楼层
一个好的程序员就应该考虑到这些,比如微软就曾出过匈牙利定义法,那些乱起函数名的人不会是好程序员,写的代码也好不到哪里去
发表于 2011-9-25 20:20:22 | 显示全部楼层
本帖最后由 Lisper 于 2011-9-25 20:21 编辑

  1. ;|
  2. 假设你的函数为:
  3. (defun c:ff()
  4.   (setq a (getreal "\n参数1:")
  5.         b (getreal "\n参数2:")
  6.         )
  7.         (princ "\n结果:")
  8.         (princ (* a b))
  9.         (princ)
  10.         )
  11.   将函数内容去掉 defun c:ff 后赋值给表 FunList ,即
  12.   |;
  13. (setq FunList
  14.        '(()
  15.          (setq
  16.           a
  17.           (getreal "\n参数1:")
  18.           b
  19.           (getreal "\n参数2:")
  20.          )
  21.          (princ "\n结果:")
  22.          (princ (* a b))
  23.          (princ)
  24.         )
  25. )
  26. (setq n             0
  27.       funstr "c:ff"
  28.       NewFun funstr
  29. )
  30. (while (car (ATOMS-FAMILY 1 (list NewFun)))
  31.   (setq NewFun (strcat funstr (itoa (setq n (1+ n)))))
  32. )
  33. (eval (append (list 'defun (read NewFun)) FunList))
  34. (princ (strcat "\n启动命令: " (substr NewFun 3)))
 楼主| 发表于 2011-9-25 21:03:39 | 显示全部楼层
感谢楼上两位高手
好好研究研究上面的代码....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-25 05:13 , Processed in 0.155178 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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