QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 31043|回复: 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还没这个功能.
  G5 {. O3 E' Q7 S2 ^& F另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
0 {- y# u: a) e7 r$ r& P怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

4 Q( P  _9 Z. y( g% c! m- v( l9 \8 w8 q' u" C- C8 ]( ^% A3 q/ s
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
' L3 N# x& e/ d9 l( y! a- x* h考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
7 X; V) n% n5 N' C$ |
& c2 ~3 R) m: v, R) _1 w- C$ tSub JKX()! F" R- ^. l* n! a; o. Q
    Dim O As Variant '基圆圆心坐标
+ Y3 o: }& i5 z1 T5 c% J* n) z    Dim R As Double '基圆半径3 g# \1 Q$ A/ c9 |
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)* h. S' T( E- ]
    Dim C As AcadCircle '基圆
/ S( j% q- @8 ^2 s0 Z
    Dim I As Integer '样条曲线拟合点数量! f+ t2 N& Q5 h* f" v0 x
    Dim J As Integer '循环变量
/ J( s6 p8 j% j+ o    Dim TT As Double '逐点展开时的展开角度$ _' l6 q$ q& m3 t3 J( s
    Dim P() As Double '样条曲线拟合点坐标2 D! n1 X; R7 N8 u5 t1 y# X* t1 A
    Dim T1(2) As Double '样条曲线起点切线方向
" u9 v! v, [' S! H  k0 c    Dim T2(2) As Double '样条曲线端点切线方向7 c' x' X, d& ?2 j0 T8 B
   
: @: f) N5 u7 Z6 r* r4 N    With ThisDrawing
+ O4 T! C: k* h5 [/ R3 E        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序# x' @" x2 g2 n
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心4 X/ d* I: r7 J$ x
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径- L5 d2 Q5 B7 D; I" {
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
: {& P& S/ J1 Z+ r! B        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入2 c; N/ e0 A# ^5 O, U
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
$ X( T! P4 t; |2 j0 Z            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
6 J5 o# c3 o: l8 e( B9 X0 q9 W2 o            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
9 o& `2 j5 A1 o4 N& K                T = 360
8 @8 R3 t# i0 u+ q6 F; `            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序4 A: M% s* ]; _" e/ L& }9 h7 C
                C.Delete
2 H! t4 @1 [9 A" d                Exit Sub
2 Q, O7 J- W$ x5 i, D* n            End If
2 D6 b. w" Q) m( p+ N8 A        Loop1 S# o, ~' \0 Q. b
        T = T * 1.74532925199433E-02 '换算为弧度
5 T6 R7 T) {5 [! g! M+ ^( A. Q        Err.Clear '清空错误代码,便于用户下一步输入! I5 J4 Z; G8 f% N
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入* w$ B6 i6 k6 \( z: m3 y/ `* z7 r
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
9 ?% K8 u1 g# @& f9 V
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50) ?  M4 r. B; y; O5 Z: n3 [
                I = 50
5 S+ X$ a' X  w; [& u            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
7 f9 }7 ?+ T# `                C.Delete
1 Y" Q+ O( _" {& M5 O0 Q                Exit Sub
4 U4 j% |' d; b- F3 e0 q1 z            End If
" J6 [' ~2 n! v
        Loop+ N7 y: X8 Y* D( w( V" T
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
- L- v9 {) D& s+ i/ |       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
- M; T; e6 A. E            TT = Abs(T) * J / (I - 1) '计算该点的展开角度( U  d+ }: O3 ~* D& O( r$ Y
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)- \3 O: b3 P: {+ l* `' c3 ]. T3 i# U% M
            If T > 0 Then '判断逆时针展开还是顺时针展开$ }& k+ q6 X; q, f7 }
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标) {3 d6 s- r; y, M7 d+ E
            Else7 p% j1 e* E. N- {/ K/ O
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
% _7 Y* a6 Q3 [( Z            End If
# g5 a0 s8 Y& ^& n- I' _; @        Next
: k6 ?9 Y/ k. l0 u, A3 X4 T
        T1(0) = 1 '起点切向
( I/ K* `  U1 @) I6 n& {
        T2(0) = Cos(T) '端点切向  @, n; T! r! G& J7 r: t
        T2(1) = Sin(T); |7 U! c0 \3 v5 v0 I# `, n
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
( X- s( Z+ o8 ~) G    End With3 D8 s* g2 U( f
10: End Sub
  n5 C% B6 Q2 y% Z8 A+ z# l
8 Q: a3 V4 D7 o+ l1 r+ l
' `' T9 b8 \1 ~5 t& n0 y2 V% I2 V6 U加载程序方法一:' F9 [# l: J) Y. i, U4 a
1、拷贝上面的源代码;
0 T8 i9 _# M: b6 J* U2、打开autocad;& p$ Y6 T( ]6 F2 G8 J, _  d/ `
3、Alt+F11. T$ C" e& |. i
4、“插入”→“模块”→粘贴
6 P4 e& @' x1 v/ K( |) T, D5 [$ z/ u
加载程序方法二:
$ C1 ~5 a) P1 Z6 u/ h1、下载附件并解压
3 c7 c0 O' E) P# t2、打开autocad;
0 L$ O) R( s0 W8 u. x% S3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;; I* A( C5 d5 d7 @! g, ]) U) ^5 g- V" T

% j0 w, h/ p. O% i/ t使用方法一:, e" F1 d! B. |+ }+ V; e$ u
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
& Q9 F% g" o- T! P! \- m) l
  ?# A/ y, o% c5 H9 [# A使用方法二:
; j& X7 p. J' r  x! U, h+ W- ~: u9 s, Q在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。5 s9 f7 R  M( {3 x/ w2 g9 ]5 l) @
: A3 S4 [* _1 `! n
使用方法三:
/ m4 H  `- @5 E  `4 H在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
$ S! i- c" s, ~
3 a: J6 l% R: `3 k; K& s% P9 B3 I[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.) u: H6 q& o  O, k5 |7 v5 x
Dim I As Integer '样条曲线拟合点数量8 P7 U1 x- G9 G2 V
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?- ?" W1 x, @3 K3 r  J
7 g! _  y5 z' K9 v% t# l* p
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!( G# ]- D! q; u; W
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
4 P- a5 f* e/ {4 r不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???& R9 P$ M9 [% s+ Y! n

6 v( P* M; M' O" Q: _不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif7 ?7 e5 R  o& R2 x0 Q& u! w
CAD是不是只可以用C语言编程啊???% c+ y! s/ `$ w2 L
& t, T; m2 u! c9 ~# {
不能用DELPHI吧?????

% q5 Q/ S( V3 J, \. s6 `: ^4 R6 g' S1 w! j4 v. E

" h: k4 T# |& x8 l6 N7 e5 h- X$ W7 m干国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 )

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