QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 31897|回复: 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还没这个功能.
0 m4 m) ~4 s0 o0 ~另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表1 ?2 P' {0 g# _- ?  V% O
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
- e7 m, y/ {1 t, R' z

0 A6 f: m- D2 i4 {9 s5 ]2 l楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
6 }! v( ~' T+ F; v$ ?4 r( s; c考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:3 I6 {! c8 n' ~: R& y  w. T
# x2 a  Q9 i4 G' K
Sub JKX(), M6 R0 p# y- f+ H4 J" j
    Dim O As Variant '基圆圆心坐标# o# v0 i, n4 {6 X* C  h% @
    Dim R As Double '基圆半径& d; F8 V( h4 U/ \8 z
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)5 W2 E. |) P8 x9 ~. Z+ l
    Dim C As AcadCircle '基圆
# v, m, F  G2 {8 U( T8 b" F
    Dim I As Integer '样条曲线拟合点数量% q- o4 K( H9 Q. m: ]* ?8 R1 [
    Dim J As Integer '循环变量
0 u, P) X/ t. G: Q3 q    Dim TT As Double '逐点展开时的展开角度
9 D+ G4 {4 {, y7 L# h    Dim P() As Double '样条曲线拟合点坐标3 p# u# v$ o7 p3 I; x
    Dim T1(2) As Double '样条曲线起点切线方向
1 d; n* E$ j% O0 D    Dim T2(2) As Double '样条曲线端点切线方向
% o% {6 l+ p  ^$ N    & P& c$ Q: H; ~: M# ]4 s# z9 `
    With ThisDrawing
( e( o/ v  k2 j/ M( k/ I8 R        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
' r1 t* n; ^! J5 R; i        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心/ H. o) Z" r8 S2 ]- y% b$ V$ v
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径8 Y; h# X# g% }* x- L; L
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
) A+ F4 T0 h* h6 j& h" L        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入  i( G0 h0 x  g! U' B! ]
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入. ]; J! w) o6 r6 r8 j$ |5 P3 {
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
# [" {7 @% ~/ `* t( r  K  e            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
6 M. Q# s9 v! N3 w$ Y0 e! l                T = 360) Q% x# r7 H8 x& l( q; k) O. @
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序4 c6 d* x' q2 S
                C.Delete
$ A+ B2 Y5 v: @% B                Exit Sub
: [( p0 {. f' J# L. Z            End If
1 ^  I+ k/ o  y        Loop
7 H" d0 v0 K" O
        T = T * 1.74532925199433E-02 '换算为弧度
' x/ y" y* `! r5 G" y. t        Err.Clear '清空错误代码,便于用户下一步输入: b/ Z. N. d3 G
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入, _& T3 Y  z, x1 r
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量* G& q9 z( i' n6 F% |
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
) e! O8 D8 \& _3 l$ B, a; O+ f) ?
                I = 50
. ^1 Z+ i) R  d, t% c/ ]; M            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
9 q( q8 O, f# d* V8 G! |                C.Delete& s: Z- O# d4 l' B7 K4 ~2 x
                Exit Sub
  y( U3 g6 u. u$ p. N# r, y! Z5 A- q            End If
6 x/ S# k# i2 b2 {+ a+ T! O( K
        Loop
) ^1 N) [( h$ a  J! |        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组8 }- v" n4 p/ {& o1 m
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
5 F" p# B6 _9 ]" {            TT = Abs(T) * J / (I - 1) '计算该点的展开角度# W0 l; e. [- Z/ r" j
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
/ H: F- j4 q) X            If T > 0 Then '判断逆时针展开还是顺时针展开
1 x) _  A" n& ~                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
$ L; n7 O% `3 R* _            Else
. _  c& V! a1 N$ d* E2 Y* ]/ p( P
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标3 ]# x/ Z; ]- X, \8 W' ]  H' [& E
            End If+ I! n9 W/ I5 I, }( h
        Next
9 W; \1 ^6 Z6 A' u/ V
        T1(0) = 1 '起点切向
# A& v$ B+ m; i) F; ]
        T2(0) = Cos(T) '端点切向
$ L% y+ x% ?$ P: ]6 o. |7 \        T2(1) = Sin(T)6 N' t7 O( Q( L* k! R0 |
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
7 J6 ^8 n8 m" f9 O8 v  c    End With
# i7 `, H% |6 i* q5 g' N6 R10: End Sub
6 [: y  F# Q4 J- f/ V* \9 C
% }" G: }; D9 U
9 e0 ]) ~8 t* P1 j( ]1 B加载程序方法一:6 V/ b6 q6 N) {! ~+ q
1、拷贝上面的源代码;
- P3 g8 J" n* X- h9 T: m6 y8 b2、打开autocad;
5 s  Z& e' V, @, B% z7 F% X  }3、Alt+F11
& S: J6 J: W9 `! y4 H9 b4、“插入”→“模块”→粘贴: M8 N- b. b+ @

) z& \( X1 z" }; ]# @: M* @  Z/ a加载程序方法二:: N0 C2 \3 U* O2 c& F
1、下载附件并解压2 U% q5 L, \  r* D2 ]
2、打开autocad;2 _# c% F2 C: B+ ?7 G) h* ?
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
/ p/ {* t' D2 o* c( s2 Y6 @/ w8 {7 F; C: q. G. U$ X
使用方法一:. a/ D) n. Q) S9 W! Q  P- U
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。3 Y; F' Z4 J/ d

6 F7 }' T2 i( Z: c+ V使用方法二:8 m% R0 b9 s7 K, q% V: v! R
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
& G: u8 r6 G. L4 V- g2 p6 W
" r" n) ^- u# ?* z; e4 y使用方法三:
+ R# \& Q( \% Q; u1 x在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
% s; t5 B9 x1 @9 e6 p
( R1 P, m# f( S6 i$ o3 F[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿." L! c' i8 V, T/ u5 V
Dim I As Integer '样条曲线拟合点数量3 U3 o5 X. c# p" {& f
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?4 y( a9 z; Q0 f) V, r! Y6 b
, H3 g/ u( B5 p
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!% Y! S2 [, z" l9 V
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
6 p, @. j2 G( G- y不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???, g! ~) a  J; h+ w( i- M: U9 {; s8 u

4 V: s, \& g" v- [* b不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif# }) T. l/ P) ~* L: R. E% L
CAD是不是只可以用C语言编程啊???
( [2 ]# J1 q" C- U8 Q: m9 V: k2 e
: I4 ]% A+ i2 _7 b& h  Q, i4 `不能用DELPHI吧?????

: z2 O, \: \, u  ]
( H, S/ X9 S  p1 y  J+ `9 o/ n9 v$ [. Q  q5 X
干国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 )

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