QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32209|回复: 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还没这个功能./ ]' N; W7 Z$ \9 S* T3 C
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表- f) `% I2 g, D& E) O
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
: z0 _$ E8 n& K7 Q( X0 N0 s: A
0 S+ A1 |, L+ c0 [( x
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
4 Y* o/ \; h- f+ u. D# X5 p" t% b考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
) g9 |6 O4 b9 i: y# J6 ]2 p) U
! t  U/ W& z# c  L: @" t. @Sub JKX()
8 n+ ?7 l; p1 v    Dim O As Variant '基圆圆心坐标! Z5 t# B; f& K6 c' k8 G, h+ S
    Dim R As Double '基圆半径
# c) ]- V. u# _, u; d) c. [
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
( G1 \, o5 Y& _# ^. ?/ i    Dim C As AcadCircle '基圆# t% S; @1 \! A% u8 G. [
    Dim I As Integer '样条曲线拟合点数量7 K+ H9 V( d5 N1 R: {; _1 g0 A. W+ l
    Dim J As Integer '循环变量1 H& W. T, B  S1 g) E
    Dim TT As Double '逐点展开时的展开角度
, z, {0 M; i& A  W; o( i. P    Dim P() As Double '样条曲线拟合点坐标/ u- Z" V; @# d/ N0 F
    Dim T1(2) As Double '样条曲线起点切线方向' Z8 `* K; N$ Y7 X4 o' L
    Dim T2(2) As Double '样条曲线端点切线方向
3 |, T  k% B1 b2 I    ; H4 v, E) n! k+ q2 [; u
    With ThisDrawing3 H- S  H' ~( g/ G) w5 u- }9 f
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序( ^5 @7 k/ u9 V3 m* J6 g' m
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心; p% @* |, ?- N( w6 a# Z
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
  D. a) ?5 |4 k        Set C = .ModelSpace.AddCircle(O, R) '画基圆
" s6 x( r9 L; I: L5 t* c% a        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入2 D" B  d0 r6 |. h
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入( b/ r7 D4 N6 Z2 D
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
0 p# [  {0 e% V0 Y            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
' \( K8 u' K4 p0 y/ w+ F                T = 360) o* ]/ B3 r% e1 F* a& _4 n
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
6 A9 z& c2 D: O1 t                C.Delete) a& Y. x" r) q8 t5 \# u6 Q
                Exit Sub
( @8 ]* n0 s' g            End If* J6 V7 y3 s' c1 a2 m& w
        Loop
4 g, k1 G$ N9 j9 Y" S
        T = T * 1.74532925199433E-02 '换算为弧度0 j' ?$ e4 t" k4 k5 A6 t' K8 r
        Err.Clear '清空错误代码,便于用户下一步输入1 I  X2 a- q! C, R5 {1 s3 L
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入! ~3 }# N+ d; G" D
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
( F! T! E, s6 G$ }) T
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50- e$ |% B0 X: F" P) c  |
                I = 50( A/ G, d7 V5 `) |3 z5 s
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
) `. [" l. E& |0 @- c4 D+ H                C.Delete
; v" C: M$ U# ?$ r/ ~: R& i                Exit Sub+ V/ X& Z  S7 J2 |3 f$ U5 `8 W/ \
            End If
+ X+ l$ J" Y/ E1 h4 ~1 a$ v
        Loop, r* C7 {) G. P* q
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组% ^( ?" k; d6 _  G6 F
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标% G; f% M0 K/ f8 U/ L1 M7 m
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度. T9 i0 x+ o6 g' M! x! [
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
7 [% v3 C0 s6 e# ~9 L6 u' F            If T > 0 Then '判断逆时针展开还是顺时针展开
" E9 w: s( f9 g/ O+ U8 K8 U  W                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
  U' L5 }5 i0 _' m: d) B            Else
! X. J! k; ?+ {8 `
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标1 r8 V: ^$ T; d3 s3 R
            End If2 D, z7 S8 A$ w: {
        Next5 J1 X% j4 H2 D/ f; e* q
        T1(0) = 1 '起点切向
9 o% X: I; f8 G6 q% W. F
        T2(0) = Cos(T) '端点切向
5 f  x' b+ r4 g6 E8 o/ O2 P/ ?) \$ @+ U        T2(1) = Sin(T)# k* z0 Z$ u9 M% S- Z
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线+ X! d! L% }" _( |. ~
    End With
% O( D0 S" g, l1 S4 a10: End Sub
+ x% I" V7 ?' v  J6 F1 n/ E0 m& R. V% F" A( g8 o' F
# X5 \' c$ f# w$ \4 ]
加载程序方法一:
- h" M7 @/ G8 @7 U" h- W1、拷贝上面的源代码;
" w: d2 @* v; V) n2、打开autocad;
6 h; h6 x4 S9 F- Y. l8 u  B3、Alt+F117 A" Q% ^" d5 U0 e
4、“插入”→“模块”→粘贴3 L5 P% F8 T4 H. M. p: e
$ S8 {& h5 M7 l/ S
加载程序方法二:
, N* j/ p" [0 N2 R# q* }  I2 F$ ]. b1、下载附件并解压
1 i! x+ c/ y* @( [2、打开autocad;6 v; m4 V4 B: P  o" {% _* X' q( a
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
% i6 I3 Q# {' w; B% T+ k: [: a4 F1 S% @- S$ H* a" q' y
使用方法一:2 J& {& \: X: Y  X7 g' Z8 W
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
3 ?& I: e# q  z' d! ^- z5 y0 ~8 ~: b% J$ I% u3 G
使用方法二:
  i* U3 r# g2 T0 v7 [在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
, {9 f# L/ n  x2 E, |" T
7 l1 b7 B2 E) v( v* z4 ?; d使用方法三:& Y5 k  ?% W: ~# {% G% t% L
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
6 A# s+ i! O" C0 {5 y% b: }+ d1 \; f# a+ J& p1 \- {, @2 ~, E
[ 本帖最后由 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 x% X3 n( _) a: E5 cDim I As Integer '样条曲线拟合点数量
: C1 E, z! Y0 L( p我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
$ Z9 X4 X. G3 }1 ^* V& q+ O1 }. m1 b
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
2 A' |% W) i6 X大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1. z, u+ `% }! Y, x) Y
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???$ J2 q: S$ t9 b# O9 p  x; N& U
& s, D0 v/ p$ ^0 P# Z' b
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif' D2 c& Y/ l: m  M/ h$ x4 B
CAD是不是只可以用C语言编程啊???
$ M7 o- j1 v+ M6 Q$ c, S7 `' e0 q: g3 e
不能用DELPHI吧?????
/ J/ ?6 U! Z5 @$ s' L, P2 E
$ F7 _1 g1 v/ R

" ^" ]1 C6 A/ q干国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 )

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