QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32126|回复: 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还没这个功能.* ]: o7 A) S6 h* H! T1 v) u
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表+ L5 R4 G( T7 g0 ^
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

) }+ |" a2 ?3 c( [" Q
4 t$ E/ f+ V0 _3 y3 s$ g3 T楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
% }8 O' J- X1 e( p: ~  p$ l. g考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
  W: q3 q  R  R/ |+ i& v* @- Z  W" N! e" Z+ Y6 I% R
Sub JKX()
6 T% l$ D+ K4 \, [, c, V    Dim O As Variant '基圆圆心坐标
) h: m$ o+ N) U5 x% t) K    Dim R As Double '基圆半径" h9 K8 i! k8 X8 K% J$ S7 g
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)2 U" T0 `+ e% A9 F
    Dim C As AcadCircle '基圆6 [/ n! \8 w$ V& B) ]* G
    Dim I As Integer '样条曲线拟合点数量
' h" B) \2 Y6 c' u# y0 ]  P    Dim J As Integer '循环变量
, o( ~  z2 S. G2 S$ Z% [" P. x  t+ H$ _    Dim TT As Double '逐点展开时的展开角度
: D+ F8 g; R1 d    Dim P() As Double '样条曲线拟合点坐标
6 d' z* S% Z  [' h; I    Dim T1(2) As Double '样条曲线起点切线方向
+ t% H* N$ ?2 c7 E( Z3 Y. Y    Dim T2(2) As Double '样条曲线端点切线方向
; U' W0 m; _8 k0 @$ Y: H, o- ]- f9 }    7 ]& c! x5 B1 k& g8 F1 |: i+ C
    With ThisDrawing
1 n. e7 v; c8 p6 [- v1 B        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
' B" r% M4 n; b1 i+ |$ X        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心- N! s' o) p4 e0 A0 {1 Q* G  e
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
5 L+ ~) U- H* z9 p8 j' t        Set C = .ModelSpace.AddCircle(O, R) '画基圆
9 H0 M7 x& m& k0 h. m        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
* L4 y3 G, p4 |  s5 k2 }$ C
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入; g8 a) d7 L4 n; J& Y* s' Q
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度5 l" z( a* p: M. W' y
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度$ V6 [: J% N  d% V9 Q: r6 I
                T = 360
( c3 d  S$ T, {& ?- |/ |7 i            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序; j. _* ?1 [& ]
                C.Delete; G& U8 e8 ]' K5 S
                Exit Sub& k+ d. {; r. l, Q
            End If
0 `1 k5 ]$ G+ l+ R; a& }        Loop: _+ `6 N# E2 H1 F
        T = T * 1.74532925199433E-02 '换算为弧度! ]/ Y, e5 v; S7 J  S
        Err.Clear '清空错误代码,便于用户下一步输入8 `; o+ a  l& ^7 t" a0 b
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
0 D, r0 a3 n' ~( _            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量2 d" ?  J, X0 s  f
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50) f# U+ M) a: T7 j
                I = 50  |; f# _8 {8 R- O
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
% \* v' _7 t1 j, V% D                C.Delete
0 W( U2 _/ f8 z/ ?1 ^                Exit Sub
  D4 ]+ N! ~6 E0 L6 f# f& v$ Y) |9 r            End If

) @* @3 n& Q/ _8 Q        Loop
/ M- C( u0 I. K5 }( t4 x& D0 r" L  ?        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组' T/ [; O& ]9 s7 Y) @
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
6 g" b! \& K  R* |% K2 W            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
* r' K2 @9 j7 R6 ?) C1 H
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)8 u* u* g$ E1 ~0 M
            If T > 0 Then '判断逆时针展开还是顺时针展开
& g. x1 C" W, x- S$ j3 H" B                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标$ m% z5 Z5 S$ N+ \% ?3 O
            Else- c% O5 r/ ~7 r
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
+ i1 I8 n# \2 Q2 S            End If; Y8 D' f3 p  q& H% `* K% `: i
        Next
3 u. ]* H' D; E- f) Z
        T1(0) = 1 '起点切向* x3 V8 T$ M; v# X$ S+ e
        T2(0) = Cos(T) '端点切向
- H7 b/ q9 h4 v2 ^: m! ?        T2(1) = Sin(T)9 ?* ?9 H& c! b! @
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线0 g. k# ]. `( H7 v1 X' M
    End With4 E0 l3 |0 W# B1 L  ]
10: End Sub" s* z( h6 ^9 l' d

; \4 t* S: B# u5 B" r
8 m( g; u( F8 ]$ D& n6 B# E2 Q加载程序方法一:
1 D. p. |+ H8 L1、拷贝上面的源代码;
& K& p; [8 u3 c$ k$ h" n# A% @2、打开autocad;0 V& L2 `2 p' m/ z# L+ ?
3、Alt+F11
1 k2 G" a4 N  I  f7 e4、“插入”→“模块”→粘贴
3 l8 S& c5 O7 t5 R" P8 K4 J7 t0 V
- Z, {' K8 |6 {" U/ @* B$ h0 `  Z4 m加载程序方法二:
5 L4 m9 ~+ k3 r* H  N1、下载附件并解压% D, z% I' F7 Z* J0 h
2、打开autocad;
7 F& q' w4 q4 p& m( e! N3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;; {3 j9 B8 O7 h- F- n. z
, Z9 X4 `% W* Z1 o. H
使用方法一:( Y# N- d" s+ a# D7 u1 b2 H% j
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
$ R8 }- g( J5 y% a& ^( s. }7 |" b' R! \* V/ @& }- Z) |
使用方法二:
3 [! f) O  C& b; k. O6 m, p在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
6 q6 P; e) o$ l0 n7 D8 d* p- m1 r, m1 V
使用方法三:) i% E4 b' E# o2 @+ A
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
& g# x! w# S# |/ m. Q9 R
! K. n$ K/ J# k9 ?0 q% t[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.( R! M+ y  }0 A" G4 x
Dim I As Integer '样条曲线拟合点数量
! c: }- r' l$ }8 ~# R: `我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?! k" Z$ F( A5 e2 m4 l7 [/ X1 Q. p5 A

  H8 R8 N! t3 D5 e* g: ~" p[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!3 Z- l  a0 \2 E
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
3 Z" ~) V, h9 _$ S7 l- z2 C不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???, F0 Y5 Q) c5 p; c, R
) n6 A! `% q3 @! F7 q1 W
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
) X9 l8 l6 o- p5 MCAD是不是只可以用C语言编程啊???
+ j" s: w) @& v' T' O3 p
. H& R# i' u3 j/ \不能用DELPHI吧?????
2 u" G* [. ?  T5 m5 B: U
+ D! y1 ]- _' n

( `. D3 K2 T. 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 )

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