明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 959|回复: 8

如何动态实现绘制一定坡比的斜线

[复制链接]
发表于 2023-8-19 14:42:58 | 显示全部楼层 |阅读模式
刚开始学lisp,试着写了一个简单的绘制斜线的代码,平时画岸坡确定坡比的时候,会用到。用的都是初学者的几个函数,请问有没有办法不需要提前输入长度,而是需要输入坡比,然后像拉伸直线一样绘制出一条斜线出来呢。

  • (defun c:xp(/ p1 p2 l1 n1 x1 y1 x2 y2 pz)
  •   (setq pz (getvar "osmode")) ;获取当前捕捉设置
  •   (setvar "osmode" 0) ;关闭捕捉
  •   (setq p1 (getpoint "\n输入第一个点"))
  •   (setq l1 (getdist "\n输入长度"))
  •   (setq n1 (getint "请输入坡比 1:n"))
  •   (setq x1 (car p1))
  •   (setq y1 (cadr p1))
  •   (setq x2 (+ x1 l1))
  •   (setq y2 (+ y1 (/ l1 n1)))
  •   (setq p2 (list x2 y2))
  •   (command "line" p1 p2 "")
  •   (setvar "osmode" pz) ;还原设置捕捉
  •   (princ)  
  • )

发表于 2023-8-19 15:30:41 | 显示全部楼层
用两个点的坐标可以直接算出长度
发表于 2023-8-19 16:32:44 | 显示全部楼层
  1. (DEFUN C:T1 ()
  2.   (SETQ P1 (GETPOINT"\n请指定起点"))
  3.   (setq pd(getreal"\n请指输入坡度"))
  4.   (SETQ P2 (POLAR (POLAR P1 0 1) (+ (* 0.5 PI)) PD))
  5.   (SETQ LOOP T)
  6.   (SETQ E (entmakeX (list '(0 . "LINE") (cons 10 p1) (cons 11 p2))))
  7.   (WHILE LOOP
  8.     (setq code (grread T 8)
  9.           PT   (CADR CODE)
  10.     )
  11.     (COND
  12.     ((= (car code) 5)
  13.       (IF E(ENTDEL E))
  14.       (SETQ P3 (INTERS P1 P2 PT (POLAR PT (+ (* 0.5 PI)) 100) NIL)
  15.             E  (entmakeX (list '(0 . "LINE") (cons 10 p1) (cons 11 p3)))
  16.       )
  17.     )
  18. ;;; 鼠标移动
  19.     ((OR (= (car code) 3) (= (car code) 11)) (SETQ LOOP NIL)))
  20. ;;; 鼠标左键
  21.   )
  22.   (PRINC )
  23. )



没有捕捉其实没啥用,动态是没办法精准的
发表于 2023-8-19 16:38:56 | 显示全部楼层
  1. (DEFUN C:T1 ()
  2.   (SETQ P1 (GETPOINT"\n请指定起点"))
  3.   (setq pd(getreal"\n请指输入坡度"))
  4.   (SETQ P2 (POLAR (POLAR P1 0 1) (+ (* 0.5 PI)) PD))
  5.   (SETVAR "POLARADDANG" (ANGTOS (ANGLE P1 P2) 0))
  6.   (SETQ P2 (GETPOINT p1"\n请指定起点"))
  7.   (SETQ E (entmakeX (list '(0 . "LINE") (cons 10 p1) (cons 11 p2))))
  8.   (PRINC )
  9. )



这样,还能精准点
 楼主| 发表于 2023-8-19 17:16:44 | 显示全部楼层
liuhe 发表于 2023-8-19 16:38
这样,还能精准点

,两段代码我都好好学习下。谢谢您了。您好像是做给排水或暖通之类设计的,我是做水运设计的,有种简易码头叫斜坡码头,画剖面图的时候,需要定一个护岸的坡度,我会经常画一定坡度的线比划,来估算可能的开挖程度,这条线对捕捉的需求不是很高的。
发表于 2023-8-20 00:11:47 来自手机 | 显示全部楼层
动态可以捕捉的,我记得在哪里看过,需要自己定义函数,使用legend获取捕捉状态,重定义捕捉
发表于 2023-8-20 07:58:32 | 显示全部楼层
看看我这个能满足你的要求不http://bbs.mjtd.com/thread-188262-1-1.html
 楼主| 发表于 2023-8-20 12:53:11 | 显示全部楼层
花开富贵 发表于 2023-8-20 00:11
动态可以捕捉的,我记得在哪里看过,需要自己定义函数,使用legend获取捕捉状态,重定义捕捉

谢谢您。我先研究下liuhe大神的动态代码,学习下grreed函数,然后在研究捕捉的问题。再次感谢您的帮助。
 楼主| 发表于 2023-8-20 12:55:40 | 显示全部楼层
sandyvs 发表于 2023-8-20 07:58
看看我这个能满足你的要求不http://bbs.mjtd.com/thread-188262-1-1.html

您插件的功能比我想象中的还要强大,我现在主要是想学习各个大佬的经验,以学习为主,希望早日出师,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:14 , Processed in 0.188394 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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