QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32131|回复: 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还没这个功能.& ?# b& K' r. m: @3 h! I& Z- o
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表$ A2 R. \3 q) M5 x) q# B  r( U
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

& K* p" s- k& {0 O7 N; f6 M7 ^1 y6 Y  P* {) G4 b
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。) o: N' Y; N. |% ]2 G
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
7 _( [- [# {# }3 I- h: y. ~) l8 s0 x" R- \/ l$ ^4 f3 H
Sub JKX()
6 v1 j( K0 ^0 l: L    Dim O As Variant '基圆圆心坐标4 ~! p1 e/ F3 }3 ^3 @
    Dim R As Double '基圆半径
6 a$ O2 @9 y9 Q
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
0 `. m+ z( ], f2 @1 B" \* u; Z    Dim C As AcadCircle '基圆
$ |& x' Q0 q: i! {/ ?% e
    Dim I As Integer '样条曲线拟合点数量
, i; d: R! N( h0 B    Dim J As Integer '循环变量
+ n0 V& D4 {* _+ _    Dim TT As Double '逐点展开时的展开角度: |* M; X# w- {" `: c
    Dim P() As Double '样条曲线拟合点坐标9 U8 K& Q+ h" m) z
    Dim T1(2) As Double '样条曲线起点切线方向  h, l1 C* F- i) V$ x
    Dim T2(2) As Double '样条曲线端点切线方向
- W2 r+ [: n; a+ g, ~  P# c   
5 [$ ~5 ^0 l- `! b7 B* }    With ThisDrawing
, \0 J% G1 r8 G1 P) c, c        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
, o$ @9 [' B. _1 |) @+ `4 n        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
. m# B- I3 G9 `7 o: S        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径/ k7 U5 |1 R% s- L1 Z
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
5 P8 h* N+ v1 r, H        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
! J4 |3 n# ^# }" o+ y
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入; [; j7 |5 q8 q; U( s0 S  q# `
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
  z# X* J( p) i            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度  e6 v8 C5 [! }; f, R4 U0 a
                T = 360& t9 x; J+ r# J$ j" Q6 m4 P
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序2 ^, j; }5 _" r1 }6 i
                C.Delete
+ w* q+ J* q! N! [                Exit Sub, s) k- F' {/ l) f
            End If
2 w# g! D9 d" T5 p7 [9 C- T        Loop
* l8 s0 h$ J- Y! T+ d- _2 b, D
        T = T * 1.74532925199433E-02 '换算为弧度
0 a" O- `3 c2 }        Err.Clear '清空错误代码,便于用户下一步输入% C$ l& l8 H! z" M$ h
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入$ G4 @( s& h5 e% \, N) o, F& ^+ U
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
' o, Z9 U5 b- c. a2 ]- a+ f
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为500 k+ _( ~3 A% v5 K4 F2 i
                I = 50
+ R' b7 p& X! Y$ x6 B/ v/ l            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序* j3 \0 r4 f7 t% |
                C.Delete
7 i( [# C# L$ i$ s6 K                Exit Sub
+ ?8 `9 o6 \* E2 A& `# a# ~            End If
+ y) ^, k( ^* c" [' @
        Loop
; m" H" g* o* L- [1 E        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组7 |; ]; i! ~/ B0 M+ z4 i; _- u0 \% R
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
; i# b# x! e: b3 K9 ?+ _1 _            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
3 ?6 L/ I& h* n% e/ u
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
, H/ }& ?' i! }. i            If T > 0 Then '判断逆时针展开还是顺时针展开
: Q1 |8 g/ o5 J; l' K                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标( S7 P$ z. G; @1 I" l6 c
            Else
- I( r; w* [4 C/ X& G
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标! @: D: l$ B! q
            End If, M( q6 S  r/ L6 A+ s9 P/ O3 A, j5 u4 s
        Next# T! ^3 F/ ^6 q& x( E7 {
        T1(0) = 1 '起点切向
' W% i7 w8 U6 X7 ]- O
        T2(0) = Cos(T) '端点切向
  @( C: E4 ~* x' W1 V5 G        T2(1) = Sin(T)
' g8 R$ k8 T! D% g% u$ w% }        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
% L+ v2 O2 P) ?$ V) C- g    End With8 B% ^9 E9 f; N1 c: l: I( K
10: End Sub
5 [, G8 r/ J9 c+ N  ^6 J
/ Z/ J" |; k! t$ p2 U0 Z5 Q4 ?' I/ g8 Z/ j
加载程序方法一:
. U% a  y+ R8 j9 W. g1、拷贝上面的源代码;
% u# I7 N  x5 c  h7 \  }% X7 \0 i2、打开autocad;& L$ K: b" ~$ F9 v2 `+ i" d! F% i8 I
3、Alt+F11! t7 u" T- T1 _& r9 M# U3 Q
4、“插入”→“模块”→粘贴: s) H6 x) ~* K0 Y# ?
; `9 _- T0 s! U; C& z! n( Y: b! ?
加载程序方法二:5 h; J% p2 O( @7 f$ A" n4 Q
1、下载附件并解压
$ y0 Y+ D$ f* Z# t# O9 M- g9 n0 `2、打开autocad;8 Q% }' @# B% S' w4 b
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
9 t3 d# A7 A( w9 h0 ]  G, y7 t- {, G/ T- d/ I# q
使用方法一:8 H% ~" Y5 {  R" k
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
/ h# l9 L1 I8 y/ L* V+ Z% |/ @4 x! s( m0 t
使用方法二:
7 q5 E% |5 u4 ]2 {4 j' \" Z+ d在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。- u2 c# ^8 G" W8 v6 P

3 r6 b" p/ R/ h8 a" X使用方法三:
* L; V2 m# a  U在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。# ^+ O- w& Z+ n/ U

$ ~3 k% j, B. V- i[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
* n; g; p& V, U6 NDim I As Integer '样条曲线拟合点数量8 P7 |- a$ N, u' j2 y1 S
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?. p$ B/ M5 v. J! t+ d1 n8 a2 f8 V
0 G% W1 q: [. Y. E. P& X0 F) O
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!/ ~0 U2 g2 L$ a; [: A4 }
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
4 j  F+ k/ R( U+ G不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
* q# `+ v  @6 S. u
( }4 I1 l8 S% f' D# ]& n9 Z2 f不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif: u- @; a: w$ R2 v* |% d( [6 h
CAD是不是只可以用C语言编程啊???
) h; D1 j/ u' G  n! |$ n& o; O. D$ w) M
不能用DELPHI吧?????

5 C, ~0 c) e  c8 [. ]+ M  w7 b2 E
9 h' M6 a! n& }. O" b2 U: F1 Q8 E$ i& P, x3 j# d
干国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 )

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