明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2511|回复: 13

求助LISP如何实现鼠标动态画图的功能

  [复制链接]
发表于 2005-3-24 16:13:00 | 显示全部楼层 |阅读模式
在CAD里画一曲线,曲线能够随着鼠标的移动而变化
发表于 2005-3-24 16:21:00 | 显示全部楼层
我也在做这方面的事,要看你要画的曲线方程是什么
 楼主| 发表于 2005-3-24 16:38:00 | 显示全部楼层
我工作中用的,用PLINE画的。
 楼主| 发表于 2005-3-24 16:44:00 | 显示全部楼层
这是我画曲线的LISP程序 (defun C: kzqp (k / y x x0 y0 x1 y1 pp p1 p2 pl1 kk nx ny)
(setq k 8 nx 5000 ny 500)
(setq nx 5000 ny 500)
(setq p1 (getpoint "please input the first point:"))
(setq x1 (car p1))
(setq y1 (cadr p1))
(setq p2 (getpoint "please input the second point:"))
(setq x2 (car p2))
(setq y2 (cadr p2))
;(setq kk (/ (/ (* nx nx 4) ny) 100000000))
(setq kk (* k 0.002))
(command "pline" p1)
(if (< x1 (- x2 1.0))
(progn
(setq x (/ (- y1 y2) (- x1 x2)))
(setq x (/ (/ x 2.0) kk))
(setq x0 (- (/ (+ x1 x2) 2.0) x))
(setq x (- x1 x0))
(setq x (* kk x x))
(setq y0 (- y1 x))
(setq x x1)
(setq pl1 p1)
(while (<= x x2)
(setq y (+ y0 (* kk (- x x0) (- x x0))))
(setq pp (list x y))
(command pp)
(setq x (+ x 0.1))
)
)
)
(command "")
(princ)
)
发表于 2005-3-24 16:59:00 | 显示全部楼层
你想怎么动态,第一点不动,第二点根据鼠标移动时,图形跟着变化,是这个意思吗?
发表于 2005-3-24 17:05:00 | 显示全部楼层
好像是平抛物线方程,是悬链线的简化吧
 楼主| 发表于 2005-3-25 08:30:00 | 显示全部楼层
第一点不动,第二点根据鼠标移动时,图形跟着变化
发表于 2005-3-25 09:11:00 | 显示全部楼层
图形变化的规律是什么?
发表于 2005-3-25 09:17:00 | 显示全部楼层
这个问题飞哥已经回答过了,你可以参考这个 dispbbs.asp?BoardID=3&ID=31551 不过要改动一下,不复杂
发表于 2005-3-25 12:03:00 | 显示全部楼层
我给个思路,楼主的程序是通过两点来画一条曲线,当第二点在移动时,要先删除原先的曲线,重新根据鼠标新位置点的坐标,根据方程重画那条曲线,这样可以实现动态的变化,而不是用修改曲线数据来实现动态变化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 14:30 , Processed in 0.190702 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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