QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32130|回复: 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还没这个功能.
$ u5 Z: k% ^6 {/ O+ f另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
4 K0 Y9 A! S$ ]7 ~( ?. Y, x4 f8 Z怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

1 _1 ]2 G  f  T- L# K
/ @0 f9 b: s- P6 X1 s6 t, Y楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。7 z" }8 I8 i, l- x8 S
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
) M) \4 \" ?: v8 V* C) L/ |  K1 l9 c6 Z, N2 I
Sub JKX()+ l6 c1 k0 i- n6 Z6 h9 q+ O; v
    Dim O As Variant '基圆圆心坐标) m6 V4 Y! p: f
    Dim R As Double '基圆半径  R; ]& C$ E* ?% B. o& a" \
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
  q/ L+ o' U9 }+ s. j" V    Dim C As AcadCircle '基圆
! \2 y# A; K) T4 `% _7 |/ h
    Dim I As Integer '样条曲线拟合点数量
' y! d7 T+ B# P7 Q% {$ Q( g    Dim J As Integer '循环变量
. j; X$ y( H. I1 N. z7 j    Dim TT As Double '逐点展开时的展开角度
5 D; W2 f2 u: H: C6 H  |/ A" s    Dim P() As Double '样条曲线拟合点坐标+ ~/ Y3 @6 l: |2 q- o5 V8 O
    Dim T1(2) As Double '样条曲线起点切线方向& {: k( Z) a7 H3 e
    Dim T2(2) As Double '样条曲线端点切线方向; m- a! C; D7 H  C) U9 b6 L
    3 f7 Q, g! m6 J
    With ThisDrawing
- {, d7 P# N/ i6 k9 o        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序! q3 C3 x) _4 t! ?$ L1 P
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心, {, U6 r2 {8 v3 [9 z8 C- E
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径8 }/ f6 i, {9 z5 u, l
        Set C = .ModelSpace.AddCircle(O, R) '画基圆" }, T8 Q4 s7 ~: q3 j
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入4 K, c2 a: q0 {% A. M- S
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
7 \/ Q( N5 p2 U            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度  k; T4 }% ]; W8 i5 V' m  g
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
. \) d: l  R( H( z& {  G                T = 360. j8 |# s; g) u  i
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序, o0 m' J0 Y. g% e% {1 u6 J7 w8 Y
                C.Delete
6 X' ]& [2 y; g6 T: I- J                Exit Sub, Z! W, q: _+ w
            End If, G8 o9 F: d* K9 N8 t
        Loop
) U" k; o- q9 E3 v* n4 J% L
        T = T * 1.74532925199433E-02 '换算为弧度7 B" F# p* I( Y) H4 |$ j+ W
        Err.Clear '清空错误代码,便于用户下一步输入/ X, [. m1 F$ I; C! O" p% e5 f
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
- `) E' v1 K" K) d            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量  ~1 R0 P+ W4 A8 J1 E
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50  h! t9 W4 O8 A0 F3 W9 G; u) n5 ]; l3 Z
                I = 50
( \9 S; K9 U; _: S; h            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
# v  @. U+ o8 O3 G# w                C.Delete
# a' }% v/ N/ q  P                Exit Sub1 y  r5 {  T7 m8 X1 [' m
            End If
; }1 g2 V6 F$ J% n# u9 \
        Loop6 ]; s( G/ H  _( H: _" u+ `
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组0 ~9 N) [8 g1 _
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标  y7 c; A6 A# j0 A
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度8 B( f) E4 y& a- ^, b2 ^5 G" c
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
# y5 r5 S3 o5 Q7 [' n8 m$ P            If T > 0 Then '判断逆时针展开还是顺时针展开9 Q) K/ Q6 l* O
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
) _  b3 B0 |8 Y6 B            Else  R7 I; P( W/ F# t1 d- ~1 t  d
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标' z2 S/ f1 }# @0 n& i% ?& ~
            End If/ V9 g0 C8 {& l: `4 Y2 W3 |; E5 ^5 I$ t* @
        Next. d0 U1 v/ a0 B3 [* L$ v5 G6 D
        T1(0) = 1 '起点切向
, U+ W- Q5 z9 v3 o( r
        T2(0) = Cos(T) '端点切向
* S: s$ R7 p2 C4 m        T2(1) = Sin(T)
3 p" c2 Z: R* ~: @7 h9 D8 O        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
- j- w! {, T# v6 N: R- A. h" f    End With
1 u- d- z0 }0 g- y, F5 x5 t10: End Sub* q; o2 t' d# e0 {5 p/ a

% b2 N+ E8 {3 k' A5 ^( T8 [
1 ^! }$ _3 ]% u- A  o/ J加载程序方法一:
, L" `1 B5 b1 F  \' O1、拷贝上面的源代码;
/ X0 E* S7 l/ J0 s  M2、打开autocad;$ C+ `. O1 ]& V( z' u& \
3、Alt+F11; c: P5 t  M, j8 U/ ]
4、“插入”→“模块”→粘贴
+ u" d! K) }* L, r7 Y5 ]) C) f4 I8 m, X+ _/ k2 ^! a5 b" i4 L. W
加载程序方法二:, v# ~9 E5 ]+ ]2 V& b
1、下载附件并解压0 g, @6 l# w+ u
2、打开autocad;6 `: E  ~% G: B  m1 c+ Z) b
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;5 H8 Z4 l& Z8 r/ e5 f

( [) E# n/ M# I" v使用方法一:
. o1 s; r6 O8 i; v" x在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。2 X8 P4 {* r# l; A( r

0 N6 S( F4 k. s3 y) J' e使用方法二:
* e, u' r  h! u5 V% Z在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。) Z  K( q7 ^4 Z% w
5 S6 h+ ~  U4 x5 F2 i8 _, m  p
使用方法三:
* ]- A7 u. W  l5 l5 j* F+ s0 S' ]在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
1 n9 i$ _4 c6 Q, E, m3 U
* h# h( ^- @# ~7 e5 g, z" n[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
$ u1 x# R7 S' C0 B' g$ rDim I As Integer '样条曲线拟合点数量
& g  H9 A# d: |5 A( k我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
; @) ]: T: N7 i$ B8 @: z/ M2 m" F% d" [! ?$ p3 U- j
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!' j  Y3 b8 I1 h5 ?( m0 f
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
$ F8 B+ F3 P: T) t/ I% T不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
* o3 W  I. |) y% k
) Q4 z: y2 O' n4 b& E( J不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif% @- D9 W' l, ]
CAD是不是只可以用C语言编程啊???4 V( E% r. Q( K# {7 U3 h* o/ O
$ d1 y1 C! C/ X
不能用DELPHI吧?????
+ w3 T% ~; ~2 J  H
( N7 ^/ ~" p, r5 k: R8 p

' S! ~! Z9 g( J1 ], W* z& W  @% h; }干国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 )

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