QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32261|回复: 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还没这个功能.
& ~9 J% ]6 I/ W+ {, T另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
7 S9 I* R, U) h( T4 P( J怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
; f& P8 I9 F0 V% y9 H: s# c

5 w. |5 y% H3 v* n- C( j" G楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。, A! G5 o0 r1 f$ y' z( Q+ O* l2 @
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
1 R1 X; f1 b* K& I, J$ {
* F8 u) e8 s. r$ J' ]5 D4 gSub JKX()8 ^/ N3 ^2 j) G! c8 M
    Dim O As Variant '基圆圆心坐标- ?# h( k9 X" I. ?
    Dim R As Double '基圆半径$ {! Z: ?- ]& Y, M4 i
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
: V: y3 f, A/ r; W3 J: N- L) b    Dim C As AcadCircle '基圆
3 A1 X) J3 t: w
    Dim I As Integer '样条曲线拟合点数量7 ~  V. g- p5 o. _" n
    Dim J As Integer '循环变量1 ?/ U) C7 n% g& u1 j+ S. ]
    Dim TT As Double '逐点展开时的展开角度4 Z- f/ `! S+ v# N. {& T. N- T7 U
    Dim P() As Double '样条曲线拟合点坐标
# f5 L" \8 ], `$ f$ C9 v  l$ Y$ u    Dim T1(2) As Double '样条曲线起点切线方向- u" i  q7 z, U1 g5 R" c
    Dim T2(2) As Double '样条曲线端点切线方向" i' R4 T2 ^5 \+ K) z! U
    1 n. W. `6 S  k3 B" H
    With ThisDrawing# G. ]& W  _5 q% R: G: t0 i
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
5 K) N+ ?0 w8 `: L* D$ t9 n        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
! d0 u* k$ j$ R0 X& U        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径8 D5 X7 c* }' P+ T7 j  x
        Set C = .ModelSpace.AddCircle(O, R) '画基圆  ^. n4 k. l  n
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
3 c9 {) @7 M6 L5 N
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
+ ~" K! \- W; P4 }: {/ v/ {            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
4 U0 M1 h  @" l1 p            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
$ s2 h7 D% i) x8 `# X* A( {& n$ n                T = 360
: n/ f7 d5 ~/ M' ?1 V! Y1 l            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
' X1 z# c* I$ Y# Y! Y1 W- G                C.Delete$ M( o$ ?1 W% I: ^- U3 K
                Exit Sub# z: z# f8 ^8 R9 {0 h( ?5 j
            End If
( }0 {9 ?7 Y0 k" [4 K        Loop; j' ?4 E3 C/ s% r% x4 t
        T = T * 1.74532925199433E-02 '换算为弧度
7 r; b$ l' p: n+ y8 H        Err.Clear '清空错误代码,便于用户下一步输入6 ^2 R1 T; f8 J' N; \
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
( v3 P1 c! g1 L$ y" T8 R' a/ A            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
( H: ~+ E- Z+ n/ H& o+ G- r( M
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为506 g/ s7 Y8 S: q
                I = 50* q! |3 x" Y# d) g7 |/ P
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序1 p  P' k# g" y& t, k# r
                C.Delete
7 _+ X0 j( Y6 Z7 K' f) {                Exit Sub
" b$ d( W  _$ @            End If
0 f6 T! D1 `; T" Q" ~* j
        Loop
) U7 L5 ~' h3 s7 a" U/ N        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
8 }, r- H+ ~5 a' y. l8 k       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
$ _7 K1 J) T9 b( i! H( ^' `8 h            TT = Abs(T) * J / (I - 1) '计算该点的展开角度- w& G. N+ N4 Y8 i5 ]% {" j
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心); f& p$ `& s* {; N
            If T > 0 Then '判断逆时针展开还是顺时针展开
; f- c# a  P8 d+ z9 y                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标, H2 @* Q3 i' }( \  t
            Else5 `  z3 P% x/ s* [
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标3 T$ g2 p3 m  a& K$ `; [
            End If
% a& J* N. g9 x7 j( V- s5 r        Next% B6 O) D2 V' c, r
        T1(0) = 1 '起点切向8 B  z" a+ U' _. m& J) m" q/ L  ^. a+ d3 [6 T
        T2(0) = Cos(T) '端点切向
+ X4 b* ?/ R1 g6 N        T2(1) = Sin(T)
8 z6 V: t1 `$ {0 H; A        .ModelSpace.AddSpline P, T1, T2 '画样条曲线' p3 h  r" j% J- X
    End With
% H6 a3 \; r, ?7 D10: End Sub
2 N% B: M* \! w- O: n( |
! S0 v/ L* Q+ g' r+ _  f5 k. X' q' Y3 T3 w- b* W5 E
加载程序方法一:
" c/ S; ^& W  D$ q1、拷贝上面的源代码;
! X" G1 c  r' ~; v4 [9 a: v2、打开autocad;8 j" W, ?" g, u& h
3、Alt+F11
! J' i+ N8 _' X1 i7 L, |2 z4、“插入”→“模块”→粘贴
6 i' A! K! p8 H6 U7 X& `5 P& i. P) m# h$ g5 z& i: U+ Q& D' ?
加载程序方法二:
9 Q# y* U) ]1 O$ S/ C" {1、下载附件并解压
+ \( m3 U6 v) w6 S2 Y8 G2、打开autocad;
% D& ]& v; f% A/ _% M3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
) p6 n1 G8 Z4 y2 p5 l
& n  p6 D9 _$ U0 r& \! d使用方法一:! v3 h& U- C0 N5 s
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。5 L( r8 m* i1 }5 L# m, {0 ]2 K

8 w3 R" r$ L1 N( I9 W3 a使用方法二:
1 f& s- L$ I8 q- d3 b8 p在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
) T0 X# \5 k* y& Y# @
9 e0 \/ e9 o  l使用方法三:
# H1 @1 ~% B6 I& g! b7 @6 e在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。' ]7 q, Z5 J8 b  D' x

. Z/ ?2 u  u. k! y: _[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
' u# w5 L, b1 \. S+ _) L9 xDim I As Integer '样条曲线拟合点数量* c$ \. q; [% \. |0 D% F+ m
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?8 a, N8 E5 i; M* R2 ?
' |7 v  I( c- r! U& S. u
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!, {) I5 I5 R0 b. N+ J
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1  i1 K6 B2 E/ ]- l3 b5 m
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???6 P$ n) j4 C9 a3 |' c
  n2 v) S: ?& M" ?, u# W' n
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif1 Q$ D& ?8 e* g9 p$ u' d0 h
CAD是不是只可以用C语言编程啊???
, Z# h- X5 `& f7 ~3 r7 i
* V3 N& h6 G% B& W* O不能用DELPHI吧?????
3 O* J. S+ ?& ]1 q4 X" _

0 L6 e6 k1 o0 ?) _! s2 V' X& Y' ^* |' R4 D1 R
干国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 )

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