QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 31907|回复: 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还没这个功能.  |0 m) W5 P; B/ V
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
% M( @' Z3 l' l% G! e2 M怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
) T; c, N6 Q: T, G0 A' t

+ N: [# o: n7 Y7 i* V1 @5 K楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
- Z( L; W% P, X  t考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
; r) }9 e0 e0 f
$ T% Y1 D+ [9 f, M2 HSub JKX()! a& b$ A% }% t' B4 O4 k& `
    Dim O As Variant '基圆圆心坐标
; X2 s1 A+ Z9 o    Dim R As Double '基圆半径
  e3 l$ g# m" J7 Y% C1 b1 v
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)  H8 o. k  x/ X
    Dim C As AcadCircle '基圆
1 o8 v% E& P7 L( ~6 A/ n9 p
    Dim I As Integer '样条曲线拟合点数量
+ U% Y- d  U+ X+ Y- I; [    Dim J As Integer '循环变量* ^% V  n* F$ F$ y+ h. U, Q
    Dim TT As Double '逐点展开时的展开角度* D8 O- d4 A* Q3 Y( p' q" H; k
    Dim P() As Double '样条曲线拟合点坐标
) C+ U! a  E! q- B: G; T0 A1 n, l    Dim T1(2) As Double '样条曲线起点切线方向1 R  [$ h+ T; ?
    Dim T2(2) As Double '样条曲线端点切线方向
, p* Y- m( X+ }) \   
5 T5 k: h9 n! n    With ThisDrawing
2 f  }# _3 U+ w' @  j6 \        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序' a2 V9 t* d) f1 s9 F; y* x) ~
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心& E3 S  v. B( j$ N
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径1 s: t) J) _# I: q
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
/ v3 P, _& H% S" m- n        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
. }; B& q9 h) J5 h
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入; E9 n" y4 B8 G! b( Q$ o( q
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
/ ?/ h+ U' R! ?, h( c8 S1 p            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
, d- u+ j5 k8 X2 u                T = 360! E5 H- k. {% e$ H( W
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
0 [3 n/ U) U+ \                C.Delete" b$ [" c6 n+ D; a9 A
                Exit Sub
( A, o5 Q/ V% ?6 M& F" A            End If% N/ t) S$ L. N
        Loop
3 ?7 q' l: M) P
        T = T * 1.74532925199433E-02 '换算为弧度; B4 l) b2 K; G" v  ?$ _: t
        Err.Clear '清空错误代码,便于用户下一步输入  d; C6 u9 \: n( @0 g6 w
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
& e& T( M# D* c, r$ x            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量4 ^6 e1 n, ~# h' O8 Q, o4 X3 E# O9 m* W
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
. W$ @: l5 _0 W3 c: H" Y8 W
                I = 50* Z! M. @' U! T  A0 O* _8 K2 ?
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
$ c0 @* a: R. H" t3 J$ k# k                C.Delete; S1 u: U0 H- x  B
                Exit Sub- F7 J1 }+ _, E' n6 R+ S( S$ d
            End If
  o3 x$ P; X% |8 M4 I
        Loop" W/ E9 m! z0 ^9 O: ~! G& X5 }
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
9 d3 P# c# f- Z% f       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
% W2 O( I% ]" D) z& g, u            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
* O: F. d1 t% Q4 ~3 J
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
9 j- w+ O$ B5 v            If T > 0 Then '判断逆时针展开还是顺时针展开: {" x9 {- @0 G, S
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
1 h: U/ F" h, w# }, ]            Else
. n7 p! a- M: x# _- z
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标$ m4 i1 {. H8 {5 V9 B8 W5 C' i
            End If
3 q, o$ T* w3 f8 ^        Next9 t+ V% |2 _* P* m6 v1 f, B; M
        T1(0) = 1 '起点切向, F8 `4 F& `' ^( W9 z1 e
        T2(0) = Cos(T) '端点切向
: g6 G* `$ N$ D0 T* O1 ]5 `        T2(1) = Sin(T)7 ]1 [& H! F7 j9 ~2 {
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线4 x) s" B( c3 _' p% m
    End With
4 j  `: ?3 J. {' p; F5 @# V10: End Sub# d% l, F" I' T; C

- E0 G. M/ }' ?8 {7 x, m$ M1 Q
1 B4 T3 U( [: \7 n  x! g7 b( p; v加载程序方法一:
; P. O) Q: u( G& O# \% `1、拷贝上面的源代码;. W( j5 v. y( `8 N3 b
2、打开autocad;+ a! `/ i- Y! y& s
3、Alt+F11
* y- g8 a7 ^6 \# y/ z3 I; K/ j4、“插入”→“模块”→粘贴. N; u4 M# ^! l; }9 P9 L6 r8 _

8 P# N1 j+ P* V加载程序方法二:
) U; w) ~) N8 X  o9 y1、下载附件并解压* D4 M2 T) l+ h% f& S; E, }/ u8 B
2、打开autocad;
4 c/ c9 F. Y% i2 `9 L3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;- ~6 V+ T4 ?  s" L7 g

7 R5 D6 D& X& b# n. q0 g  M使用方法一:
6 ~2 `: `: p3 z$ j, b2 ?在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
& |1 n/ J6 E1 b  A: z; T) s+ `# M6 R% b
使用方法二:) {' H9 N3 C: ]$ a
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
% v7 S" i# V# y
. z! F( p: J( k3 `  N. X9 m8 n5 C使用方法三:
2 a, }) z' e4 a$ u8 \1 k# `" m在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
5 X3 N/ E7 j) p; Y) C! \8 o/ b0 I; e7 A; N& \
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
# h# v) C: G  d# ?. P: xDim I As Integer '样条曲线拟合点数量
9 B# U. p6 r6 Z* K0 a我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
) n8 E# _3 m+ ?, a, T* M- @! V- U, t8 h6 e
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
% V: m; q( q  E" |, B大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
/ \1 M6 [7 ?2 A- Y2 r. [* U3 @不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???  x$ P6 r- |( C! J# S& t  D
- D6 B8 P& o( }0 r
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
7 Y+ r. V/ m: ~* M* `2 @% N1 ?CAD是不是只可以用C语言编程啊???
1 O3 T2 @, c7 w% X% Y) |! a& w; U
8 p" f( Q7 e4 E& @不能用DELPHI吧?????
' U2 f6 d) G6 o+ m

- W% J/ l9 Q- n: ~/ H( o- f
* l/ R. r) o) g1 }( M& Y0 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 )

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