QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32171|回复: 66
收起左侧

[讨论] CAD中渐开线的画法!(高手请进)

[复制链接]
发表于 2007-3-30 09:25:46 | 显示全部楼层 |阅读模式 来自: 中国北京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
高手一定要不吝赐教啊,要求用CAD精确画出一个基圆大小为5,相位角为1440度的一段渐开线.(不要近似画法,精确到什么程度呢,就是我在你画的这段线上任意取一点,该点点坐标符合渐开线公式计算值)
 楼主| 发表于 2007-3-30 10:14:15 | 显示全部楼层 来自: 中国北京
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
发表于 2007-3-30 12:55:05 | 显示全部楼层 来自: 中国江苏无锡
在线切割的软件中有这种功能,可以提供齿轮的渐开线曲线,但要随意画渐开线并达到理论的精度好像目前仅CAD还没这个功能.& x; I6 l: R2 ?: B# O8 H
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表' m# I7 h1 c8 @5 h9 C) l
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
- F2 @- I. }: j9 g: _; O# t

& [: Q+ r- e/ \楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
6 t& I- w  i! o! D8 e9 I8 g3 x考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
' F/ D9 p5 {" o. I
6 F1 Z8 l& f( a" @Sub JKX()
: V. q1 e' F9 M. [& l" ~8 W% @    Dim O As Variant '基圆圆心坐标7 e5 b5 l; _1 y8 o( M2 s
    Dim R As Double '基圆半径
% n( e, k4 B1 [: a8 p6 N  K
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
3 [* R7 N2 T1 V. k3 N( N2 h, X5 @    Dim C As AcadCircle '基圆
1 {$ ]' f8 Y' O$ T5 ], U
    Dim I As Integer '样条曲线拟合点数量
- m3 M5 O& N3 _8 ^5 |    Dim J As Integer '循环变量
/ y8 G( Z/ x1 z- i3 ?2 ?    Dim TT As Double '逐点展开时的展开角度6 @6 _- V; O' f- F9 j; m
    Dim P() As Double '样条曲线拟合点坐标3 o6 y& I1 b, Q8 _/ [4 @# j1 X
    Dim T1(2) As Double '样条曲线起点切线方向/ l6 o# V9 X% s/ R  h* b
    Dim T2(2) As Double '样条曲线端点切线方向2 s) Q  d* W; }  W3 a: [0 t
   
4 p) S- ]2 j- J& F    With ThisDrawing# N, ]) v  I4 a* l
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
9 V, Z" E, W0 ]& G2 y9 Z- K$ u        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
! O; C8 ^: ~  W, K        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径3 @5 G$ d: \) x! R7 I5 x
        Set C = .ModelSpace.AddCircle(O, R) '画基圆- p) g. T' Q- A4 E" R- }' a
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
' \6 C/ w. J7 Z
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入5 k4 P8 X9 y" G3 J) L
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度: m) _+ g& E2 Q' Y6 J4 y$ \
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度  N4 Q% U- _4 Q9 \8 ^+ ?
                T = 3608 V' Y; S" G0 G+ v- Q# D1 q- |2 V
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
. J: U. O8 J+ ]4 A- m                C.Delete* Y8 Z7 {6 g- {
                Exit Sub# y6 K! G8 g4 [) \" j( D
            End If
- {; U3 [! j" k3 Q3 a        Loop
1 f8 s  K9 {8 Q4 Z
        T = T * 1.74532925199433E-02 '换算为弧度
- M# S9 z4 N& m' _  I" @        Err.Clear '清空错误代码,便于用户下一步输入1 \0 V7 v2 A& k" L4 ^; U# @
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
# I+ y4 Y; a# k            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
! x3 B1 |( s' z4 h# J
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
1 t6 C. x: d6 Q- I/ v8 B
                I = 50
4 I4 L4 L6 P# D6 Q            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序2 X# o0 E2 t/ H' |' ~0 h, f
                C.Delete
/ r2 e  ^3 w4 r$ N# m! i                Exit Sub/ C6 @# r0 j" g* W& z6 J
            End If

6 @/ w: x; A5 {        Loop
6 \) K; L0 t% T! o0 [: B+ ^        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组& c! s; K! |8 V  g! g
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标2 E9 I; i, g0 b: |; x  @( C/ L/ H* E+ H
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度! m) I3 R, T8 P; V; m; a4 s2 g
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
# M5 x; L7 ~& D, j& B6 P            If T > 0 Then '判断逆时针展开还是顺时针展开
- T. u# A' J5 r7 l7 P8 x: _                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
6 E# T  y3 ?3 A% E            Else
3 [5 i0 \3 R+ V* k2 C6 i0 q
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标% A( r$ R5 J, {. d. I0 Y6 l4 w* Y
            End If
" q8 j$ b, h/ Q9 C' X* O! k        Next- I+ m+ g4 y0 t& k, D9 G' d
        T1(0) = 1 '起点切向
# h7 I$ t1 s  n& k' i( N
        T2(0) = Cos(T) '端点切向$ N+ _& J8 r6 H) H0 y' Z
        T2(1) = Sin(T)- o2 A4 ]' ?. I' \! \6 R
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线4 Z) |" |8 X$ {! g6 s
    End With2 P* x- y, t* A# Q
10: End Sub6 Z( I1 ]: F9 F. i& v

. q" j" \( w" P0 i* H& b. r0 b; }( D, Q) P
加载程序方法一:
* a# w7 J- t7 k5 @9 s1、拷贝上面的源代码;" K' f) {' k/ Y; H
2、打开autocad;
8 C* @9 R5 b& l. c  _3、Alt+F11
% l& X5 j% U3 m% G$ J7 F' W4、“插入”→“模块”→粘贴: p* J+ C5 L8 \8 C+ b
$ n. I/ U( X/ L$ O
加载程序方法二:2 U2 P2 _2 X0 F( @& _; P
1、下载附件并解压
4 b+ u$ O6 j5 |3 w+ C/ Y4 a0 S* S2、打开autocad;
* \& i# @4 X! s) z! s% T% Q3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;/ P2 {- Q" X. b* j

1 B* G+ E7 p9 B7 K使用方法一:  y7 Z, n3 ~. @5 y, j
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。. c5 w' u" f+ y: @! l7 c

! b4 N' h* Q6 B$ R- n* U使用方法二:0 ?2 j0 W0 Z+ M" Y3 ?( y  A
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
+ ^# m. v* P8 V+ C2 B$ J6 }+ g% A. t( L! n0 M; c* h( R/ S/ }  `, E
使用方法三:
6 B  v! ?1 v+ K) H. R在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。- s& B# ~; L0 v* t5 U3 [, G2 H% X9 g

! `: v) Z* F$ y- a[ 本帖最后由 woaishuijia 于 2007-3-31 12:58 编辑 ]

JKX.rar

7.6 KB, 下载次数: 595

评分

参与人数 1三维币 +20 收起 理由
★新手★ + 20 技术讨论!

查看全部评分

发表于 2007-3-31 12:06:02 | 显示全部楼层 来自: 中国山东烟台
楼上真是太历害了,这样的水平人就是高啊
 楼主| 发表于 2007-3-31 17:16:23 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.# F# f; ]% L( j# I6 N
Dim I As Integer '样条曲线拟合点数量) @( B- s. K( K1 W6 [7 }
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?! ^& O  L9 H5 e5 w

! C9 Y0 x  g" ?3 Z[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
  R# D+ [% d& O7 N大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

AutoCAD下公式曲线(人人都会画函数)经典程序分享

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
! T3 L# ], X* a不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???7 |! V  a1 ]/ L) Q7 r' H4 Q3 {

' {# T  V; s- V不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
9 g# w" O% \' y2 D( j5 c! H( yCAD是不是只可以用C语言编程啊???
* {( l, s/ l: H4 ^8 V
& y" z( ]8 p5 P4 Z. ^不能用DELPHI吧?????

. O$ ?3 @7 G9 S, J* B2 J1 C) d( b/ g& `3 b. l
3 ^: I) T% _. m2 j' i: U& [+ Y
干国CAD二次开发的都知道,VBA  C  AUTOLISP等是常用的开发语言!!
发表于 2007-4-23 14:09:20 | 显示全部楼层 来自: 中国上海
学习了,佩服!以后得好好学习高级应用
发表于 2007-4-23 15:30:22 | 显示全部楼层 来自: 中国山西太原
确实有高人啊,这也不是问题
发表于 2007-4-24 11:36:07 | 显示全部楼层 来自: 中国广西南宁
这里真是高手云集,枉我用了autocad这么多年。以前都是用华正cad画的渐开线,想不到autocad也可以画。学习了。谢谢!
发表于 2007-4-24 13:12:33 | 显示全部楼层 来自: 中国吉林长春
果然牛人多呀,学习了
发表于 2007-5-7 11:13:07 | 显示全部楼层 来自: 中国浙江台州
谢谢5楼的朋友~~学习一下~呵呵~~
发表于 2007-5-7 16:41:14 | 显示全部楼层 来自: 中国黑龙江哈尔滨
5楼真高啊 不知能否到我发的群里面来 真是万分期待啊37350498
发表于 2007-5-8 00:56:51 | 显示全部楼层 来自: 中国湖南益阳
5楼的程序好像是用拟合线连接的吧,不知道能够达到精度要求否
发表于 2007-5-8 09:46:44 | 显示全部楼层 来自: 中国北京
qinjiaqing ,我警告你,同时也敬告你,别人帮你是人情,不帮你是本分,你要清楚了,这里不是你挑衅的地方,请牢记,如果你要是在此挑衅,不会是扣分那么简单的事情。不尊重别人,你等于不尊重自己。
发表于 2007-5-11 15:03:12 | 显示全部楼层 来自: 中国北京
三维网就像水浒中的梁山泊,高手如云阿
发表于 2007-5-11 16:42:17 | 显示全部楼层 来自: 中国天津
强人太多了。什么时候自己能开发出来一个模块那
发表于 2008-10-17 08:19:38 | 显示全部楼层 来自: 中国河南郑州
厉害厉害,
发表于 2008-10-18 08:46:51 | 显示全部楼层 来自: 中国湖南娄底
牛~~顶~~"我爱我家"~~~~~~~
发表于 2008-12-28 12:08:47 | 显示全部楼层 来自: 中国甘肃嘉峪关
高手太多了,厉害啊,佩服,以后要多学习了!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表