QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 31895|回复: 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还没这个功能." y/ \. L9 K* o4 w* ^. t" S
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表& m8 W: V8 j; A: {6 L
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

7 C8 z0 e; s$ R, k3 g' Q& J" g2 S# }3 Z$ Y
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。( @; f; m( \2 m. Y1 r4 x0 l. D" d
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:6 X2 }' l! s! w# x

* o+ ]+ ~* F! [% m! V# H' @% XSub JKX()* Z$ T7 e' S. C. t) h
    Dim O As Variant '基圆圆心坐标
8 ^0 Z4 k! [. o1 \2 G    Dim R As Double '基圆半径9 N' m3 \; a4 R2 m6 e% M+ _
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
- q) X6 T0 q5 g& u3 c    Dim C As AcadCircle '基圆: M% ]. E' g& u- t' [" d$ |
    Dim I As Integer '样条曲线拟合点数量5 }; s0 N8 I: h# s, X
    Dim J As Integer '循环变量7 E3 R5 b: Q4 P) V/ x+ c& I0 V2 h
    Dim TT As Double '逐点展开时的展开角度
- a* P. m% s' R" e    Dim P() As Double '样条曲线拟合点坐标
% K- E. M4 I: s    Dim T1(2) As Double '样条曲线起点切线方向
' C( D7 }5 o3 c% T% ^    Dim T2(2) As Double '样条曲线端点切线方向( `$ j1 w) n3 L8 ]+ W7 {
   
7 x. w9 D/ c$ O" o) L* o+ @) D    With ThisDrawing
  J, F7 g' w+ J9 u7 E* }) u5 S        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序1 k( f% e+ h& K/ N+ r. W  y. Q
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
) R: L* Q# B4 y6 S8 j: X: @        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
. Y5 o$ Z( |9 N! C1 O        Set C = .ModelSpace.AddCircle(O, R) '画基圆
$ I# z- |4 @3 _) n- _/ T        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
3 p0 G+ W9 W7 E/ K% k9 a
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入/ w, v9 u0 a# S7 H& D, X: n7 D
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度6 M. Y3 Q2 q5 N  y
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度6 H% |, w; J6 f& h
                T = 360
" b! o  L+ I# ]4 Z$ D            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序0 N2 u+ Z5 O' w" d, h( d
                C.Delete$ e3 L! }  g8 B8 ~
                Exit Sub3 U- a) x* z* }, i7 K  Q) s4 }) b
            End If
: z3 S& E# q; }4 ?1 \, e* ~% X) z7 W. J        Loop
  Z6 n: z) F" v' x" I" v
        T = T * 1.74532925199433E-02 '换算为弧度% H3 q/ `: U) e3 s+ V$ b
        Err.Clear '清空错误代码,便于用户下一步输入
6 n4 {* z& K  p3 _) Q  H        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入) ~4 @/ m/ g, ^7 n3 D
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量: W3 A" Z4 r6 V
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
# m: S! V6 a/ k& [- o6 p2 |
                I = 50
3 f; p9 ~7 m+ X5 `" L' X            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序8 y3 G5 l0 M% z
                C.Delete
- v9 S. b# e4 D                Exit Sub
. q( ~6 L0 q; `            End If

2 T7 g9 A" v% c$ Y; m        Loop
, q5 `+ ]( ~7 r" ?6 R# U3 \        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
$ k8 a! w4 k" X       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
$ X/ i. K. |4 r& G8 [2 F- R            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
! y4 |' H/ H: ]
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)- c- W7 Q# ^7 b7 n
            If T > 0 Then '判断逆时针展开还是顺时针展开" u$ e/ a/ A7 l4 _! d
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
1 ]0 L( \, P. O8 G6 p            Else
  ?- r2 H0 G& _& [' e
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
8 c: C, t  K( D6 j            End If
: ^' R2 X& G! N6 e. W" H        Next
, ]6 {! ^  w0 a; ?6 Q/ u! }
        T1(0) = 1 '起点切向2 O! u2 I$ M6 l7 l" ~8 G" R
        T2(0) = Cos(T) '端点切向
4 ?) F# u; b# X& I. o5 }0 W+ B: T4 \        T2(1) = Sin(T)
. J5 z& }, _* j" ]; ^5 P1 B        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
2 v& |! C3 \7 @8 f* a    End With, V9 e0 W% m, Y5 |+ b5 C+ g# ^( [
10: End Sub
2 F# i4 i8 \3 B# h( F6 r
1 ~) c5 W1 y: N' z# F7 K, y6 y2 }& ^6 g6 K7 ]7 W
加载程序方法一:$ f/ n* H& O$ h! C: c' |
1、拷贝上面的源代码;0 K/ T# O% X$ O+ ~" G$ d
2、打开autocad;) z. |, o( |. W8 l4 E9 a& ]
3、Alt+F11+ W7 C' E" C0 C5 Z
4、“插入”→“模块”→粘贴
# S; K' \: ]6 `3 Z; m5 T! E
- A) S  O) L. V, b" ^加载程序方法二:
# z. g+ P& J) B- K1、下载附件并解压
$ V0 S  o0 I& P) F2、打开autocad;) O; d2 B+ X5 F7 A
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;; y+ K2 M/ R. k1 U4 ~1 f4 W3 G

) u) ~. Z' a) A9 V/ f# Q* N4 K使用方法一:
0 \5 q1 r3 G# n" G在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
# R8 A6 j$ ?# m& g2 ~$ ^' o2 n& x# e, n6 X& Q6 o7 Y9 ^
使用方法二:* h: N& u* o* p6 v0 {. @+ P
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。$ r- {& E, a2 L4 c( e
. v9 f3 h+ E# Y/ U8 O2 I  k
使用方法三:
# q& W0 I& S! q0 `8 ]在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。" s9 ~2 Q' A( E# Q$ x1 R$ D
& \0 J5 d7 |0 Y& j
[ 本帖最后由 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" j: N/ d7 o/ ^. {5 F3 l) W1 S
Dim I As Integer '样条曲线拟合点数量
0 \- n- c& [3 m0 z4 ^我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
: S0 _/ Z$ O$ v7 P+ i- F, O7 }" [4 {. u/ P4 k# b
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
# P) ~3 R+ O2 E0 g' z. |+ k大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1# A2 i/ V7 Z8 h2 b+ n) F+ ^$ @
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???- N) `0 @7 H1 H  D1 s7 o

( U# r0 D) i: u. [8 M+ k( T1 b不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif2 z9 M, F! j* S+ I! f
CAD是不是只可以用C语言编程啊???
% Q% S3 {) h4 ?, n& l9 _+ |: {* m0 X, o  B* j
不能用DELPHI吧?????
2 V$ M$ J- Q2 m7 l
0 X0 H1 `( F$ R/ V7 Q2 C3 q
; J  N0 t; ^* }& G" }( d
干国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 )

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