QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 31928|回复: 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还没这个功能.
4 i# n+ ?$ E# B3 v6 T另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表( V' }) n  y3 i( q
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

9 f8 t( i2 K& W9 E. v
8 U4 I& O  ^% o/ v" e- g2 c3 N楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
  ~+ [  S5 X* H考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
0 M5 W$ c9 f1 b! ^; f$ b4 t2 j
6 x5 B/ A* Y) [6 @0 @4 ?4 ZSub JKX()
9 O5 r% K5 s. y6 S+ f' V    Dim O As Variant '基圆圆心坐标0 o; q7 {/ k9 Q4 l! L
    Dim R As Double '基圆半径; B) n3 k9 E* O* i0 W% S  H( U8 |
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针), O( u, r$ e2 J% O0 |$ U4 B
    Dim C As AcadCircle '基圆: R# }0 D5 }' j. m$ v
    Dim I As Integer '样条曲线拟合点数量
/ U" Q& Y% }! W) |1 D; f) P    Dim J As Integer '循环变量
9 A3 w# p/ D& p$ d3 y. K" |- Q7 u5 u, X    Dim TT As Double '逐点展开时的展开角度
& v) L: _! E5 n5 }7 K    Dim P() As Double '样条曲线拟合点坐标  T3 u' d1 ?% f* A
    Dim T1(2) As Double '样条曲线起点切线方向
6 e* w. s- F9 x7 ]+ P    Dim T2(2) As Double '样条曲线端点切线方向! B$ ]2 s" {' P) x* P
   
/ N8 n( u* i' f+ D6 W6 q; z8 C    With ThisDrawing3 x9 }0 s' U8 }* h. Z2 L
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
+ M5 e6 E/ t7 C( d$ N, K        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
' f* g" N. @- c4 R4 T: s8 Z        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径* ]2 T6 T& J4 O. K4 f
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
) ^7 j# t3 o6 u& ~        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
% _4 \6 y8 K" u; m1 ?
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
( c! K0 D8 v, @+ q  f8 m$ C( v; k            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
" i$ }5 m; [# z; g* i5 I4 J/ t            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度, f0 W1 Y1 |$ e- Z- O- O1 k! l- o
                T = 360) }. F0 Y; J/ B  S+ X' Y! O* E2 y# Y
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
0 z3 B2 T+ t& z- d) _                C.Delete3 I5 A/ x. t( L5 R/ j5 u* n
                Exit Sub9 J' |0 B1 V; ~0 P
            End If0 ~) F$ S4 F9 t( g: t
        Loop, I) U) L; x' u
        T = T * 1.74532925199433E-02 '换算为弧度
7 X0 p" k6 ]9 |4 C1 M4 C        Err.Clear '清空错误代码,便于用户下一步输入8 F( l7 c+ H) a- [" |1 L
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
& x; D5 P. s( G- i+ O/ ]/ A            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量' S$ L+ p; Z" p9 B5 u& B/ X
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50! v1 O; P' u) f- Q2 u/ r
                I = 50" W/ u  P. r' z! {2 ?2 F
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
1 D7 T9 D6 I* d$ T0 a: D' |2 w, s                C.Delete- q. j% i* }+ r
                Exit Sub  g% W: \7 C; E5 x! r, W
            End If

  j& H7 C. F1 M2 j; _        Loop4 G; m1 i  r1 a4 G3 i/ B! e5 t
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
& k( a% \8 D# h7 M       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
3 t% c+ z! J' f5 _% N8 |0 R            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
1 x. x! P1 {3 `- H& ~
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)& d, I/ q; R8 o! V3 t- F% c2 V
            If T > 0 Then '判断逆时针展开还是顺时针展开
& P1 Q' N* `8 u                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
% d( O# \1 p+ o$ ~            Else
3 H! n$ {2 q# }, ]6 H
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
/ ?1 L. H! L3 N+ P1 W6 C+ ~            End If
# a% G+ ]8 Z9 n' w) t1 f        Next
. `/ s$ J4 R* l, I$ k7 U7 V
        T1(0) = 1 '起点切向& L1 S4 m% ]+ _) d# h. S1 o  Q( G" w
        T2(0) = Cos(T) '端点切向
2 P  C6 l+ R3 z, A        T2(1) = Sin(T). e* e! ^. e" \( p
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线! b+ L2 M( M; W  e( ?  b
    End With
- {7 v' v& K5 t' d( C- |10: End Sub
7 y0 G% D# a/ Y% Y( R7 `0 Z# o2 k1 n% ]! Q

# p9 I0 {# m: b1 u% E- T: e7 b, j' T加载程序方法一:8 m* }0 }0 u; V! d# ?3 D# M
1、拷贝上面的源代码;! H6 e8 q+ Z8 w
2、打开autocad;
6 M6 s0 `9 z, W8 d; q8 p3、Alt+F11
# R4 z1 ^  f8 G' k$ z( d4、“插入”→“模块”→粘贴3 Q1 q3 W  c1 n6 f7 F
: n( t+ e& X3 I% S( b
加载程序方法二:
( _' v, `7 x$ w8 I7 l1、下载附件并解压  y$ U  D- t- u# p, F. k
2、打开autocad;
0 R# D" f) z9 B' p3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;1 ]6 b; l9 m$ v+ S9 ^% l/ z+ @9 v* _
  k* g6 p$ N; Y- H' W
使用方法一:8 ~) x) b2 h8 {: R( ~
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。. R  h5 f% {7 T9 c1 E
5 q: i4 w! {+ i& F' W  b1 `) y# `
使用方法二:9 y. M+ b2 k. n3 K- y# h' D
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
1 V; P) h% p" Y* `/ z
9 F% k  d- _  d5 t9 p3 n/ K3 l使用方法三:2 A: b# A2 ^* ~6 L3 Z
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
* Q$ P( U2 o+ W; s/ ?+ N  g5 y2 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.* R2 j; e: _' m4 s! W9 P+ x
Dim I As Integer '样条曲线拟合点数量
4 b% w- N0 W& p1 ^( d2 {0 d我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?1 d  j! n9 m8 y$ `: i
5 ]/ f4 J& d; q
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
' O, W  x+ W6 i& F/ g大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1* G; Z3 B5 t* M. J% Z
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
! w9 p+ X1 }9 [' C8 L3 j: r
* G* n: q9 n: Z* o1 W" `不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
4 i" J: T- W% ]- s0 dCAD是不是只可以用C语言编程啊???1 v# Y0 I' a! G

6 e, b/ L! l# p( p不能用DELPHI吧?????

( k8 x4 w0 q* M' ~  ^
) C+ U* {$ E8 n; Q: R0 w7 j2 }. [$ `; G& }( l
干国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 )

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