获取两点之间的角度
在四处搜索后,我终于找到了以下代码来查找两点之间的角度:(setq p1 (getpoint "\nSelect First Point: "))
(setq p2 (getpoint "\nSelect Second Point: "))
(setq ang1 (angle p1 p2))
然而,当我通过priting ang1或为文本添加以下代码行来测试这一点时,
(command "_text" "_J" "_tc" "_non" p1 6.0 ang1 "testing angle")
角度似乎只有从。5到2.0左右,并且永远不会与p1和p2角度(可能48或89度)的预期相匹配。
它抓取的角度是不是以其他形式,我需要转换它? 请注意,角度函数以弧度为单位返回角度,而该命令以度为单位。 就这样,谢谢!!! 很高兴听到你的问题解决了。
由于从现在起您将多次遇到这种情况,我强烈建议您定义一对用于弧度到度的专用函数,分别用于度到弧度的转换。 这是您想要的两个rtd dtr,您还需要记住,虽然答案始终是弧度,但它也忽略了单位方向设置,因此0始终是水平向右的,因此有时需要额外考虑0处的北brg。
;The dtr function converts degrees to radians
;The rtd function converts radians to degrees
(defun dtr (a)
(* pi (/ a 180.0))
)
;
(defun rtd (a)
(/ (* a 180.0) pi)
)
基于Mircea和Bigal的建议和答案。
(command "_.text" "_J" "_tc" "_non" p1 6.0 (/ (* ang1 180.0) pi) "testing angle")
使用命令方法时需要考虑的因素
当前UCS
(setq p1 (getpoint "\nSelect First Point: "))
(setq p2 (getpoint p1 "\nSelect Second Point: "))
(setq ang1 (angle (trans p1 1 0)
(trans p2 1 0)))
当前文本
如果在当前TEXTSYLE上定义了Textstyle高度,则将获得字符串的角度值,而不是“测试角度”,并将6.0作为角度
HTH公司 这是一个很好的观点,pBe;可能的解决方法:
(command "_TEXT" textPoint)
(if (= (cdr (assoc 40 (entget (tblobjname "STYLE" (getvar "TEXTSTYLE"))))) 0.0)
(command textHeight)
)
(command textAngle textLabel)
页:
[1]