明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 561|回复: 8

关于动态坡度线能否响应四个方向的问题

  [复制链接]
发表于 2023-8-21 17:02 | 显示全部楼层 |阅读模式
本帖最后由 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 )
)

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
gdrocket + 1 赞一个!

查看全部评分

发表于 2023-8-21 19:21 | 显示全部楼层
感谢,下载下来试试。
发表于 2023-8-21 20:22 | 显示全部楼层
搞个动图看看呀6666
发表于 2023-8-21 20:30 | 显示全部楼层
留个脚印,以后能用上
发表于 2023-8-21 20:40 | 显示全部楼层
本帖最后由 尘缘一生 于 2023-8-21 20:48 编辑

我刚发了这个函数,很简单,集成上吧
http://bbs.mjtd.com/thread-188412-1-1.html?_dsign=00b8b2c4

下面是《三领设计》的

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-8-22 08:41 | 显示全部楼层
zxh92 发表于 2023-8-21 20:22
搞个动图看看呀6666

我还不知道怎么放动画。
发表于 2023-8-22 08:47 | 显示全部楼层
四个象限的划分,不就是根据相对原点的XY的差值的正负区分的,先区分上下,再区分左右
 楼主| 发表于 2023-8-22 13:01 | 显示全部楼层
liuhe 发表于 2023-8-22 08:47
四个象限的划分,不就是根据相对原点的XY的差值的正负区分的,先区分上下,再区分左右

好的。我试一试。谢谢您。
发表于 2024-4-8 00:28 | 显示全部楼层
尘缘一生 发表于 2023-8-21 20:40
我刚发了这个函数,很简单,集成上吧
http://bbs.mjtd.com/thread-188412-1-1.html?_dsign=00b8b2c4

动图里面的是 三领设计的什么功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 06:10 , Processed in 0.349065 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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