hamidciv 发表于 2022-7-5 20:08:01

使用等级库定义圆弧

大家好
我需要一个命令,可以绘制具有给定长度,半径,中心角的圆弧,是否存在这个命令在autolisp或visual lisp?我在下图中表达了我的意思。
请帮帮我

hanhphuc 发表于 2022-7-5 20:18:48

命令行

SEANT 发表于 2022-7-5 20:21:33

有趣的数学问题。我不知道lisp,但如果我们设置这些斜线,使平分线垂直,那么这些光线应该旋转:
ACOS(d2/(2*rad1*SIN(ang4/2.0)))

eldon 发表于 2022-7-5 20:28:07

 
是的,它很容易建造。但由于OP想要一个一键式的解决方案,我一直把头放在栏杆下。

SEANT 发表于 2022-7-5 20:30:54

 
有老战士。有勇敢的战士。没有胆大的老战士。

BIGAL 发表于 2022-7-5 20:35:27

忽略的是,你有3个变量,但d和角度是独立的,只有一个可以使用,但op要求所有3个只有一个解决方案,如图所示,角度d变化

SEANT 发表于 2022-7-5 20:41:57

我不认为2.1(d2)是为了成为和弦。如果是和弦,则ang4和d2不能变化。
 
我认为d2是基于系统旋转角度的弦投影。因此,例如,如果d2需要为1.5,系统将需要进一步旋转。
 
顺便提一下,我的第一个方程确实存在使用ASIN而不是ACOS的错误。

eldon 发表于 2022-7-5 20:48:18

在OP的另一个线程中(自删除后),中心角度似乎有所不同。半径和两条平行垂直线是恒定的。由于中心角可能在49.4584度和20.1573度(约)之间变化,我想知道是否会有进一步的信息。
 
但有了这条线索中的信息,只有一个解决方案。
 
由于无法访问约束,我想知道是否有一个简单的解决方案可以使用它们。

Lee Mac 发表于 2022-7-5 20:56:21

 
同意-这是我的推导:
 

 
不过,当然有4种可能的解决方案——圆的每个象限一个。

Lee Mac 发表于 2022-7-5 21:00:24

快速编写的LISP解决方案:
(defun c:myarc(/a b c d r x)(initget 1025)(setq c(getpoint“\n指定中心:”)(initget 1095)(setq r(getdist”\n指定半径:“c))(initget 1027)(setq b(getangle“\n指定夹角:”)(initget 1093)(setq d(getdist“\n指定水平距离:”)a(acos(/d 2 r(sin(/b 2)))x(/pi 2))(重复2)(重复2(entmake(list’(0。“ARC”)(cons 10 c)(cons 40 r)(cons 50(+x a(/b-2)))(cons 51(+x a(/b 2)))))(setq a(-a))(setq x(+pi x)))(princ));;反余弦-李;;参数:-1
页: [1] 2
查看完整版本: 使用等级库定义圆弧