lisperado 发表于 2018-10-29 12:56:41

本帖最后由 lisperado 于 2018-10-29 13:01 编辑

20060510412 发表于 2018-10-29 08:46
lisp菜鸟,只给函数源码,还是不会使用......
来自版规则
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) ; 无痕迹退出
)


初学者程序可以简单运行,合适于自用 {:1_1:}
交流学习再优化通用性,检测有效选取&输入,除错等等






20060510412 发表于 2018-10-29 15:40:36

本帖最后由 20060510412 于 2018-10-29 15:47 编辑

lisperado 发表于 2018-10-29 12:56
来自版规则

1 先了解函数功能,参数,返回值

谢谢热心楼主。我试用了一下,但是生成的对象是暂时的,一刷新,又消失了,这个怎么解决呢

20060510412 发表于 2018-10-29 16:41:29

lisperado 发表于 2018-10-29 12:56
来自版规则

1 先了解函数功能,参数,返回值


是不是那个grdraw函数的问题呢,只能画瞬态的图形么

panliang9 发表于 2018-10-29 17:13:25

分得很漂亮,试了也是只有瞬态的图形,帮顶一下!希望继续有代码!

lisperado 发表于 2018-10-29 17:24:16

本帖最后由 lisperado 于 2018-10-29 18:15 编辑

20060510412 发表于 2018-10-29 16:41
是不是那个grdraw函数的问题呢,只能画瞬态的图形么
瞬态适用于调试,快而不必undo

让你自学研究
关键都在参数 a b 对吧?

;;请代替换
(grdraw a b 1)

;;试验1
(vl-cmdf "_LINE"ab "" )

;;试验2
(vl-cmdf "_LINE" "_non " a "_non" b "" )

;;试验3
(entmake (list '(0 . "LINE") (cons 10 a)(cons 11 b)))

;;试验4
(entmakex (mapcar 'cons '(0 10 11 62)(list "LINE" a b 1)) ) (princ)


事先捕捉设定全开,osmode
看看有何区别?

尝试编码的乐趣吧

20060510412 发表于 2018-10-29 19:17:50

lisperado 发表于 2018-10-29 17:24
瞬态适用于调试,快而不必undo

让你自学研究


好的,我大概知道什么意思了。我以前用过一段时间的vba,接触lisp这段时间以来,一直都没怎么入门

20060510412 发表于 2018-10-29 19:18:42

20060510412 发表于 2018-10-29 19:17
好的,我大概知道什么意思了。我以前用过一段时间的vba,接触lisp这段时间以来,一直都没怎么入门

楼主热心让我十分感激,多谢!!

20060510412 发表于 2018-10-29 19:24:57

lisperado 发表于 2018-10-29 17:24
瞬态适用于调试,快而不必undo

让你自学研究


个人感觉貌似还有几点可以改进一下:
1.生成的是直线,改为多段线是否更方便选取。
2.对于边界为直线的特例,是否可直接生成直线。

panliang9 发表于 2018-10-29 21:11:03

本帖最后由 panliang9 于 2018-10-29 21:20 编辑

@lisperado
成了,漂亮!

完全是一个万能的分割的程序,可以画发射,可以画平行,完全根据初始的两条而定,非常好!

13648893846 发表于 2018-10-29 23:18:50

对于地形图测量人员来说这个功能太有用了,多谢提供函数
页: 1 [2] 3
查看完整版本: 求助!!两条非等距离的样条曲线之间如何绘制几条等分的曲线