QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32127|回复: 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还没这个功能.' T  ~% E. M$ p$ n
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表$ h" I, q7 x; R' e! P7 Y
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
# c) m' D+ p8 f" v: \/ z! @7 B. N
+ a) k9 t6 v  G) E; ?
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。6 L- G. p, p; X6 ~' f8 o
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
- V" [+ R8 ~( `
$ ~8 q2 o3 s/ I5 ^, |5 a* S7 y% n3 @Sub JKX(). o+ L: P# R7 A5 [
    Dim O As Variant '基圆圆心坐标
" j; A6 o( c+ a# Q; T; T- F    Dim R As Double '基圆半径' W" A$ V- K. t6 z
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)2 H. `& h1 _- b6 `+ ]5 }0 ?
    Dim C As AcadCircle '基圆, j# o- B' Y3 e: l7 Q
    Dim I As Integer '样条曲线拟合点数量
, K% P" i% l  S2 r8 Y% x2 G3 Q    Dim J As Integer '循环变量0 p2 l. N. X7 W1 D' [( a+ `) [: M
    Dim TT As Double '逐点展开时的展开角度8 ^  k1 b& ~5 W- U; I. L" N
    Dim P() As Double '样条曲线拟合点坐标( e4 _6 d. z6 d3 o
    Dim T1(2) As Double '样条曲线起点切线方向4 k' W6 N: N/ A2 p, x
    Dim T2(2) As Double '样条曲线端点切线方向+ R$ ?! _/ _" T# R9 m
   
5 p/ w# ?# ]  S0 @8 H* @' k; D    With ThisDrawing
) p' g7 z! ~1 C% x, U        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序# T  w% }! n3 z! e
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
0 d0 P; j$ _" h6 k3 ?3 i        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径) ]1 x  _+ w( `) i/ M3 A; w  V
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
8 V' o- q% m4 u        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
7 R) ^9 T! F0 h( e
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
# H* P7 G  i( L+ L8 D            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
' M) E4 J3 N, ~  s9 {$ j+ e5 k            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度2 N0 s: S- I8 G! ?# V2 `& m
                T = 360
1 U, _1 @; {5 F: S9 ]            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序' X, p4 O5 _- I
                C.Delete8 w/ k$ s; \3 {
                Exit Sub  z  f& t1 d: q* U, D! m, u- C  y
            End If
) ]# y0 X- N9 k4 t- s        Loop& E6 ?) h" c% o, S; s4 T
        T = T * 1.74532925199433E-02 '换算为弧度
# g" m8 f6 Y* X2 l$ a" s        Err.Clear '清空错误代码,便于用户下一步输入
' N! [; o9 k/ g1 a- p! W1 P        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入  c, b/ x  N# I$ ^
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量2 Q0 ^% h: ^- q' c( g! J. b% ]) q
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
4 N: M: X: R9 P4 K$ c
                I = 50
7 x% q, W- @9 @( D! [$ w1 |            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序& B0 o* N/ `, |. ?6 h
                C.Delete+ T+ C$ a( {' y$ T& w" e
                Exit Sub: n) z3 L5 O& O& p! \
            End If

" a8 ]% l9 D1 [8 Q* p4 g. L        Loop
- |# Y8 Q5 R( I% \2 Y2 I- z        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组; D# n- }* ?  j; p5 E
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
' F* ]5 u9 P8 `! }3 l7 e% h            TT = Abs(T) * J / (I - 1) '计算该点的展开角度1 f# V8 I# P  H5 s' g3 z# b
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
; j' A6 t7 m7 g            If T > 0 Then '判断逆时针展开还是顺时针展开* [+ x' c' i7 h- b
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标( J2 `. U' o) C3 r8 L
            Else
" Q2 J6 ]8 z& a; z
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标- \, w' y  Y- d; P* W
            End If7 u# F  y, l" L9 I# Q! V
        Next
) ?7 k4 X$ Z: _! |- ~1 @
        T1(0) = 1 '起点切向
4 P! Z  s7 j5 ~3 S+ @
        T2(0) = Cos(T) '端点切向. @; M8 E! ~  z9 }
        T2(1) = Sin(T)8 v% f7 c3 `* M# c
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
7 u  M" P6 X$ Z6 k) o9 p& S    End With3 H) d; L1 ?* e3 s# w+ n( }5 i
10: End Sub
" n, o! B! X. w1 T5 ?/ U  W5 t- _# M: H7 C- A" X1 e

9 p6 Z8 R5 N, u  h5 q  j1 R2 f加载程序方法一:- `# i6 C7 U  g. U; B) ?9 O
1、拷贝上面的源代码;
+ I  S1 v: d/ v! n- B; z8 u1 R" f: \2、打开autocad;' m- P$ n+ L( F# J8 U9 V
3、Alt+F11$ `  W, `5 x: o2 `4 O
4、“插入”→“模块”→粘贴
& h1 T9 d7 l: y6 R& n, I3 i" s5 @$ ]
加载程序方法二:/ v+ b- p# K1 ?) d7 q6 M
1、下载附件并解压
; c' \* P5 r5 V+ V- i4 K7 s. G2、打开autocad;
& V) {. v" U/ X8 S; W$ o; }! l3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
/ X; G. V* @# M8 Z
1 T8 }. ?( s7 z/ f使用方法一:, s1 H; H) i3 M  B
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
- U+ ~5 ]# Y$ b, j# m& n$ X' O( w( N2 J0 f3 Z
使用方法二:+ t% s" q& p  D
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。6 |! j- n8 i7 ]  E

- ^8 a8 i5 B* Y+ t使用方法三:
; H! u* ^/ s* @7 ?$ N% Y在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
  {6 \; `  T2 l/ ^4 C" X3 B" L% a: L/ ^# i4 b0 ^, Q
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.7 ~) ?. Q9 [  |' g- n
Dim I As Integer '样条曲线拟合点数量& W& J8 O0 u0 h! K, z/ I& \
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?. x- u. ?" V  z3 x
* @9 b3 s3 f, c* X
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!5 w- T/ ?* s% z# X
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
8 P6 f" W6 h! v1 v  e) t不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
! M: Q/ D7 \3 V7 A$ R9 o  W' G+ |& t
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif- q; J8 z# m# D! I5 }( Q% d) a
CAD是不是只可以用C语言编程啊???% t7 t1 O6 `, b
) m: N, e/ g2 X6 F  F' }
不能用DELPHI吧?????
* {- j8 c* O& ~- \$ v2 s
) G, Z/ y" |! b: [) B6 z

% ?$ U* }6 W9 p5 O! k! w干国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 )

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