本帖最后由 lisperado 于 2018-10-29 13:01 编辑
来自版规则
1. 本版块为LISP源码技术交流版块,发帖时请一律发布源码或解决问题的思路、方法,不得发布编译的程序,更不得发布伪源码。
2. 会员想要发编译程序的,可到本论坛“AutoCAD工具插件”版块进行发布。
3. “授人以鱼不如授人以渔”,本版块力求打造成为会员们答疑解惑的技术交流平台,帮助大家提高Lisp编程技巧和水平
...
...
1 先了解函数功能,参数,返回值
2 反复调试
3 再动点脑筋如何应用返回表值,尝试用于其他各种函数以实现各种不同结果
以最简单方式表达:
- ;;simple call
- (defun c:tt ( / e1 e2 y ) ;自定义lisp命令=tt , e1 e2 y 局部化避免变量冲突
- (if
- (and (setq e1 (car (entsel "\n选取第一条曲线 "))) ; 储存于变量e1
- (setq e2 (car (entsel "\n选取第二条曲线 "))) ; 储存于变量e2
- (setq y (cond ((getint "\nDivide by # ? ")) (5))) ;平分默认值=5
- ) ; 储存于变量 y
- (foreach x (vlax-curve-DivideBetweenPair e1 e2 y) ; 把各自有效变量使用于函数参数,返回值=坐标表
- ;画线需要开始&终点
- ;利用cdr分成两个序列表 A B C D ...
- ;(A B C D) 陪对 (B C D) ...
- ;以mapcar迭代表值以用于绘画功能
- ;A-B,B-C,C-D etc.. 符合线型表达
- (mapcar ''((a b) (grdraw a b 1)) x (cdr x)) ;以grdraw函数瞬态绘画A-B,B-C,C-D....
- )
- (princ "\n退出?") ;如果选取无效退出
- )
- (princ) ; 无痕迹退出
- )
初学者程序可以简单运行,合适于自用
交流学习再优化通用性,检测有效选取&输入,除错等等
|