QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 31040|回复: 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还没这个功能.
8 E4 {" k- k1 Q6 i9 o! F' J, _. r- {另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
# B7 N/ R% i& [5 E" k0 V) }怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

) J% o3 E  K* \  @0 B
) Z: [/ p8 L' C+ _: O$ H* z: x0 ?楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。; X' M! L3 d, z, I
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:! h* ]0 P& {) A; f3 u- D5 [

5 v& A3 Y+ _. n. ISub JKX()' p; }% m) c+ O0 |
    Dim O As Variant '基圆圆心坐标+ l2 O* [+ a2 I7 v. B. o! A: u
    Dim R As Double '基圆半径% N2 c* J2 G* V, Y1 V' T3 N6 i
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)$ D' O0 @3 {  v% u
    Dim C As AcadCircle '基圆$ s. y. }& ]( ~" D% e
    Dim I As Integer '样条曲线拟合点数量" Q! K0 V7 Y3 S
    Dim J As Integer '循环变量
( L$ _' k  z2 ]2 v* Y$ P+ a    Dim TT As Double '逐点展开时的展开角度
8 {8 y# |$ s: ]7 |: [    Dim P() As Double '样条曲线拟合点坐标0 p2 d6 {+ D: s' d6 C
    Dim T1(2) As Double '样条曲线起点切线方向
% Q( L4 a; z5 y! B) r' |3 R6 d    Dim T2(2) As Double '样条曲线端点切线方向$ @* ~1 B' G! \
    $ h& |" H* ]( `2 {. P9 u' n
    With ThisDrawing
& t8 Y  ~8 R$ C        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
2 c, s$ I  ~6 i" K" ^; q0 d8 n$ _! ?        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心- B3 Q: b" r0 j) c8 f- n
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
4 p! j% }8 M, V; ]; t, M        Set C = .ModelSpace.AddCircle(O, R) '画基圆
( e/ a/ k6 x# v6 N% ]3 }        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
$ m$ e" h1 F% r( X6 U; B  p4 Q
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
0 s: M, D0 w. d$ T' G            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度' b. n6 C5 r2 p, e) R- r: D8 Y( E
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
0 X8 W: q. |- e% ?- ]8 V                T = 360. T4 A" L! M/ B% \
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序4 v1 Y% o" Q* j4 X
                C.Delete
' E3 U* q; |7 `9 O3 m                Exit Sub& f7 T- |0 O+ V& {) U5 X
            End If
1 V$ ?8 O- t4 t, O8 Y4 d2 w" w- c& P) s        Loop1 r/ @: ]( Z$ U( n
        T = T * 1.74532925199433E-02 '换算为弧度4 V( z' B, [& w( A9 D1 E
        Err.Clear '清空错误代码,便于用户下一步输入
, [# S: Q% Q! V: I1 v        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
0 S( y# f1 P2 n" p# _, r! J            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量- h2 G5 p1 u* U$ `
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
% h- Y7 h1 d9 [" `4 C
                I = 50
6 M; `, ?9 |  D9 w            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
1 d4 q8 V- F' g9 X% e5 P) b                C.Delete$ D5 `# I) U2 A% M* B5 @9 d$ ]
                Exit Sub) H8 T  R5 T% w
            End If

' w* c9 Y+ B0 g        Loop
9 J) p( e3 s( V' Q' b! i4 J        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
' ]$ o# c5 l& @' f: Z# {' _7 C       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
, |/ L: k8 f2 D            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
8 E; s7 l. [6 `: H  X2 ^* U$ O
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
" Y" Q7 `5 W/ K+ p9 d3 C0 @6 F            If T > 0 Then '判断逆时针展开还是顺时针展开
2 z8 |+ ~& g+ [+ b                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标/ x3 m7 |9 h' n, Z
            Else
+ @( `' i: P8 l/ k& V0 q' ^
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标" ?$ i: y: P* C( m6 Y4 E: N
            End If' y5 H( P! C8 ?' F
        Next
( s9 p/ E9 i7 D3 x
        T1(0) = 1 '起点切向
1 p6 ]8 ~9 `! P4 W; m
        T2(0) = Cos(T) '端点切向3 g3 y; o0 E7 y# X7 y
        T2(1) = Sin(T)( S+ i! \. Q6 K1 q$ a
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
1 |, X; D# v7 f, j3 l% L    End With
1 M8 @3 f7 Z- _# z' s6 K: M1 \4 j9 B10: End Sub+ R7 m) y1 J0 v/ x6 a4 n

+ T3 o" X( @, {; T  B0 \5 ]" y# E. c% P6 u
加载程序方法一:3 f; s7 M) h& J2 ?# \6 N( {
1、拷贝上面的源代码;, l0 N6 Z& g6 H* U& l
2、打开autocad;
+ H) C# ~9 S) l- ^# f, Y6 H3、Alt+F11
, W* C9 }5 c6 |! Y" `1 a- B( q6 \4、“插入”→“模块”→粘贴
/ `) A% m, y& O0 \% Y- K( j! g6 p
加载程序方法二:5 [& b( E4 j8 r% a* `
1、下载附件并解压5 q$ r* m/ z/ g: F' M! L5 V9 ?8 O
2、打开autocad;2 A! o6 A' o& m, g3 d1 w9 w
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;- z# ^3 K4 x- h7 J8 b

0 E3 K$ V  Y& R% P& \# h使用方法一:
/ x! H6 }" t6 q  W$ d在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。- t# |  h) V# k

% x' Q/ k* Z$ L8 s1 G使用方法二:  d& R; I: z7 E, ~  ~) J
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
- x7 P1 a+ Y3 t/ }+ Y/ o/ u5 Y1 R; F& |- t& {# u
使用方法三:
4 S& i1 @# W4 Q0 o* @1 k4 @在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。/ u7 C& d- Y1 r, Y
) G$ T* C& F4 ~5 h
[ 本帖最后由 woaishuijia 于 2007-3-31 12:58 编辑 ]

JKX.rar

7.6 KB, 下载次数: 594

评分

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

查看全部评分

发表于 2007-3-31 12:06:02 | 显示全部楼层 来自: 中国山东烟台
楼上真是太历害了,这样的水平人就是高啊
 楼主| 发表于 2007-3-31 17:16:23 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
0 D" H( j! h1 k  I2 Z. QDim I As Integer '样条曲线拟合点数量) I. W: ^# C1 K8 c, ]1 M8 h% B, y
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?8 _& L9 {# n. H3 o! ~3 {
  C# R+ k6 j, U8 H6 M1 x
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
: p* w! d% M) J$ ~7 F8 r大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1( q' A' R0 A6 D; I. V2 F
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???2 a! Z6 N6 }; J* J3 @1 u2 ^

0 t: x, H3 E* V5 P* R; g0 ~: w0 \# J不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
! I  O4 N% w0 c! p: M- T. M& XCAD是不是只可以用C语言编程啊???
# ?& N6 O  n  N2 w+ I) D, y) o& h+ X  W1 Z& ^/ _4 {, k
不能用DELPHI吧?????

7 q7 Q7 J0 S/ b( g) g. A$ S0 ~! F6 B6 T

3 b. l* O/ u) O8 G" h6 S" l0 k干国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 )

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