QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32129|回复: 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还没这个功能.
/ w8 K* m5 I/ e% n0 |6 s0 m- }! D0 _另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
) n! ~' N+ R1 P- B5 ^怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
$ Y$ P: r8 `/ P" I0 O

! [- Z( d) f+ [2 v& Y楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
9 h% t8 \/ j0 z5 G7 j考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:- F: C6 l; a$ ]9 n
( l5 x3 b; Q* L* m; d
Sub JKX()
' I( A! h5 i' L& F* V8 n9 Q5 z    Dim O As Variant '基圆圆心坐标2 U, V" H7 `5 H' F
    Dim R As Double '基圆半径+ P+ I" j& X# d# ~
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)9 x& n1 N, x1 h" ]1 S
    Dim C As AcadCircle '基圆
. c( U% B/ G, D
    Dim I As Integer '样条曲线拟合点数量( p/ _3 m& g+ J9 m/ y7 }
    Dim J As Integer '循环变量
& C; p4 L% N' f% s    Dim TT As Double '逐点展开时的展开角度1 G% s7 ^+ s7 x# ?7 r& g
    Dim P() As Double '样条曲线拟合点坐标
9 ~, Y: _1 ?& _    Dim T1(2) As Double '样条曲线起点切线方向
$ [& Y  o& F6 s    Dim T2(2) As Double '样条曲线端点切线方向
' }+ M! ]/ L+ i; e7 U8 e$ {    0 x1 R2 }0 z+ R0 x9 a1 n' ^
    With ThisDrawing3 ~9 E, a) Q  q& y
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
( S& A- n; y+ `8 [" I$ n& G$ M0 w        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
/ ]: O0 b1 A! Z- c$ \( D3 L        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
7 \5 X7 I7 ~- U+ V7 g        Set C = .ModelSpace.AddCircle(O, R) '画基圆( `& c2 k+ [7 Z' M. d3 f3 ~5 y! I7 w
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入( _' a+ r% b, [/ \6 q9 O$ S. k
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入6 B6 Q) K& y5 H# ?
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度. u" W$ ~9 F& a& a. n! K; m/ j+ k1 G! x2 J
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
# @8 K* e% ~# z; e' B                T = 360
4 d1 |+ I' [9 V- t  ?1 x3 g            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
) ]" Z& N3 [9 F  A' V$ k                C.Delete
; d. L8 b8 E0 X$ T8 ^( u3 z7 E                Exit Sub
( h" W1 S! j# l6 M            End If! a/ n8 u5 V' K8 ~! E
        Loop7 q( f* o. l8 h
        T = T * 1.74532925199433E-02 '换算为弧度
8 j6 m( M  s, U$ j" W  H        Err.Clear '清空错误代码,便于用户下一步输入
/ E+ V1 V6 s2 O        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
9 z5 u- e2 ~2 N9 ^) p+ V/ u9 W            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量) _3 B; l& {7 A+ V$ [
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
: `( {6 w3 }: m; h7 n) u
                I = 50+ Y& L: b* a$ b1 W% g6 O4 U! h
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序! G( I. R) A9 h, p3 P- U
                C.Delete* b! U* x9 z5 j# X: q
                Exit Sub6 c8 A3 K' F7 u, d/ }% f7 ~
            End If
/ s& X& s& w. Q" B' h
        Loop8 ~0 W! F1 h$ I5 L
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组4 p# _% n, {/ s0 i" \" `( N, w$ a: z& F
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标. s# K8 q8 @# g( S$ x' `
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度5 _9 E! S) Q! B
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
, E8 Q, f; F: T1 ]/ v* j            If T > 0 Then '判断逆时针展开还是顺时针展开) `3 `& B* x6 n6 L! B
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
+ U) l* x; r0 O" ?7 y8 s            Else  r4 x% v$ W; H8 y
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标# C$ w6 s5 D5 z* ]
            End If
2 [6 R5 @) o. Y; C' w  L5 g4 T        Next, I: O; O* I9 D/ `7 a8 E
        T1(0) = 1 '起点切向
  E& U6 W" Z$ o, h4 d! h. z  Q
        T2(0) = Cos(T) '端点切向
$ S5 B, p6 w+ |        T2(1) = Sin(T)# J0 B: \" ~* G1 |. D1 M" v
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
1 _& C* i2 z* Q+ \    End With
: [3 z8 r; z: Y  X  Q% q! o10: End Sub/ H. V7 V* I- w3 A/ E

! r7 T3 _& Q- A  a" p) a: R' z$ @, _1 E# i5 D) }
加载程序方法一:8 P7 T- E: |& N& c5 b
1、拷贝上面的源代码;
4 p, Q' m1 {/ _6 u; G0 {2、打开autocad;& ?# F* t" w5 _- e' u
3、Alt+F115 e4 M& G+ q9 {. x% t0 z
4、“插入”→“模块”→粘贴* m9 J; g  J2 I4 r% H: W
, r$ K  x5 c# x& x/ v& T
加载程序方法二:
' T! e; ~  r. e% G3 j5 ?7 L1、下载附件并解压/ j, ]/ J& t# |
2、打开autocad;
" F( R' O2 v: Y7 B, {7 h3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;. V$ M* S3 {' ^  Q+ T* G

. H4 B4 N- d0 O6 }% G6 I使用方法一:
+ _2 m" C# d1 ?: W& h. z9 G2 o% g在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。# y! c% v; Z+ ^& Q

& V9 a, @. v. R使用方法二:
# L; e1 {8 N' M. C7 B在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。% i4 j1 W/ e- d, a" D+ F/ U! U
. C% E9 s& j$ K& ]
使用方法三:& B! k0 L  G& _
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
& e0 `3 S' K9 o2 W3 h  }7 J* f+ Z3 W$ [) V
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.5 E7 _& p% U- J; r% m, n
Dim I As Integer '样条曲线拟合点数量
: j: k$ ~7 k$ r5 z我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?. E# B8 F: g# Z5 e% Y! o- t
5 X5 N) Z* a: F3 I# O, |
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!+ E0 Y1 B. |; Z+ n' d+ V
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D17 m0 n0 z9 I) S* f
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???- I, P; G  \) _  ^. J& S

6 p( \/ F, y! U: F' O! g. O" G2 f& f不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
2 {) ]) e- I, ^4 q* p1 \! HCAD是不是只可以用C语言编程啊???8 y0 c  D3 Z- |! G4 _) y
/ A% S# b7 b' B+ d) o- l# f0 e
不能用DELPHI吧?????

3 H8 _9 J7 [" B* I% h
+ C3 D9 g0 ~1 b8 K& O5 |6 B$ W7 O* L# T2 R3 ^) I
干国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 )

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