QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 31033|回复: 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还没这个功能.* X$ v% D  ~7 ~% J  \* t. [
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表, v* N( @7 v+ g9 r6 t
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

9 U6 E5 J  H% N& B5 ~, G  |  W, G7 b' Y3 Z9 g( W
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
, a! C( b& ?/ f# y2 D考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:6 _! @/ W; w( F# k4 E$ u1 O: n

  \9 R5 m) N( O$ F4 hSub JKX()$ j: B6 Q# u# I  R$ f* ^8 m/ B  S
    Dim O As Variant '基圆圆心坐标
" Q/ K2 d$ B5 I    Dim R As Double '基圆半径
: g/ ]) U  i: D$ F
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)1 l" ]  ?: X9 v4 |% f/ i& `* p# I
    Dim C As AcadCircle '基圆8 ^8 G3 q+ w# o  }5 R# a
    Dim I As Integer '样条曲线拟合点数量
; E, J% e5 z0 J# j9 A4 I& S, r3 w    Dim J As Integer '循环变量* s0 m) z  c5 ?$ j) S4 z( T
    Dim TT As Double '逐点展开时的展开角度
( R6 b# r4 I. P$ p6 ^8 b    Dim P() As Double '样条曲线拟合点坐标
# ?5 Q" B6 _7 g4 J" ?4 H    Dim T1(2) As Double '样条曲线起点切线方向- K) t7 B; m( f1 {5 M
    Dim T2(2) As Double '样条曲线端点切线方向8 S! i8 `& r- D- s) @; A6 X
   
7 }+ ]0 o# v- x/ s    With ThisDrawing
$ i) i/ j# p& _        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
2 d, l4 N: s1 J) o! P        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
  q# {0 W' C& Q        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径0 u! F) ^3 ]5 X: G6 U& _" l' [
        Set C = .ModelSpace.AddCircle(O, R) '画基圆% b- O. E" v$ `, J0 T
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入2 u2 v) y6 E% r
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入5 H/ s( i! ^' ]8 i
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度9 c9 u) W- G3 t" Q  O2 q! X
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度% ?5 c$ ]: V( U: [; W0 h
                T = 360
- G5 C) \' X+ P/ H! F* H            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序7 m! S# ~9 `2 h- ^6 \
                C.Delete
4 Q, ~- C1 P* H' H- M5 Q0 E                Exit Sub6 o: k& O4 S* Q5 T* `! p
            End If$ g% h( z  q1 Y
        Loop! U5 D1 R" e4 a8 X9 Y
        T = T * 1.74532925199433E-02 '换算为弧度
$ D' F# B5 }- p9 J        Err.Clear '清空错误代码,便于用户下一步输入3 i; w) [  v6 _$ g
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
: g. f% ^5 A  a! T8 T            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量8 V, [( Y* t* Y' n" y( R9 a
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50$ h) g, F& S" m; i2 `& ^
                I = 50& t# u2 U6 ?' a( k7 t& p" l$ P
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
- ]" d" C8 }  C; I2 ~                C.Delete' F: Q. `' Z! T$ E
                Exit Sub/ S: S  D2 L3 G% ?5 W
            End If
4 a5 F3 b; s* R7 U! f: n
        Loop' Q5 z$ J6 B3 C
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
: n; ]; M' g: A: o* W4 G       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
$ v6 R7 P& [  }6 z4 y  m- u$ y            TT = Abs(T) * J / (I - 1) '计算该点的展开角度( i/ ?& g; m' ]
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
, e- U  V6 _3 S. q) b6 Q            If T > 0 Then '判断逆时针展开还是顺时针展开
2 Z  L- E% k5 x! S8 i                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标  g. _6 q. @0 m2 z+ V
            Else
8 F8 Q$ x( ?3 U# h: V( g$ s% ?8 |
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
/ I/ D! Z1 k0 g& C, w! R* }! B            End If# E' z, i' }# B* M
        Next+ r( {. C1 J! G
        T1(0) = 1 '起点切向
0 V' h3 n! U4 O& t
        T2(0) = Cos(T) '端点切向
" t% B0 E4 ]' u$ |7 A8 p7 b        T2(1) = Sin(T)
3 i- X, L& |+ i5 d& o1 F, c9 O        .ModelSpace.AddSpline P, T1, T2 '画样条曲线% T3 O2 S3 x5 d7 P6 K
    End With! `' f" ~8 {: q* @
10: End Sub
( |* h, m2 q% O
4 Q% Y6 |2 s1 @, ~
6 T& ]  a# N8 i加载程序方法一:+ G$ |2 S% Z: k
1、拷贝上面的源代码;8 r3 F4 o5 Q4 S1 M  x3 R* Z
2、打开autocad;
7 |" j$ m+ T% Q3 L% s: f7 n3、Alt+F114 x, J+ m$ u1 u
4、“插入”→“模块”→粘贴7 r( `+ Y/ g! m- r# x0 J* w; t
) R! ?  i) T+ }8 n* m6 i; U% ?( p
加载程序方法二:
$ l! d3 {) Y$ u, D3 j1、下载附件并解压, s! K  x- T2 G- x$ i; _
2、打开autocad;
4 b' J: n" n" O: }0 u1 W3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;$ |2 @% h' u4 [0 |
3 B# B) y: S  q, O
使用方法一:. P. s' c. R' b! x1 q
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
8 K. R9 D% ?' C) W: {
, s: P& }5 f2 [1 C1 K使用方法二:
- I  q# w: @% k5 I/ b$ u1 G在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。$ h% B! F' Z, m' p* _' O, f$ N

) K" ^/ q2 F, [7 O; L+ x$ K使用方法三:
: x$ [* M& H0 ]! `- ?$ {% m在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。7 o, H2 |) p: [) \
, T3 t' d# M  z
[ 本帖最后由 woaishuijia 于 2007-3-31 12:58 编辑 ]

JKX.rar

7.6 KB, 下载次数: 594

评分

参与人数 1三维币 +20 收起 理由
★新手★ + 20 技术讨论!

查看全部评分

发表于 2007-3-31 12:06:02 | 显示全部楼层 来自: 中国山东烟台
楼上真是太历害了,这样的水平人就是高啊
 楼主| 发表于 2007-3-31 17:16:23 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
! Z* K* k0 O, L& U$ J$ v9 yDim I As Integer '样条曲线拟合点数量1 `. N+ ?, A" h# i' M- \
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?8 x! p( x. ^8 n( h  J9 c; Y
$ w. p+ D3 g; A6 `; ]- @
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
3 L& W( _( Q! e& m4 C大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D15 a* u! [8 b  q8 D' m! S$ B: @" H' v
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???" C/ W8 v3 e+ M: r! r+ K

# c9 @  |% _0 K: u不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
/ b+ v3 h' a3 r+ a. @CAD是不是只可以用C语言编程啊???2 M8 n; K! o# W% w

, A; X: X1 f  M' x6 G0 ?不能用DELPHI吧?????
1 U, B7 g$ f4 v

+ W* u8 f% s: ^# r7 t2 `0 d6 O. s3 s' ^' |! F3 d! z6 P' H# 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 )

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