关于动态坡度线能否响应四个方向的问题
本帖最后由 hubeiwdlue 于 2023-8-22 14:29 编辑首先,特别感谢liuhe大神对我的指导,这个动态斜坡线是在他提供的代码基础上修改的,其实也只是改了坡度计算的内容,框架都没有动。
但是动态坡度线,是p1 p2的延长线,p2点坐标是固定的,没法感知鼠标在四个象限的变化。如果要实现在四个象限,斜坡先分别能向四个方向延伸呢,应该怎么写呢?
另外,对附件说明一下,【xp】画坡比线1,不带动态功能,起点是固定的,能向四个方向绘出一定坡比的直线,终点以第二个点的y坐标确定,也就是说第二点其实也是可以控制的。基本满足我自己的使用要求。
【xp】画坡比线2,是动态斜坡线,是在liuhe大神提供的代码上略微修改后的,存在的问题是只能向一个方向延长线。
;;;2023年8月22日
谢谢三领设计提供的函数,谢谢liuhe大神的指导,动态四象坡度线做出来,我不会放动画,附件已经更新了,【T1】画坡比线2。
里面有两处疑问,1、动态延长线是通过循环语句,不断的生成直线,删除直线实现的,总感觉比较费资源,虽然在cad上面没这个感觉,这个能有优化吗。2、代码中,(IF E(ENTDEL E))语句,为什么必须在前面创建一个图元给它删,否则就报错,理解不了。
;;4等分象限函数-----(一级)-------由三领设计提供
;;p0 定点p1 位置落在不同象限,返回 1 2 3 4
(defun sl-4p (p0 p1 / x0 y0 x1 y1 xx) ;;象限
(setq x0 (car p0) y0 (cadr p0) x1 (car p1) y1 (cadr p1))
(if (>= x1 x0)
(if (>= y1 y0) (setq xx 1) (setq xx 4))
(if (>= y1 y0) (setq xx 2) (setq xx 3))
)
xx
)
;;主函数
(DEFUN C:T1 (/ pd p0 p1 p2 p3 px py xx bb loop E)
(setq pd(getreal"\n请指输入坡度"))
(SETQ p0 (GETPOINT"\n请指定起点"))
(setq ang (atan (/ 1 pd)))
(setq px (polar p0 ang 1) py (polar p0 (- ang) 1) loop t)
(SETQ E (entmakeX (list '(0 . "LINE") (cons 10 p0) (cons 11 px))))
(WHILE LOOP
(setq bb (grread t 8 0) p1 (cadr bb))
(if (= (car bb) 5)
(setq xx (sl-4p p0 p1))
)
(if (or (= xx 1) (= xx 3))
(SETQ P2 px)
(SETQ P2 py)
)
(COND
((= (car bb) 5)
(IF E(ENTDEL E));;;前面需创建一个图元给它删除,否则会报错
(SETQ P3 (INTERS p0 P2 p1 (POLAR (POLAR p0 0 1) (* pi 0.5) 100) NIL)
E(entmakeX (list '(0 . "LINE") (cons 10 p0) (cons 11 p3)))
)
)
;;; 鼠标移动
((OR (= (car bb) 3) (= (car bb) 11)) (SETQ LOOP NIL)))
;;; 鼠标左键
)
(PRINC )
)
感谢,下载下来试试。:lol 搞个动图看看呀6666 留个脚印,以后能用上 本帖最后由 尘缘一生 于 2023-8-21 20:48 编辑
我刚发了这个函数,很简单,集成上吧
http://bbs.mjtd.com/thread-188412-1-1.html?_dsign=00b8b2c4
下面是《三领设计》的
zxh92 发表于 2023-8-21 20:22
搞个动图看看呀6666
我还不知道怎么放动画。 四个象限的划分,不就是根据相对原点的XY的差值的正负区分的,先区分上下,再区分左右 liuhe 发表于 2023-8-22 08:47
四个象限的划分,不就是根据相对原点的XY的差值的正负区分的,先区分上下,再区分左右
好的。我试一试。谢谢您。 尘缘一生 发表于 2023-8-21 20:40
我刚发了这个函数,很简单,集成上吧
http://bbs.mjtd.com/thread-188412-1-1.html?_dsign=00b8b2c4
动图里面的是 三领设计的什么功能 好好好,我改造了下,你的帖子的问题我都解决了。
页:
[1]
2