QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 31239|回复: 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还没这个功能.) C( h4 v8 Y  H7 t) \  R
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表0 R4 p3 ~8 |5 _8 F) s
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

  _4 g2 N$ u2 C* k
' c: E1 D4 F' F! P9 k楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
1 I  U6 T& K3 \2 {考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:1 B: y+ G2 |# g$ q+ s
+ d: @. n8 n4 b% C- }
Sub JKX()
" z; W5 B  V/ `: ^% |4 w+ ~    Dim O As Variant '基圆圆心坐标# k1 X1 b$ c. d. T1 {* Z  t* W
    Dim R As Double '基圆半径2 ?0 l& m( Z2 P9 A8 P( E9 ?
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)& ?! N, r( \, a& {6 Z0 i" k1 V, `
    Dim C As AcadCircle '基圆
4 i/ L6 z/ p( J: s2 X
    Dim I As Integer '样条曲线拟合点数量& G5 X* f) f5 L! S7 b
    Dim J As Integer '循环变量! |# N, X& q  L; i& G% Q) l$ u$ K
    Dim TT As Double '逐点展开时的展开角度4 H2 \: i: N1 Z& f
    Dim P() As Double '样条曲线拟合点坐标
0 f7 Z. M" K; n    Dim T1(2) As Double '样条曲线起点切线方向
1 O$ }6 W# R$ B2 r    Dim T2(2) As Double '样条曲线端点切线方向; F/ p2 u/ k. f
   
+ a. c$ ]3 N) ~* j    With ThisDrawing
9 D1 m* c, B/ i0 S5 e9 t* C: V4 o- c        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序! F4 t" M4 ~+ a/ m6 Z$ D; v; i
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
7 z# Q$ r7 a; _2 {9 m* l        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径* c9 h" f3 Y, @9 E; l* c, \6 N
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
, j8 I( @/ }. o$ P0 P        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
4 d# }$ v9 @/ t( Q) D/ s, ]; F3 K
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入& @) V* d4 y1 Y# R
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度0 r2 n: e8 k: S/ q. Y7 n
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
6 }  F5 @+ c  r7 n/ S4 t7 ?+ g* ?                T = 360
7 j$ v' F8 a5 i+ b$ j" V- W* [# Z9 c" F+ D            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序' h1 {/ m1 v+ O: }2 D! \0 o" o
                C.Delete. s4 Z$ p8 X& `7 P4 W
                Exit Sub
3 c' V& Y5 h" ^            End If  {% L& A; v5 N8 b: d" B: g
        Loop
2 K  i$ h0 S  |
        T = T * 1.74532925199433E-02 '换算为弧度9 w# s5 a0 |/ i' T
        Err.Clear '清空错误代码,便于用户下一步输入
% B4 n, o% H+ z% B* K4 n        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入6 p. ]' L# K& k6 w# L
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
1 c' L6 d- T+ o5 n: Z; G- \* z0 a3 a* m
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
4 @* \5 b0 x/ l+ ]
                I = 50' J) I0 g" A9 g& \
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序  M' l, P+ J' w9 V$ S
                C.Delete8 |7 h9 n. j( n& L1 w, {
                Exit Sub6 Z$ ]% W' K1 Q4 w. c2 e* s5 X/ Q, S4 F
            End If
9 {3 M4 s+ X6 R* w8 M9 J# g' b4 q6 x
        Loop* Q5 ]. L: o7 n+ x' p2 g3 Y: o
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组; _/ H0 D& `+ Q' H; ?
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
$ b0 T0 u4 Q; m/ z( \# z& m9 B            TT = Abs(T) * J / (I - 1) '计算该点的展开角度- @' L* b2 w7 s* A1 m0 C
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)5 d3 d) b$ y3 f6 f" F9 a0 U5 E, x
            If T > 0 Then '判断逆时针展开还是顺时针展开
) H* x6 \( T& O$ g; ~' e5 ~                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标* o. t) M( S5 z3 Z% E8 m
            Else
% d4 s# i  c3 o' t$ j
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
) a) n# E; v1 c, X2 H! a$ a            End If
5 {6 j4 e8 s* E        Next
4 f% j. ^* p& M9 |) }/ A; a7 h* Y
        T1(0) = 1 '起点切向5 _* ^% @* t" P
        T2(0) = Cos(T) '端点切向
  C) Y; t+ q' F( F, F        T2(1) = Sin(T)' d- `$ I  q! G
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
* F. `! O  Y$ z* f( D+ E# A$ `- I    End With, v$ X  e) a3 V, [6 x. [
10: End Sub
* A/ L( u, Y6 X% g8 g( F2 r% V0 r' X0 {8 W, y3 E! i

4 d" O  |; D4 W( r' T加载程序方法一:) d$ C- ^6 y6 V6 @/ l$ \
1、拷贝上面的源代码;
2 @2 `  m% y, K7 b% z" \4 d2、打开autocad;7 N, q  c4 B; v3 {
3、Alt+F110 t# }# u0 f! _
4、“插入”→“模块”→粘贴" _8 C. a* A  i
# z( t; N% g. c2 Q2 h2 p1 m4 a, [: Z
加载程序方法二:4 T% \" D* F6 `& @, U8 m
1、下载附件并解压: h# s$ z- `2 ~- ~+ e
2、打开autocad;' L( l! \+ _0 g! `- Q* \0 A
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;5 Z9 h, x. E$ I$ V+ X/ s9 [
/ W. Z) P* w, ]5 K; E
使用方法一:
2 \8 C! {7 |0 @4 H在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。( l# ~. C* M, {5 Y1 @
5 s6 q. X6 [! R7 R
使用方法二:. ?  Z( y- x3 s5 [
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
8 [; `6 z* B. h; w9 F
$ }8 a" ?$ f3 z9 t使用方法三:
0 M. Q$ B$ u0 Y( `4 u在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。- q6 P7 U- u- i* _0 n

& T- X5 ~1 [( _6 {9 P1 ^[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
* K# h2 `# a& v7 a1 V' jDim I As Integer '样条曲线拟合点数量3 `  c3 k% I0 @, x
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?, E. c5 I) _4 T- I0 k4 y$ @1 ], ~* u
( ]2 h+ ~  Y6 n: ]! }4 H
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!9 i9 i  e' V# W5 I! o
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D14 l) C+ R# u" a+ v" L, i3 \% }3 c) b
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
) v4 X2 k+ `& a0 |& P- D; Q  Q4 C! s. W, b$ {
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif" K9 @+ D2 K/ L$ W- l- \) b& E
CAD是不是只可以用C语言编程啊???
/ {" R# p/ M( K% k2 D% O9 P  x+ v. i
8 D, W; F2 s) G4 b不能用DELPHI吧?????
: n3 q: H  B1 h4 |0 c- {
4 o' ?' O' f  w; \% p

8 T4 G* V- v# c干国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 )

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