QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32124|回复: 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还没这个功能.
- S% K% A6 W4 y/ x; k- K5 a另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
  O" `4 q  M: U怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

  F& c8 Q, V. n$ c& ]# J" j' W; w! n0 e* J: Y
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。2 h0 d, a$ y) N" m6 a% Q/ M6 y
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:& G: k8 H6 J$ d6 D2 S* l2 T

/ B, x& |( M- E/ o6 sSub JKX()
- l+ D5 m: q7 t' ]: M    Dim O As Variant '基圆圆心坐标- \) ]/ |8 B5 X
    Dim R As Double '基圆半径
" p5 y" c0 v$ J4 ?2 C6 [
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)3 B7 ]+ q' h. r: Y+ m0 f
    Dim C As AcadCircle '基圆9 U7 \0 A; `- b" `7 W  S9 x& z/ o% z
    Dim I As Integer '样条曲线拟合点数量" ~5 \, b; P$ P0 f& r  v+ J& Q! Y
    Dim J As Integer '循环变量
' D0 p* F. H; G1 g    Dim TT As Double '逐点展开时的展开角度
( {! g) }* I# M    Dim P() As Double '样条曲线拟合点坐标
% o2 a3 e+ w8 Z2 C    Dim T1(2) As Double '样条曲线起点切线方向8 i( `5 B7 W$ u+ \" Z; H) D+ X
    Dim T2(2) As Double '样条曲线端点切线方向
# @! t+ ]3 L  @1 _/ [* l7 R5 _   
0 D' e4 s( l- {+ }    With ThisDrawing
1 a9 \5 M: l2 v2 }+ \+ E        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
' [4 j+ M. R  r. C2 G% R0 a        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
+ w3 O* r8 ~7 D4 e* Z        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
# l. F% y( p* \# ^* C        Set C = .ModelSpace.AddCircle(O, R) '画基圆9 l  }# H0 e4 y  g  L, v9 p$ U
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入' Q1 G- ]0 j8 r) I
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入7 n3 K) ~/ o/ v
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度0 {8 }3 g9 ^# F# i
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度: a% _) A$ m0 \9 u
                T = 360% V% C( Q+ H- B4 a' \  V% x3 h
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
. Z* }( r% f* m) n                C.Delete- @3 T% O: \  U" Q+ @
                Exit Sub  n/ d7 K7 V! p
            End If+ ?* [; S5 V6 d6 ^. s
        Loop
5 V' r' `- D+ U9 h3 N
        T = T * 1.74532925199433E-02 '换算为弧度2 f7 q- Y9 l+ i/ n
        Err.Clear '清空错误代码,便于用户下一步输入  Z7 ~' s' g/ u5 q# F9 d
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入- F8 }* a# O. R+ Q8 {/ s5 W3 r
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
4 U: @2 A8 J# c7 A* N- j
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50" i. C. F4 [% M/ g0 ?
                I = 50
" u1 p1 T4 w. K% ~1 K& d            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
( @$ E& C) u0 F0 b) n                C.Delete
$ y% b3 F7 ~0 z: v' s9 y                Exit Sub" t# A$ i: e  Q( s' J% s
            End If

% h3 l6 ]. d  y5 H1 X6 J        Loop2 L; E( d7 m% d
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组) b6 x. l- z$ |4 @9 [
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标6 F$ w- Z" Y1 m5 H
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
) G6 g8 n* s4 Q. Q+ W' ]( Z4 ?' `
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
  b& ?, s6 C: P2 Z6 N7 T3 m# I            If T > 0 Then '判断逆时针展开还是顺时针展开
8 J, i; h& ~; Q  b4 e: I: j                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
% R$ d, |8 k4 P* V# A3 c: L            Else
  Z+ G' N! p9 i( G4 u7 p% i# F
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标" w  `3 N- S+ `3 H2 n' h
            End If
1 w2 _5 V6 y& l- s# [" b; s        Next) _$ \+ y0 q9 |" s9 r
        T1(0) = 1 '起点切向
. p5 x1 u# y4 J! z* t4 ^" m
        T2(0) = Cos(T) '端点切向
+ ?) R# u6 {3 s* L- b        T2(1) = Sin(T)
' |! W  V3 ~& f- a1 U        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
9 H, G6 V, w3 u! ^    End With
! r$ m4 Z( T' X: M+ p" x7 {  W10: End Sub0 u- s  F2 g( Z7 P- O% N

5 ?" j$ w$ r* g4 }& Y6 [" _1 q! s; Y9 E0 A" @% Z% X5 h" W! M
加载程序方法一:
0 B! \& o+ |: t7 v, t1、拷贝上面的源代码;
( v& e  ]1 c$ }+ k! x2、打开autocad;9 l$ M$ ]  s$ p- f! N& H
3、Alt+F11
! n5 t! y# T; v4、“插入”→“模块”→粘贴
5 H% b/ ^5 G% [  L. x# P) C) q8 }- I- X+ a' K4 x
加载程序方法二:
/ U5 j4 @/ e$ K" F! C7 c, `1、下载附件并解压8 J2 z) g, \7 b2 u
2、打开autocad;
0 y( A+ D$ l9 W2 l% X, ]  g! W3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
- E5 r9 j" n1 a4 E7 Z! ~' n# e3 X7 l  ]  M+ N. ]
使用方法一:  T- c- g' O' x" i; M
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。" M2 O6 h: y  v( t) M

/ U5 V. E& S5 ]7 o, [+ q# j使用方法二:/ B* N' f0 `9 S, U5 r( G) L
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。& a- ^  C- g  A

5 L7 y" P7 Y4 g( Z2 L使用方法三:9 `" y4 h; V# S% ~! Z6 J7 D: f# j
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。$ ?: H* |8 X& h
- |$ _8 v5 }9 u" H
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.8 V, Y. ]9 g+ P7 }* ]
Dim I As Integer '样条曲线拟合点数量0 x- Q  m( r4 J
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
9 g! J8 j+ S6 A" l
: C( K+ @, \2 @; u5 q6 q[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!5 T5 i+ e/ f) K7 z  R) F* C! M. a* p
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
+ l' f5 h3 e) W5 r不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???0 t6 K& R7 z+ U( i$ a0 ~  u
2 ?" h* T( W! l# S. [$ @
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif7 o& C' I! y) \% R2 ^
CAD是不是只可以用C语言编程啊???
: Q7 j) t& Y; A, ]
- T1 Q2 r0 r, U) x: R- _不能用DELPHI吧?????
! {' d- C/ I$ k# ?" y" M
  _- N2 z% h' g) o+ _  @
# h" _# L7 [% }- |
干国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 )

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