AUTO CAD 中如何画螺旋线?(请教思路) 中如何画螺旋线?(请教思路) ?(请教思路 回答:1 浏览:472 AUTO CAD 中如何画螺旋线?(请教思路) 最好有几个步骤,请用中文!
10 分
提问时间:2005-05-11 01:32
最佳答案 此答案由提问者自己选择,并不代表爱问知识人的观点
揪错 ┆ 评论
wang [先知] 1、打开CAD后,找工具/AUTOLISP/VISUAL 2、然后输入 (defun c:luoxuan (/) (setq b1 (getpoint "请指定螺旋线基点: ")) (setq r (getreal "请输入螺纹平均半径: ")) (setq disp (getreal "请输入螺纹节距: ")) (setq n (getint "请输入每圈细化段数: ")) (setq delta (/ (* 2.0 pi) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq jj 0) (Command "UCS" "o" b1) (Command "3dpoly" (list r 0 0)) (repeat n (setq jj(+ jj 1) (setq ang(+ delta ang)) (setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j jj)))) (Command pt2) ) (Command "") ) 存盘为 luoxuan.lsp,关闭编辑器 3、要用时,点工具/AUTOLISP/加载,找到 luoxuan.lsp 文件将其加载,关闭对话框.在命令行输 入 luoxuan 回车,就开始了螺旋线的绘制 (摘自:http://www.laohu.net/bbs/dispbbs.asp? boardID=8&RootID=31787&ID=31960) LISP编辑器,打开.点新建文件
如何绘制三维螺旋线(3dspiral)和平面螺旋线即阿基米德螺旋线(spiral): ①将 Autodesk 公司网站 http://www.icad.com.cn/icad/share/autocadtool.htm 打开上述网页,点击其中的:3dspiral.zip 用于螺旋线的绘制上的可下载软件:“3dspiral.Lsp” 复制到自己计算机硬盘下的“某”文件夹中; ②打开 AutoCADR14 或 R2000 绘图界面,利用 tool 下拉式菜单(Autolisp)load Application 命 令加载(Load)“3dspiral.Lsp”应用软件程序; ③人工键入命令(Command): 3dspiral (按回车键)---绘制三维螺旋线; spiral (按回车键)---绘制二维螺旋线(即阿基米德螺旋线) ④按照自己的设计意图可连续回答该软件设置的 6 项提问后,就能画出较理想的各种螺旋线: 即绘制弹簧的路径(Path)。 运行 3dspiral 命令后,会陆续出现以下 6 个提问: 6 项提问分别是: 1.螺旋线起始的中心坐标; 2.起始的半径值; 3.螺旋线的圈数; 4.螺旋线水平(HOR)方向变化的螺距(柱状螺旋线为 0;宝塔形螺旋线有±之分) ; 5.螺旋线垂直(VER)方向变化的螺距 (若输入 0,就是平面螺旋线) ; 6.每条螺旋线的近似线数(默认为 30;数值愈大,近似程度愈高) 。 小议: 1.该软件最大的特点是操作简便,通俗易懂; 2.能画材料为圆形截面的各类尺寸形状的弹簧本体(无论是柱状还是宝塔状) ; 3.设计完整弹簧还需继续画出弹簧的尾扣部分(无论是压簧还是拉簧) ; 4.非圆截面(矩形、棱形、梯形)的弹簧用此
方法绘制是不可行的; 5.普通螺纹和梯形螺纹的螺旋面用此方法绘制也是不可行的; 6.用此方法绘制的普通弹簧形状十分逼真、“准确”,尤其是赋予着色、渲染后,在三维立体 装配图中几乎可以达到“以假乱真”的地步。 但是从该立体弹簧上不能“提取”任何有用的平面 元素(包括各种剖切面) ,原因就是我们熟悉的各种弹簧的二维平面视图是机械制图国家标 准规定的“简易画法”;更何况参数化绘制的弹簧也是一种近似的方法。
画螺旋线的好方法
将下列程序复制到工具/Autolisp/visual lisp 编辑器,然后粘贴保存为 lisp 源文件类型,要用时只 需加载该程序(工具/加载应用程序)用是只需用命令:SPL
(defun C:SPL (/ SD ED THS TAS NVS STEP X Y Z R A H) (setq SD (/ (getreal "螺旋起始直径: ") 2)) (setq ED (/ (getreal "螺旋终点直径: ") 2)) (setq THS (setq TAS (setq NVS (getreal "螺旋总高(每圈高度 X 圈数): ")) (getreal "总角度数(360 X 圈数): ")) (getint "节点数([总角度数/间隔角度]+1): "))
(setq STEP (- NVS 1)) (setq X (/ (- ED SD) STEP)) (setq Y (/ THS STEP)) (setq Z (/ TAS STEP)) (setq R SD) (setq A 0) (setq H 0) (setvar "CMDECHO" 0) (command "3DPOLY" (strcat (rtos R) "
用 EXCEL 将螺旋线的 X、 Z 坐标计算出来, Y、 用“另存为”中的“CSV (逗号分隔) ”格式存盘为.CSV 格式文件,用记事本打开此文件后全部复制。 进入 ACAD 中,在命令行中执行 3DPOLY,需坐标时用 CTRL+V 将数据粘过去就 OK!
用 excel 画螺旋线的话,只要知道 x,y,z,的坐标方程式就很容易画出来了。 也可以不存为 csv 格式, 如果 x 为 A 列, 为 B 列, 为 c 列, D1 输入公式“=a1&","&b1&","&c1”, y z 在 然后拖动到其它行构成如“x,y,z”的点表;复制 D 列的内容; 在 Acad 命令行输入命令“3dpoly”,回车,按“F2”切换至文本屏幕,粘贴,回车 些画法都是近似的,ACAD 的三维螺旋线用 PEDIT 光滑后无法作为拉伸的路径。因此这些螺旋 体都是一段一段的,精度开高一点,文件就比较大了,一般除了做特写,没多少实际意义。 用 INVENTOR 做就太简单了! !
zxdcad 附带了这个的图片 :
有个 lisp 小程序可以画,注意“每圈线段数”输入一个大于 30 的数,才显得圆。 ;; HELIX .LSP 螺旋线生成 (Defun C:Helix (/ p r b a m n x y da dz) (SetQ p (GetPoint "\n 中心点: ") x (Car p) y (Cadr p)
z (Caddr p) r (GetDist p "\n 半径: ") b (GetDist p "\n 总高度: ") a (GetAngle p "\n 起始角: ") m (GetInt "\n 圈数: ") n (GetInt "\n 每圈线段数: ") da (/ (* m 2 Pi) (* m n)) dz (/ b (* m n)) ) (Command "3dpoly") (Repeat (1
+ (* m n)) (Command (Polar (List x y z) a r)) (SetQ a (+ a da) z (+ z dz) ) ) (Command "") (PrinC) )
直接画是很难的.你可以先用“电子表格”按阿基米德螺线公式计算出一列成对的 X、Y 的值。并做成“X,Y” 的形式, 然后复制这一列值, CAD 里画样条时粘贴上去就成了, 在 “电子表格”中取样越细, 画的图越精确, , “电子表格”中取样细不会增加人的工作量的。 2。还可以用 CAXA 画,那更方便。 阿基米德螺旋线 用 autolisp 编程可以实现. (command "pline" ) (setq n 0) (repeat 1000 (command (polar (list 0 0) (/ n 57.3) n)) (setq n (1+ n)) ) (command) 弹簧和螺纹(三维) 1、打开 CAD 后,找工具/AUTOLISP/VISUAL LISP 编辑器,打开.点新建文件 2、然后输入 (defun c:luoxuan (/) (setq b1 (getpoint "请指定螺旋线基点: ")) (setq r (getreal "请输入螺纹平均半径: "))
(setq disp (getreal "请输入螺纹节距: ")) (setq n (getint "请输入每圈细化段数: ")) (setq delta (/ (* 2.0 pi) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq jj 0) (Command "UCS" "o" b1) (Command "3dpoly" (list r 0 0)) (repeat n (setq jj(+ jj 1) (setq ang(+ delta ang)) (setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j jj)))) (Command pt2) ) (Command "") ) 存盘为 luoxuan.lsp,关闭编辑器 3、 要用时, 点工具/AUTOLISP/加载, 找到 luoxuan.lsp 文件将其加载, 关闭对话框. 在命令行输入 luoxuan 回车,就开始了螺旋线的绘制
Visual LISP 开发三维圆柱螺旋线 (2007-01-25 12:29:42) 标签:螺旋线 visual t1 ii 母线 分类:CAD 开发专题
* 圆柱螺旋线的形成 圆柱螺旋线是技术上应用最广的空间曲线, 其形成如图 1 所示。 一动点 M 沿圆柱的母线 AB 作等速直线运动,而该母线又绕圆柱的轴线作等角速旋转时,点 M 的运动轨迹即为圆柱螺旋线。 * 数学模型 当圆柱螺旋线的轴线与坐标系的 Z 轴重合时, 圆柱螺旋线上动点 M(x,y,z)的参数方程如下: x=rcosα y=rsinα z=±t1*α/(2π) 在参数方程中:r 为圆柱面的半径,α 为螺旋线升角,t1 为导程(即母线 AB 旋转一周时, 动点 M 沿轴线方向上升的距离) ,右旋取正号,左旋取负号。 程序代码
打开 AutoCAD2000 进入 Visual LISP 开发环境,新建一个文件,在 Visual LISP 文本编辑器 窗口进行程序代码编制。 绘制圆柱螺旋线的 AutoLISP 程序代码如下: ; This program is using for drawing a helix (setq (setq (setq (setq (setq (setq (setq (setq (setq (setq b1 r t1 (getpoint "请输入基点:")) (getreal "半径 r=:")) (getreal "节距 t1=:"))
k (getint "段数 k=:")) n (getint "圈数 n=:")) ta j1 a jj ii (/ (* 2 (/ t1 0) 0) 0) "ucs" "o" b1) (list r 0 0)) "3dpoly" k)) 3.14159) k))
(command (command (repeat n (repeat k (setq (setq (setq (setq (setq (setq ) (setq (setq ) (command ii z jj a
(+ (+
jj ta
1)) a)) (cos (sin jj)) x y z)) a))) a)))
x (* r y (* r z p2 (* j1 (list p2) (+ ii
(command
1)) ii))
(* t1 "" )
在电子图版 CAXA 中用公式曲线画好,然后存为 CAD 的 DWG 文件即可!哈哈!这是最省 事的做法!
应该用 lisp 代码比较好,但是好象很多人都不愿学那个
有一种比较简单的办法是用 excel 获得点坐标
1.新建一个 excel 表,a1 单元格中输入 1 2.在 a2 单元格输入公式:=30*SIN(A1*PI()/180)
其中 30 是振幅,a1 是指 a1 单元格,PI()/180 是把弧度转为角度
3.在 a3 单元格输入:=A1&","&B1 为了在输入坐标时要用逗号把数字分开
4.在 b1 单元格中输入 2,,选中 a1-a3 单元格,用句柄拖好 b1-b3
5.选中 a1-b3,用句柄拖到第 360 行
6.选中第三列,复制
7.在 acad 中点选 pline 命令,用鼠标点击命令行,按下"ctrl+V"
祝成功
正确的程序应该是: (defun c:zx(/ a b c x y h os) (setq a 1) (setq b 2) (setq c 3) (setq h 0.01) (setq x 0.0) (setq os (getvar "osmode"))(setvar "osmode" 0) (command "line" "0,0") (while (
这样写更美观、更好懂些(多用个局部变量 p) : (defun c:zx(/ a b c x y h p os) (setq a 1 b 2 c 3 h 0.01 x 0.0) (setq os (getvar "osmode"))(setvar "osmode" 0) (command "line" "0,0") (while (
程序由三部分组成,主体和两个地位相同的子函数(局部的) ,主体完成周期、振幅和起点的输入与分 析计算,子函数 rp 完成正弦函数值的计算并产生所需要的循环画图,子函数 fp 完成坐标值的平移和旋转 变换,并将计算值合成点供 rp 使用: (defun c:sl( / p1 p2 p3 x0 y0 x y a c d f h fp rp) (defun fp(x y / xx yy) (setq xx (- (* x (cos a)) (* y (sin a)))) (setq yy (+ (* x (sin a)) (* y (cos a)))) (list (+ xx x0) (+ yy y0)) ) (defun rp(n dx) (repeat n (setq d (+ d dx) x (* d c) y (sin x) x (* (/ d 180) h) y (* f y)) (command (fp x y)) )
) (setq p1 (getpoint "\n 指定起点") p2 (getpoint p1 "\n 指定终点")) (setq p3 (getpoint p1 "\n 指示振幅") c (/ pi 180)) (setq x0 (car p1) y0 (cadr p1) h (distance p1 p2) a (angle p1 p2)) (setq x (- (car p3) x0) y (- (cadr p3) y0) f (- (* y (cos a)) (* x (sin a)))) (setq d 0.0 p3 (getvar "osmode")) (command "cmdecho" 0 "osmode" 0 "spline" p1) (rp 6 5) (rp 15 2) (rp 60 1) (rp 15 2) (rp 5 5) (command p2 "" "" "" "osmode" p3) (princ) ) 这个程序只完成半个周期的绘制,实际使用中多半只需如此。程序启动后需要输入三个点:起点、终 点和第三点 p1,p2,p3,程序根据 p1,p2 计算半周期,将 p3 到 p1,p2 连线的距离作为振幅,同时 p3 在 p1, p2 连线的哪一边决定了曲线画在 p1,p2 连线的哪一边。所有 CAD 有关点输入的方式与技巧,在
此都适用。 下图是用这个程序产生的螺旋推进器的图:
此主题相关图片如下:
如果使用 CAD 自带的坐标旋转功能, 则程序还可以进一步简化。 另外“sl”与 CAD 的剖切指令的缩写同 名,好在三维指令使用的不多,并且此命令有工具按钮,所以冲突不大,改成其他的名称是很容易的。
EXCEL 中如何画正弦曲线(sinx) 发表于 2007-8-17 15:16:00 回复(1)
fujian1115
同 学 中 午 问 到 一 个 问 题 , 即 EXCEL 中 如 何 画 正 弦 曲 线 ,方 法 解 答 如 下 :
一 设 置 x.y 轴 的 值 x:在 第 一 列 A 中 , 取 A1 到 A361( 不 为 A360) 为 装 载 X 轴 数 值 的 单 元 格 , A1 输 入 0, A2 输 入 =A1+2*PI()/360( 不 能 将 =或 者 *遗 忘 ) ,然 后 拖 动 填 充 可 完 成 数 据输入; y:同 样 取 B1 到 B361, 在 B1 中 输 入 =sin(a1),然 后 拖 动 填 充 至 B361 完 成 数 据 输 入。 二 绘制曲线 选 中 Y 轴 的 所 有 数 据 即 B1 到 B361) 然 后 点 常 用 工 具 栏 里 的 “图 表 向 导 ”按 钮 , ( , 弹 出 对 话 框 , 图 表 类 型 选 择 “XY 散 点 图 ”, 右 边 的 子 图 表 类 型 选 择 “无 数 据 点 平 滑 线 散 点 图 ”,然 后 点 击 完 成 即 可 ,也 可 点 “下 一 步 ”设 置 图 表 上 显 示 X,Y 轴 标 志 的 字样。 说明: 步 骤 一 中 的 单 元 格 列 数 取 360, 是 为 了 在 最 后 的 图 表 中 显 示 0, 360 充 到 度 数 , 如 果 取 40, 100 也 可 以 划 出 曲 线 , 但 横 轴 上 标 注 的 曲 线 X 轴 范 围 是 0-40 和 0-1 00, 而 不 是 0-360; 同 时 取 值 越 多 , 曲 线 越 平 滑 。
步 骤 二 中 的 图 表 类 型 , 也 可 以 选 择 自 定 义 或 者 “XY 散 点 图 ”中 子 类 型 “平 滑 线 散 点 图 ”等 , 只 是 效 果 不 同 。
用 Autolisp 在 AutoCAD 中实现多种曲线的绘制
一、引言: AutoCAD 自 1982 年由 Autodesk 公司推出以来,经历了 20 年的发展更 新,目前,已深入到包括机械、建筑、服装、航天航空、地质气象等等的众 多领域中。AutoCAD 已成为众多工程设计人员的首选设计软件,其格式也 逐渐成为各 CAD 系统间的交换标准。 AutoCAD 之所以有如此广泛的应用,除了其功能强大、易学易用外, 还在于它是一个开放的交互软件,自 85 年推出的 2.17 版中,AutoCAD 就 内嵌了 Autolisp 语言,方便用户对其进行二次开发。自此,便有无数的工程 技术人员成为 Autodesk 公司的编外程序员。 随着 AutoCAD 版本的不断升级, 它所支持的开发环境也不断增加,如:ADS、ARX、Diesel、DCL、 VBA 等等。但由于方便和易学易用,Autolisp 始终是技术人员在开发 AutoCAD 时运用最多的编程语言。 同时也有更多的工程技术人员投入到 Autolisp 的学 习之中来。但是
,毕竟 Autolisp 也是一种编程语言,学习起来远不如学习 AutoCAD 的操作来得简单。 故也有部分技术人员在学习过程中有危难情绪, 针对这一情况, 本人在此通过一种方法、 三个例子来阐述 Autolisp 编程的一 般过程,希望能对 Autolisp 初学者有所帮助。 二、Autolisp 的二次开发: (一) 问题提出: 尽管 AutoCAD 在各个领域中有着广泛的应用,但总不会面面俱到,在 机械行业中,经常要画一些复杂曲线,如:三角函数曲线、渐开线、螺旋线 等等。这些曲线在 AutoCAD 中没有专门的命令,难以用一般的方法绘制, 尽管机械制图国家标准中有用圆弧近似替代渐开线和螺旋线的画法, 但它们 一不准确,不能通过装配干涉,二不方便,需要取很多位置点才能画出。而 用 Autolisp 编程绘制,却能快速准确的得到所需图形。 (二) 曲线绘制: 1、 获取曲线的数学模型: 正弦曲线: x = a y = sin a 渐开线: x = br * (cos a + a sin a) y = br * (sin a + a cos a)
圆柱螺旋线: x = r cos a y = r sin a z = s * a / (2π)
(s 取正值为右旋、取负值为左旋)
AUTO CAD 中如何画螺旋线?(请教思路) 中如何画螺旋线?(请教思路) ?(请教思路 回答:1 浏览:472 AUTO CAD 中如何画螺旋线?(请教思路) 最好有几个步骤,请用中文!
10 分
提问时间:2005-05-11 01:32
最佳答案 此答案由提问者自己选择,并不代表爱问知识人的观点
揪错 ┆ 评论
wang [先知] 1、打开CAD后,找工具/AUTOLISP/VISUAL 2、然后输入 (defun c:luoxuan (/) (setq b1 (getpoint "请指定螺旋线基点: ")) (setq r (getreal "请输入螺纹平均半径: ")) (setq disp (getreal "请输入螺纹节距: ")) (setq n (getint "请输入每圈细化段数: ")) (setq delta (/ (* 2.0 pi) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq jj 0) (Command "UCS" "o" b1) (Command "3dpoly" (list r 0 0)) (repeat n (setq jj(+ jj 1) (setq ang(+ delta ang)) (setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j jj)))) (Command pt2) ) (Command "") ) 存盘为 luoxuan.lsp,关闭编辑器 3、要用时,点工具/AUTOLISP/加载,找到 luoxuan.lsp 文件将其加载,关闭对话框.在命令行输 入 luoxuan 回车,就开始了螺旋线的绘制 (摘自:http://www.laohu.net/bbs/dispbbs.asp? boardID=8&RootID=31787&ID=31960) LISP编辑器,打开.点新建文件
如何绘制三维螺旋线(3dspiral)和平面螺旋线即阿基米德螺旋线(spiral): ①将 Autodesk 公司网站 http://www.icad.com.cn/icad/share/autocadtool.htm 打开上述网页,点击其中的:3dspiral.zip 用于螺旋线的绘制上的可下载软件:“3dspiral.Lsp” 复制到自己计算机硬盘下的“某”文件夹中; ②打开 AutoCADR14 或 R2000 绘图界面,利用 tool 下拉式菜单(Autolisp)load Application 命 令加载(Load)“3dspiral.Lsp”应用软件程序; ③人工键入命令(Command): 3dspiral (按回车键)---绘制三维螺旋线; spiral (按回车键)---绘制二维螺旋线(即阿基米德螺旋线) ④按照自己的设计意图可连续回答该软件设置的 6 项提问后,就能画出较理想的各种螺旋线: 即绘制弹簧的路径(Path)。 运行 3dspiral 命令后,会陆续出现以下 6 个提问: 6 项提问分别是: 1.螺旋线起始的中心坐标; 2.起始的半径值; 3.螺旋线的圈数; 4.螺旋线水平(HOR)方向变化的螺距(柱状螺旋线为 0;宝塔形螺旋线有±之分) ; 5.螺旋线垂直(VER)方向变化的螺距 (若输入 0,就是平面螺旋线) ; 6.每条螺旋线的近似线数(默认为 30;数值愈大,近似程度愈高) 。 小议: 1.该软件最大的特点是操作简便,通俗易懂; 2.能画材料为圆形截面的各类尺寸形状的弹簧本体(无论是柱状还是宝塔状) ; 3.设计完整弹簧还需继续画出弹簧的尾扣部分(无论是压簧还是拉簧) ; 4.非圆截面(矩形、棱形、梯形)的弹簧用此
方法绘制是不可行的; 5.普通螺纹和梯形螺纹的螺旋面用此方法绘制也是不可行的; 6.用此方法绘制的普通弹簧形状十分逼真、“准确”,尤其是赋予着色、渲染后,在三维立体 装配图中几乎可以达到“以假乱真”的地步。 但是从该立体弹簧上不能“提取”任何有用的平面 元素(包括各种剖切面) ,原因就是我们熟悉的各种弹簧的二维平面视图是机械制图国家标 准规定的“简易画法”;更何况参数化绘制的弹簧也是一种近似的方法。
画螺旋线的好方法
将下列程序复制到工具/Autolisp/visual lisp 编辑器,然后粘贴保存为 lisp 源文件类型,要用时只 需加载该程序(工具/加载应用程序)用是只需用命令:SPL
(defun C:SPL (/ SD ED THS TAS NVS STEP X Y Z R A H) (setq SD (/ (getreal "螺旋起始直径: ") 2)) (setq ED (/ (getreal "螺旋终点直径: ") 2)) (setq THS (setq TAS (setq NVS (getreal "螺旋总高(每圈高度 X 圈数): ")) (getreal "总角度数(360 X 圈数): ")) (getint "节点数([总角度数/间隔角度]+1): "))
(setq STEP (- NVS 1)) (setq X (/ (- ED SD) STEP)) (setq Y (/ THS STEP)) (setq Z (/ TAS STEP)) (setq R SD) (setq A 0) (setq H 0) (setvar "CMDECHO" 0) (command "3DPOLY" (strcat (rtos R) "
用 EXCEL 将螺旋线的 X、 Z 坐标计算出来, Y、 用“另存为”中的“CSV (逗号分隔) ”格式存盘为.CSV 格式文件,用记事本打开此文件后全部复制。 进入 ACAD 中,在命令行中执行 3DPOLY,需坐标时用 CTRL+V 将数据粘过去就 OK!
用 excel 画螺旋线的话,只要知道 x,y,z,的坐标方程式就很容易画出来了。 也可以不存为 csv 格式, 如果 x 为 A 列, 为 B 列, 为 c 列, D1 输入公式“=a1&","&b1&","&c1”, y z 在 然后拖动到其它行构成如“x,y,z”的点表;复制 D 列的内容; 在 Acad 命令行输入命令“3dpoly”,回车,按“F2”切换至文本屏幕,粘贴,回车 些画法都是近似的,ACAD 的三维螺旋线用 PEDIT 光滑后无法作为拉伸的路径。因此这些螺旋 体都是一段一段的,精度开高一点,文件就比较大了,一般除了做特写,没多少实际意义。 用 INVENTOR 做就太简单了! !
zxdcad 附带了这个的图片 :
有个 lisp 小程序可以画,注意“每圈线段数”输入一个大于 30 的数,才显得圆。 ;; HELIX .LSP 螺旋线生成 (Defun C:Helix (/ p r b a m n x y da dz) (SetQ p (GetPoint "\n 中心点: ") x (Car p) y (Cadr p)
z (Caddr p) r (GetDist p "\n 半径: ") b (GetDist p "\n 总高度: ") a (GetAngle p "\n 起始角: ") m (GetInt "\n 圈数: ") n (GetInt "\n 每圈线段数: ") da (/ (* m 2 Pi) (* m n)) dz (/ b (* m n)) ) (Command "3dpoly") (Repeat (1
+ (* m n)) (Command (Polar (List x y z) a r)) (SetQ a (+ a da) z (+ z dz) ) ) (Command "") (PrinC) )
直接画是很难的.你可以先用“电子表格”按阿基米德螺线公式计算出一列成对的 X、Y 的值。并做成“X,Y” 的形式, 然后复制这一列值, CAD 里画样条时粘贴上去就成了, 在 “电子表格”中取样越细, 画的图越精确, , “电子表格”中取样细不会增加人的工作量的。 2。还可以用 CAXA 画,那更方便。 阿基米德螺旋线 用 autolisp 编程可以实现. (command "pline" ) (setq n 0) (repeat 1000 (command (polar (list 0 0) (/ n 57.3) n)) (setq n (1+ n)) ) (command) 弹簧和螺纹(三维) 1、打开 CAD 后,找工具/AUTOLISP/VISUAL LISP 编辑器,打开.点新建文件 2、然后输入 (defun c:luoxuan (/) (setq b1 (getpoint "请指定螺旋线基点: ")) (setq r (getreal "请输入螺纹平均半径: "))
(setq disp (getreal "请输入螺纹节距: ")) (setq n (getint "请输入每圈细化段数: ")) (setq delta (/ (* 2.0 pi) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq jj 0) (Command "UCS" "o" b1) (Command "3dpoly" (list r 0 0)) (repeat n (setq jj(+ jj 1) (setq ang(+ delta ang)) (setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j jj)))) (Command pt2) ) (Command "") ) 存盘为 luoxuan.lsp,关闭编辑器 3、 要用时, 点工具/AUTOLISP/加载, 找到 luoxuan.lsp 文件将其加载, 关闭对话框. 在命令行输入 luoxuan 回车,就开始了螺旋线的绘制
Visual LISP 开发三维圆柱螺旋线 (2007-01-25 12:29:42) 标签:螺旋线 visual t1 ii 母线 分类:CAD 开发专题
* 圆柱螺旋线的形成 圆柱螺旋线是技术上应用最广的空间曲线, 其形成如图 1 所示。 一动点 M 沿圆柱的母线 AB 作等速直线运动,而该母线又绕圆柱的轴线作等角速旋转时,点 M 的运动轨迹即为圆柱螺旋线。 * 数学模型 当圆柱螺旋线的轴线与坐标系的 Z 轴重合时, 圆柱螺旋线上动点 M(x,y,z)的参数方程如下: x=rcosα y=rsinα z=±t1*α/(2π) 在参数方程中:r 为圆柱面的半径,α 为螺旋线升角,t1 为导程(即母线 AB 旋转一周时, 动点 M 沿轴线方向上升的距离) ,右旋取正号,左旋取负号。 程序代码
打开 AutoCAD2000 进入 Visual LISP 开发环境,新建一个文件,在 Visual LISP 文本编辑器 窗口进行程序代码编制。 绘制圆柱螺旋线的 AutoLISP 程序代码如下: ; This program is using for drawing a helix (setq (setq (setq (setq (setq (setq (setq (setq (setq (setq b1 r t1 (getpoint "请输入基点:")) (getreal "半径 r=:")) (getreal "节距 t1=:"))
k (getint "段数 k=:")) n (getint "圈数 n=:")) ta j1 a jj ii (/ (* 2 (/ t1 0) 0) 0) "ucs" "o" b1) (list r 0 0)) "3dpoly" k)) 3.14159) k))
(command (command (repeat n (repeat k (setq (setq (setq (setq (setq (setq ) (setq (setq ) (command ii z jj a
(+ (+
jj ta
1)) a)) (cos (sin jj)) x y z)) a))) a)))
x (* r y (* r z p2 (* j1 (list p2) (+ ii
(command
1)) ii))
(* t1 "" )
在电子图版 CAXA 中用公式曲线画好,然后存为 CAD 的 DWG 文件即可!哈哈!这是最省 事的做法!
应该用 lisp 代码比较好,但是好象很多人都不愿学那个
有一种比较简单的办法是用 excel 获得点坐标
1.新建一个 excel 表,a1 单元格中输入 1 2.在 a2 单元格输入公式:=30*SIN(A1*PI()/180)
其中 30 是振幅,a1 是指 a1 单元格,PI()/180 是把弧度转为角度
3.在 a3 单元格输入:=A1&","&B1 为了在输入坐标时要用逗号把数字分开
4.在 b1 单元格中输入 2,,选中 a1-a3 单元格,用句柄拖好 b1-b3
5.选中 a1-b3,用句柄拖到第 360 行
6.选中第三列,复制
7.在 acad 中点选 pline 命令,用鼠标点击命令行,按下"ctrl+V"
祝成功
正确的程序应该是: (defun c:zx(/ a b c x y h os) (setq a 1) (setq b 2) (setq c 3) (setq h 0.01) (setq x 0.0) (setq os (getvar "osmode"))(setvar "osmode" 0) (command "line" "0,0") (while (
这样写更美观、更好懂些(多用个局部变量 p) : (defun c:zx(/ a b c x y h p os) (setq a 1 b 2 c 3 h 0.01 x 0.0) (setq os (getvar "osmode"))(setvar "osmode" 0) (command "line" "0,0") (while (
程序由三部分组成,主体和两个地位相同的子函数(局部的) ,主体完成周期、振幅和起点的输入与分 析计算,子函数 rp 完成正弦函数值的计算并产生所需要的循环画图,子函数 fp 完成坐标值的平移和旋转 变换,并将计算值合成点供 rp 使用: (defun c:sl( / p1 p2 p3 x0 y0 x y a c d f h fp rp) (defun fp(x y / xx yy) (setq xx (- (* x (cos a)) (* y (sin a)))) (setq yy (+ (* x (sin a)) (* y (cos a)))) (list (+ xx x0) (+ yy y0)) ) (defun rp(n dx) (repeat n (setq d (+ d dx) x (* d c) y (sin x) x (* (/ d 180) h) y (* f y)) (command (fp x y)) )
) (setq p1 (getpoint "\n 指定起点") p2 (getpoint p1 "\n 指定终点")) (setq p3 (getpoint p1 "\n 指示振幅") c (/ pi 180)) (setq x0 (car p1) y0 (cadr p1) h (distance p1 p2) a (angle p1 p2)) (setq x (- (car p3) x0) y (- (cadr p3) y0) f (- (* y (cos a)) (* x (sin a)))) (setq d 0.0 p3 (getvar "osmode")) (command "cmdecho" 0 "osmode" 0 "spline" p1) (rp 6 5) (rp 15 2) (rp 60 1) (rp 15 2) (rp 5 5) (command p2 "" "" "" "osmode" p3) (princ) ) 这个程序只完成半个周期的绘制,实际使用中多半只需如此。程序启动后需要输入三个点:起点、终 点和第三点 p1,p2,p3,程序根据 p1,p2 计算半周期,将 p3 到 p1,p2 连线的距离作为振幅,同时 p3 在 p1, p2 连线的哪一边决定了曲线画在 p1,p2 连线的哪一边。所有 CAD 有关点输入的方式与技巧,在
此都适用。 下图是用这个程序产生的螺旋推进器的图:
此主题相关图片如下:
如果使用 CAD 自带的坐标旋转功能, 则程序还可以进一步简化。 另外“sl”与 CAD 的剖切指令的缩写同 名,好在三维指令使用的不多,并且此命令有工具按钮,所以冲突不大,改成其他的名称是很容易的。
EXCEL 中如何画正弦曲线(sinx) 发表于 2007-8-17 15:16:00 回复(1)
fujian1115
同 学 中 午 问 到 一 个 问 题 , 即 EXCEL 中 如 何 画 正 弦 曲 线 ,方 法 解 答 如 下 :
一 设 置 x.y 轴 的 值 x:在 第 一 列 A 中 , 取 A1 到 A361( 不 为 A360) 为 装 载 X 轴 数 值 的 单 元 格 , A1 输 入 0, A2 输 入 =A1+2*PI()/360( 不 能 将 =或 者 *遗 忘 ) ,然 后 拖 动 填 充 可 完 成 数 据输入; y:同 样 取 B1 到 B361, 在 B1 中 输 入 =sin(a1),然 后 拖 动 填 充 至 B361 完 成 数 据 输 入。 二 绘制曲线 选 中 Y 轴 的 所 有 数 据 即 B1 到 B361) 然 后 点 常 用 工 具 栏 里 的 “图 表 向 导 ”按 钮 , ( , 弹 出 对 话 框 , 图 表 类 型 选 择 “XY 散 点 图 ”, 右 边 的 子 图 表 类 型 选 择 “无 数 据 点 平 滑 线 散 点 图 ”,然 后 点 击 完 成 即 可 ,也 可 点 “下 一 步 ”设 置 图 表 上 显 示 X,Y 轴 标 志 的 字样。 说明: 步 骤 一 中 的 单 元 格 列 数 取 360, 是 为 了 在 最 后 的 图 表 中 显 示 0, 360 充 到 度 数 , 如 果 取 40, 100 也 可 以 划 出 曲 线 , 但 横 轴 上 标 注 的 曲 线 X 轴 范 围 是 0-40 和 0-1 00, 而 不 是 0-360; 同 时 取 值 越 多 , 曲 线 越 平 滑 。
步 骤 二 中 的 图 表 类 型 , 也 可 以 选 择 自 定 义 或 者 “XY 散 点 图 ”中 子 类 型 “平 滑 线 散 点 图 ”等 , 只 是 效 果 不 同 。
用 Autolisp 在 AutoCAD 中实现多种曲线的绘制
一、引言: AutoCAD 自 1982 年由 Autodesk 公司推出以来,经历了 20 年的发展更 新,目前,已深入到包括机械、建筑、服装、航天航空、地质气象等等的众 多领域中。AutoCAD 已成为众多工程设计人员的首选设计软件,其格式也 逐渐成为各 CAD 系统间的交换标准。 AutoCAD 之所以有如此广泛的应用,除了其功能强大、易学易用外, 还在于它是一个开放的交互软件,自 85 年推出的 2.17 版中,AutoCAD 就 内嵌了 Autolisp 语言,方便用户对其进行二次开发。自此,便有无数的工程 技术人员成为 Autodesk 公司的编外程序员。 随着 AutoCAD 版本的不断升级, 它所支持的开发环境也不断增加,如:ADS、ARX、Diesel、DCL、 VBA 等等。但由于方便和易学易用,Autolisp 始终是技术人员在开发 AutoCAD 时运用最多的编程语言。 同时也有更多的工程技术人员投入到 Autolisp 的学 习之中来。但是
,毕竟 Autolisp 也是一种编程语言,学习起来远不如学习 AutoCAD 的操作来得简单。 故也有部分技术人员在学习过程中有危难情绪, 针对这一情况, 本人在此通过一种方法、 三个例子来阐述 Autolisp 编程的一 般过程,希望能对 Autolisp 初学者有所帮助。 二、Autolisp 的二次开发: (一) 问题提出: 尽管 AutoCAD 在各个领域中有着广泛的应用,但总不会面面俱到,在 机械行业中,经常要画一些复杂曲线,如:三角函数曲线、渐开线、螺旋线 等等。这些曲线在 AutoCAD 中没有专门的命令,难以用一般的方法绘制, 尽管机械制图国家标准中有用圆弧近似替代渐开线和螺旋线的画法, 但它们 一不准确,不能通过装配干涉,二不方便,需要取很多位置点才能画出。而 用 Autolisp 编程绘制,却能快速准确的得到所需图形。 (二) 曲线绘制: 1、 获取曲线的数学模型: 正弦曲线: x = a y = sin a 渐开线: x = br * (cos a + a sin a) y = br * (sin a + a cos a)
圆柱螺旋线: x = r cos a y = r sin a z = s * a / (2π)
(s 取正值为右旋、取负值为左旋)