找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 987|回复: 1

[研讨] Lisp程序结构

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-10-15 14:20:16 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 /db_自贡黄明儒_ 于 2014-10-16 09:27 编辑

;;在明经混了许多年,又在晓东混了几年了,渐发现原来写的程序不是太合理,全改又没有那么多精力了.   
;;对于lisp程序结构,我自己有了自己的看法,自己总结一下,今后套用这种格式。 自贡黄明儒 2014.10.15

;;1 建立通用和自定义函数库,分别保存为Public.lsp和MyLsp.lsp,今后加载和修改就方便了
;;今后只需要加载两个文件,这就方便了;通用函数的建立,给自己修改来方便。

;;2 自定函数
(defun C:w1 (/ CMD1 OSM1 SS)
  ;;2.1 错误处理
  ;;定义在函数内部,作用范围也只限于此函数。
  ;;写在开头,以保证后面的代码发生错误,均会执行错误处理。
  (defun *error* (msg)
    ;;2.1.1 写在开头,错误处理反跟踪,找出调试错误所在。调试完毕后,可注释掉
    (vl-bt)
    ;;2.1.2 如果命令还在执行,中断它
    (while (not (equal (getvar "cmdnames") "")) (command nil))
    ;;2.1.3 在错误发生之前改变的变量,发生错误时后面的代码不再执行,必须恢复
    (setvar "nomutt" 0);容量忘了它,没恢复成0后面使用起来怪怪的
    (cond (cmd1 (setvar 'cmdecho cmd1)))
    (cond (osm1 (setvar 'osmode osm1)))   
    (princ "\n 出错啦!")
    ;;2.1.4 静默退出
    (princ)
  )

  ;;2.2 其它临时函数,非通用的
  ()

  ;;2.3 一般说来,执行一个程序,总是要选择对象。如果希望先择后执行,就要有这句,而且写在开头
  (cond ((cadr (ssgetfirst)) (setq ss (ssget "_P" '((0 . "*TEXT"))))))
  ;;2.4 检查加载vl扩展,有这句没有坏处,也不会造成程序多大的额外负担,因为如果已经加载扩展,不做任何事情
  (VL-LOAD-COM)  
  ;;2.5 *acad* *DOC*是常用的,不必释放。前面加*号,编辑器检查形参时会把它们排在前面,便于我们去除
  (or *acad* (setq *acad* (vlax-get-acad-object)))
  (or *DOC* (setq *DOC* (vla-get-ActiveDocument *acad*)))
  ;;2.6 获取并修改变量
  (setq cmd1 (getvar "cmdecho"));如果后面用到command,不希望显示一些信息
  (setvar "cmdecho" 0)
  (setq osm1 (getvar "osmode"));如果后面用到command画图,不关闭捕捉,就可能不是我们需要的点
  (setvar "osmode" 0)
  ;;2.7 编组开始
  ;;便于按后悔键Ctrl+Z时,一步退到位

Lisp程序结构.pdf

100.92 KB, 下载次数: 35, 下载积分: D豆 -1 , 活跃度 1

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



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 12:57 , Processed in 0.495120 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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