andrew777 发表于 2022-7-5 17:11:12

如何输入球面和圆柱体

我想编写一个例程,将笛卡尔坐标的文本文件转换为球坐标或柱坐标。例如,命令函数使用球坐标和柱坐标在autolisp中绘制直线的方法和格式是什么。
 
我知道如何手动输入这些坐标,但不知道如何使用AutoLISP自动输入。
 
任何帮助都将不胜感激。
 
谢谢
 
安得烈

marko_ribar 发表于 2022-7-5 17:21:23

使用函数:
(sin x)和(cos x)

scj 发表于 2022-7-5 17:26:37

球坐标的一般语法为

或相对坐标
@长度
 
柱坐标的一般语法为
相对圆柱坐标的长度或
@长度
 
您可以在Lisp中使用它-参见示例
 
(setq l1 1000)
(setq w1 90)
(setq w2-90)
(setq pt(strcat“@”(rtos l1)”
 
@1000.0000
 
希望这有帮助
当做
约亨
http://www.ant-ares.de

andrew777 发表于 2022-7-5 17:30:20

你好,scj,
 
你给了我需要的方法。有时球形和圆柱形使我更容易创建对象。
 
非常感谢。
 
安得烈

Lee Mac 发表于 2022-7-5 17:39:19

我建议研究AutoLISP极函数。

andrew777 发表于 2022-7-5 17:43:18

李,你好,
 
我正在使用球形和圆柱形例程将三维对象输入AutoCAD。我只想将例程更改为AutoLISP中球形和圆柱形输入的语法。我不明白为什么研究极函数会有帮助。scj理解我想表达的意思。
 
很多人都是这个网站的专家,你也是其中之一,然而scj给了我我想要的。翻译某人的电子邮件可能会出错。
 
欢迎您的帮助。
 
谢谢
 
安得烈

BIGAL 发表于 2022-7-5 17:49:16

我同意李和马可的观点,通过研究极性函数可以进一步回答问题。
 
基本角度函数
o/h=正弦(ang)
a/h=cos(ang)
o/a=tan(ang)
其他人有回答的习惯
 

(defun dtr (a)
(* pi (/ a 180.0))
)

(defun tan (a)
(setq a (dtr a))
(/ (sin a)(cos a))
)

(setq orgpt (list 0 0 0)) ; set your base pt
(setq pt (polar orgpt (dtr w1) L1))
(setq z (* l1 (tan (dtr w2))))
(setq pt (list (car pt)(cadr pt)(+ z (caddr pt)))

BIGAL 发表于 2022-7-5 17:57:15

有点好玩
 

(defun dtr (a)
(* pi (/ a 180.0))
)

(defun tan (a)
(setq a (dtr a))
(/ (sin a)(cos a))
)

(setq cenpt (list 0 0 0))
(setq ang1 0.0)
(setq ang2 0.0)
(setq rad 1000.0)
(repeat 59
(repeat 59
(setq pt (polar cenpt ang1 rad))
(setq pt (list (car pt)(cadr pt)(+ (* rad (tan (dtr ang2)))) ))
(command "point" pt)
(setq ang1 (+ ang1 6.0))
)
(setq ang2 (+ ang2 6.0))
)
(command "-vpoint" "1,1,1")

Lee Mac 发表于 2022-7-5 18:02:20

 
现有建议仅限于基本命令行输入,但是,如果要使用任何其他方法(例如ActiveX或entmake)生成对象,则需要将点表示为笛卡尔点列表。因此,AutoLISP极轴函数将允许您从基点以给定角度和半径计算点。

marko_ribar 发表于 2022-7-5 18:11:11

 
仅供参考,极性函数是从(sin-ang)和(cos-ang)函数导出的。。。所以实际上不需要极坐标系。。。
页: [1] 2
查看完整版本: 如何输入球面和圆柱体