Artek 发表于 2022-7-5 22:56:38

绘制线条

在纯lisp中,如何编写代码,用以下给定值绘制3行:
选取两个点(p1和p2)绘制第一条线。
从p2连接一条垂直于它的新线,长度为一米半。让我们将另一个端点称为P3。
第三条线是通过闭合p3和p1形成的。
如果可能,可以选择镜像完成的多边形。或者,如果没有,请选择将第二行添加到哪一侧,即第一行的左侧或右侧,方法可能是捆扎,或者只是将鼠标指向该位置-以最简单的为准。非常感谢。
 
请帮忙。

BIGAL 发表于 2022-7-5 23:06:16

做一些关于极轴的家庭作业这会根据与点的角度和距离计算出一个新的点跟踪
 
; as simple as it gets
(setq pt1 (getpoint)
(setq pt2 (getpoint)
(setq ang (+ (angle pt1 pt2) (/ (pi 2.0))))
(setq dist (getdist))
(setq pt3 (polar pt2 ang dist))
(command "Line" pt1 pt2 pt3 pt1 "")

MSasu 发表于 2022-7-5 23:13:57

BIGAL,因为您可能直接在这里编辑了该代码,所以我冒昧地修复了一些问题:
(if (and (setq pt1 (getpoint))
      (setq pt2 (getpoint pt1)))
(progn
(setq ang (+ (angle pt1 pt2) (/ pi 2.0)))
(setq pt3 (polar pt2 ang 1.5))
(command "_Line" "_non" pt1 "_non" pt2 "_non" pt3 "_C")
)
)

Artek 发表于 2022-7-5 23:21:55

谢谢你们。

BIGAL 发表于 2022-7-5 23:27:29

感谢Msasu刚才作为一个未经测试的快速示例所做的工作。我应该检查一下。

Artek 发表于 2022-7-5 23:34:15

如果你不介意的话,我可以再补充一个问题吗。如果要更改其单独属性(如图层等),如何将每条线指定为3个单独的实体,您可以调用这些实体。?

MSasu 发表于 2022-7-5 23:39:02

为此,必须一次添加每个段,并使用ENTLAST函数检索它。添加了功能编辑示例。
(if (and (setq pt1 (getpoint))
      (setq pt2 (getpoint pt1)))
(progn
(setq ang (+ (angle pt1 pt2) (/ pi 2.0)))
(setq pt3 (polar pt2 ang 1.5))
(command "_LINE" "_non" pt1 "_non" pt2 "")(setq entity1st (entlast))
(command "_LINE" "_non" pt2 "_non" pt3 "")(setq entity2nd (entlast))
(command "_LINE" "_non" pt3 "_non" pt1 "")(setq entity3rd (entlast))
;set color of first line entity to yellow
(command "_CHPROP" entity1st "" "_C" 2 "")
)
)

Artek 发表于 2022-7-5 23:44:37

对这正是我想要的。我一直在想方设法,但都没有成功。谢谢Mircea!

MSasu 发表于 2022-7-5 23:56:39

不客气,阿泰克!

BIGAL 发表于 2022-7-6 00:00:40

Msasu可能不需要entlast,只要创建了每条新线
 

(command "_LINE" "_non" pt1 "_non" pt2 "")(command "_chprop" "L" "" "_c" 2 "")
页: [1]
查看完整版本: 绘制线条