QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32255|回复: 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还没这个功能.
" G8 V) d% C! ?2 Q另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表5 j  T0 I4 n' H/ U
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

6 r; X1 u" k! V, z/ G9 Q, r+ [8 v: h. ~- a
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。1 u2 I4 B! C1 B: b% Y6 f: Q0 S8 |
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:9 U; P- I/ V2 n: F$ n& o
" \* ^3 Z0 F+ Z9 r. f& T/ k% ?
Sub JKX()
8 v. E; ^5 W; Q3 B    Dim O As Variant '基圆圆心坐标
1 a! H8 F  V  l: C: V4 ?5 h    Dim R As Double '基圆半径' q3 y! `: ^2 d
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针); z. ?, A0 c; @. ]# k6 k( Y5 n
    Dim C As AcadCircle '基圆
, X5 B$ s8 @  ]1 }- V" _2 c( n" A
    Dim I As Integer '样条曲线拟合点数量
* _; [- Y3 Q& m5 g9 H/ K    Dim J As Integer '循环变量
" N/ w3 p& a* H2 q    Dim TT As Double '逐点展开时的展开角度
# B, B/ \9 D& n8 f5 M+ k/ X    Dim P() As Double '样条曲线拟合点坐标  ?2 L. p7 u% T/ ]- m" q9 }
    Dim T1(2) As Double '样条曲线起点切线方向, T. M7 b. m0 m: P  c
    Dim T2(2) As Double '样条曲线端点切线方向
. c/ k- n" e- e5 P) ]0 y   
4 v7 P( [2 k6 L, s    With ThisDrawing8 v/ r2 O  @9 b6 S
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
8 w- y& t, }; j+ t, ^+ L/ e8 g; M        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
& T/ _/ i. g" M2 E4 q# P        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径) ~- U+ H6 d1 U
        Set C = .ModelSpace.AddCircle(O, R) '画基圆7 ?, K# z& ~1 `! X: C% q
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
1 A# n  u! j' y6 d5 Z: x' e$ K9 _, N
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
) d1 t: ?3 i: l            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度2 o  h1 m( D/ e& X& g$ K5 V
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
, |: r5 y. D8 x8 d0 C; }) z* o                T = 360
* e$ i7 x+ I. L: O" P# K            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序) k# R" B- s- L/ A
                C.Delete4 }' c, h+ W% W+ p- n
                Exit Sub
/ l& J: A' Y0 ~% R7 g            End If
+ l) J* C6 X- R8 C        Loop# _$ B7 W8 w' o1 \5 o0 I
        T = T * 1.74532925199433E-02 '换算为弧度
1 I9 s( [2 T* H: c; y2 l/ b        Err.Clear '清空错误代码,便于用户下一步输入5 B5 U% R: w) @5 J" E
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入0 ?% B3 k! _6 w  ?6 w
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量2 L3 o# ]8 w1 `6 h% }
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
1 m: ~7 _2 T5 W9 Z1 r
                I = 50+ r# ~) `4 R  {2 c. p5 |
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
! ?, ?( i  \/ t; b/ i                C.Delete9 T: d: E: x8 v0 g& m
                Exit Sub
4 e  j& J" U# B            End If
; c. T  ]: h+ E+ m+ l9 d" [, D: M
        Loop
  U9 C1 L3 ~( r6 w, N$ ~( K        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
, B  u# @  C; x       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标( {! G1 g* n% @4 Q
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度! ]/ w: _  a. f. k! f! F; |4 Z' k
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)" v- b  f9 L! D- u/ B# m$ W# ~, t
            If T > 0 Then '判断逆时针展开还是顺时针展开
& d8 J! a& h0 U: ?; r                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
) V' S' T0 X- k# t            Else- b* a, y8 S; e, O. }) E+ e
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
8 C# }* }6 f. R8 L& ?8 `            End If; c' E; @4 a# S9 E
        Next8 t% z! h7 ~; }( M# L
        T1(0) = 1 '起点切向" e3 J3 V4 E+ s/ L  D
        T2(0) = Cos(T) '端点切向. K& ^2 B; D/ \; L1 k+ H
        T2(1) = Sin(T)
2 B. B2 a( k7 A        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
/ U: f$ r5 K$ V3 g! Y, Y    End With
! l" D7 i! n- W7 P5 x  ~10: End Sub
7 c& Q% b) ?; J! J
8 x  V% s& p. I' o5 S! `' j
2 F. i' t8 f/ M. f加载程序方法一:
) z% e+ v1 q/ G. k/ f6 n4 r; m1、拷贝上面的源代码;
4 Y3 \0 ^2 R8 X7 `8 C- [( N2、打开autocad;+ [+ e5 w6 R, r4 K' u
3、Alt+F11+ Y1 Y$ C2 D" x0 S. n% u
4、“插入”→“模块”→粘贴4 X, w/ w9 v8 F( s4 c

: \! {2 R7 o8 f$ \/ K) G- u加载程序方法二:* ]( y; n' @1 \) M) ?
1、下载附件并解压8 p) I% g) A- z8 J" G8 |5 r6 J: {
2、打开autocad;
# ^* u  ~- ~; ~3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;) a. x* @. a  o: O8 q

& P5 F' I6 b; h; N8 x使用方法一:6 B7 Y, T: m) m+ I( Z1 d
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
8 F$ P2 D) E& g0 y# G5 B1 A7 S. ]8 W# h
使用方法二:
' K/ `! q3 b+ u) p8 y在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。, I& b( m' [0 z6 G5 c

9 \4 W+ i  Y2 Q2 R% m使用方法三:
9 K- D+ n, m- e& k9 }在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。" e7 t+ `0 K! z1 T) o: X4 D7 Y
1 M* i# R7 w$ |& Z
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.- Z, p1 j" m1 o+ S- C  |
Dim I As Integer '样条曲线拟合点数量
" H9 z) b: J8 z" k! M8 ?我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?+ Z, A4 R# E/ \- i' h

) I3 N* }/ \# `6 U& q# ]* {- d9 Z[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
4 A8 l1 s3 s" q  F3 I2 M3 ^9 O大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1) ?5 H% L! H' w! j7 ^
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???2 j& b% w) w# h
$ W1 l+ y5 R" q9 J1 s5 H
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
! Z3 M- `8 d& Q7 q3 S+ YCAD是不是只可以用C语言编程啊???
9 n' d3 u& G7 {* L9 a2 }% T* i; d1 h( X* g  o& p; s/ |* t
不能用DELPHI吧?????
( o: ~0 @) h4 R8 q) \* B* e% i

' O& I5 ^# h( w& V+ e7 P7 S( P
干国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 )

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