QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 31044|回复: 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还没这个功能.
' N3 g; W1 p% m) p- K另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
$ R, M0 F4 l& |) T" J6 z. F" q! C怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
$ j5 }1 o8 w6 F. B9 M/ j
% q; A% p, d  E' d
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
3 o3 u9 w" L; i2 A考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:4 x, b- @( O9 a2 U: O2 p9 Y

, N4 b8 ~1 k  E& C3 O, DSub JKX()) r( r8 S/ T! J4 Y0 y0 c; T2 {
    Dim O As Variant '基圆圆心坐标4 x* P2 |" `6 @9 H
    Dim R As Double '基圆半径
/ Z5 R  ~+ m0 c- @$ g& [2 o
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
5 g- f4 U' M/ \. Q    Dim C As AcadCircle '基圆! U3 c5 s$ ^6 s# s% G! e
    Dim I As Integer '样条曲线拟合点数量
9 s/ B& j5 l- u( [/ x7 x" b    Dim J As Integer '循环变量
9 S2 ?& t* E* C. ^5 J) g    Dim TT As Double '逐点展开时的展开角度0 P/ z( @# g0 f
    Dim P() As Double '样条曲线拟合点坐标7 C7 b1 ^! u+ ~& S3 J6 I! X
    Dim T1(2) As Double '样条曲线起点切线方向$ ?2 W( d2 D4 P" D3 f/ u
    Dim T2(2) As Double '样条曲线端点切线方向0 ?8 I  m0 H) R1 D2 I' r
   
; \8 h/ i$ r& {2 m4 o# \$ \$ X    With ThisDrawing
- c' ?( V; j  t* F4 C        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序; u5 ?) n' Y' C; q' ~# E7 }# x- w
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
3 t9 {; R/ H4 \! l/ |        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
2 v5 }0 c6 @1 N7 ^- }3 S; l8 K        Set C = .ModelSpace.AddCircle(O, R) '画基圆
2 P1 L- K, I* e  p        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
+ m! ^; C% l* |2 Z
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
2 ]8 b6 R. ]4 l/ [- [" _- ]            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度5 i' c$ m% O9 f
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度) X% P1 [2 w+ ?9 E; H% L% Q# J& m
                T = 360: z& _2 A' f# H5 t2 v1 k  ?
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序+ q* U0 V4 L1 ^! |6 V. F  A
                C.Delete3 {8 U: W2 b. s) c7 _: [6 ^
                Exit Sub6 X/ T$ e& b9 Y9 x* b5 O& z
            End If
; K7 G6 V: B8 E4 a* D; J9 \+ G        Loop; ^, _  X/ k5 [9 i/ J- t& ]0 [
        T = T * 1.74532925199433E-02 '换算为弧度+ W% `) G3 Q! ?5 W
        Err.Clear '清空错误代码,便于用户下一步输入* a2 U$ q% }+ }+ {1 R  W
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
0 K% |/ O9 Y  I6 }# h% |0 X            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
/ x$ g8 F' P) f7 A# Q: c
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
8 E8 U0 U2 `0 ^3 {3 E" f
                I = 50: n  C* \7 A9 P5 u* c% K7 _0 N
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
( A( f/ I- x$ I% n6 w, T                C.Delete
# X* ~4 V% y2 O. w                Exit Sub
/ G# K) h/ E8 L$ x  a0 m1 z0 G            End If

: ?0 i/ E# L$ b, |, p" L; s. C        Loop
$ y6 w. }% S# p) S! D, U4 W& ]        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
; g& i9 {, }" V' A, j       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
1 F& ?% S& O# e1 I( F! x  ^/ W: n            TT = Abs(T) * J / (I - 1) '计算该点的展开角度- z4 `9 F% k1 D0 U! J! S. [
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
4 F, p' m$ Q+ J( V1 w            If T > 0 Then '判断逆时针展开还是顺时针展开
3 j4 s, y6 i3 r/ a" I4 i- p                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标! ~/ N: K" J0 ?# ~) Z2 I
            Else
2 L) q( w& T8 ^! ~7 z
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标$ ?) k% d9 H8 ?7 P, z9 P
            End If
$ X, H% k1 p& b        Next
# R+ X; C3 y* f5 p# E- U1 A
        T1(0) = 1 '起点切向" |0 J1 E& U. C
        T2(0) = Cos(T) '端点切向
7 [9 h7 _" V$ r! Q9 }        T2(1) = Sin(T)
' t6 P+ f( ~; y' R( }4 `        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
; j/ u8 p% _" E; }; {    End With8 A& X- n2 M. {  x1 d" Q& w
10: End Sub
7 M8 i) i, q( ]5 S1 @0 K" V9 G0 u4 B! @- X
4 E  F/ {% b* c
加载程序方法一:8 B+ i* v5 n& C* a7 s3 @
1、拷贝上面的源代码;+ p" m" H$ q% ^; e
2、打开autocad;
) ~& C* m: n$ d& |3、Alt+F11# u$ G/ c$ L7 V+ G1 {
4、“插入”→“模块”→粘贴
) C# t9 u! t5 d$ k; y3 z
/ M& K+ M9 H1 e$ |! Z6 I7 g( Q加载程序方法二:; Y4 b0 q/ \5 [9 v) O
1、下载附件并解压
7 W' ?! U7 `+ V. k) v2、打开autocad;
: s% [7 `. A* _3 O  C* d; E  ~3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
/ ]  t9 l3 m8 S& C, E' [9 {* n( W$ f
使用方法一:0 I2 ^. ?. @& E: ]5 Q7 a1 ?
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
! ]1 r4 V, m0 G2 \) T3 j$ ?( f$ s
使用方法二:& N3 Y5 J6 q. [1 D% ?  Z
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。. A' G  M3 J3 u6 T' b+ D
+ ^! q# ~5 n1 O( `. c4 U
使用方法三:- ^/ Y' q7 |' t( p
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。+ A* U' C3 X" {& C0 Y
1 R) r: G, D7 b7 T5 X' e& G
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
$ q) y& c) w! j3 ]4 q3 H4 q, ?Dim I As Integer '样条曲线拟合点数量
* s' I3 u2 I! ~+ Z- N: D6 r我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?" K; p  ?7 E1 q0 ^9 R) g
, i, \# g9 [; K' ^8 q
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!: }6 ~2 ?  M4 B& {
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
$ F+ _% r- [7 X$ V: b: ?不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
/ O  I2 X- N* @; L% @7 i- e& H; Y5 q7 w, A4 S: I, X  z2 d* u+ }
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
9 N- h$ ~# d4 T, @- _% ^CAD是不是只可以用C语言编程啊???% t4 p5 n7 n5 s$ B6 s

& o% o: R% r& v$ O! `不能用DELPHI吧?????

/ C6 b$ v2 B; t( ?9 S" D% z
6 p9 M" s4 f8 F9 \1 F6 w- F4 N+ X) ?0 i) F4 ~( Y
干国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 )

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