QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 31901|回复: 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还没这个功能.
9 g) |$ E- j" E4 S9 b另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
/ o8 p& Z( @' q( z- R怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
/ _' P: x8 t- b" z1 l
# y) }9 |. f, t9 z; ?! g
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
8 ~5 F' @2 v: _考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
6 r  d# l4 W  `, L
/ X& u* ^( E" Y6 l+ i- K0 A4 |Sub JKX()
5 f. O( d- D# R- j" y2 r    Dim O As Variant '基圆圆心坐标& X5 M7 p7 K4 G* R2 [9 R
    Dim R As Double '基圆半径
4 _+ _' B8 h: K2 U2 d& }, T1 C
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)3 j* H8 @) t3 Y( Q
    Dim C As AcadCircle '基圆
, g& [. w* N+ j2 E( O
    Dim I As Integer '样条曲线拟合点数量
5 Z: T! ]; P  M    Dim J As Integer '循环变量
  f8 J8 s: W8 M4 p$ E6 b    Dim TT As Double '逐点展开时的展开角度
) ?+ o" n3 z. o9 b' {    Dim P() As Double '样条曲线拟合点坐标& ^( N, O3 z5 u0 a/ |0 s4 z2 c
    Dim T1(2) As Double '样条曲线起点切线方向+ C; C& G" L: l$ q
    Dim T2(2) As Double '样条曲线端点切线方向
' ^* q6 T  l0 M+ U6 C, d/ N! E2 [% h# I    5 N8 A5 v. ], o
    With ThisDrawing
: m* P1 J* a. X: @) b        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
4 M; F0 n/ f8 {9 u  g* }4 m- |        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心& e& F/ ?! ^8 x+ \1 {, T
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
3 b7 g5 E. f; [$ S' c' L- M3 e        Set C = .ModelSpace.AddCircle(O, R) '画基圆% {9 A' D8 b; y* i' [( G
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
4 f" Z6 n0 c2 R5 P; M
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
1 L2 t# h% d, |- m& U8 C            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度' r; |0 ]+ I$ R
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度4 v8 V) s- K8 M. R  r3 Q. W
                T = 3604 O* i* c$ A+ k7 S6 D# x  W
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
+ V8 [. }  c% s9 y9 \                C.Delete
* l8 e$ j5 R' T0 \7 ?7 O                Exit Sub
$ f# [, o2 _. l8 ~' x            End If) j+ @/ E5 [: J* w
        Loop6 P5 G5 }- v$ V0 |' n/ Y" Y
        T = T * 1.74532925199433E-02 '换算为弧度8 j; c, \2 G, |- n; k6 W
        Err.Clear '清空错误代码,便于用户下一步输入/ B  r, @# W6 B+ W% Q7 I6 p# x
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
# {* g2 b# o" ?% I            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
2 z4 n% r8 v& R+ u; r
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
+ F0 d4 a1 A0 m5 {8 c% [7 D
                I = 50' l) i+ `: H8 a5 q+ M/ s; N! z: R
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序: n! @  Y" v* Y0 `% z
                C.Delete
" L0 Q3 p/ y" H" h% Z                Exit Sub
3 k# ~' u2 G; x0 p- `! s$ U6 o7 K            End If
* b9 W: w2 U' x
        Loop. P8 d2 Q+ ^6 ]
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
. O6 e0 Q% Q% z8 ]+ s       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
( ^4 ^0 h5 s7 {  R  k' N0 R- y* H/ b! `$ C            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
& T. e3 v* }; ?" z( s0 c
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心). s# E$ f9 B' Y8 E3 C1 b
            If T > 0 Then '判断逆时针展开还是顺时针展开
, R" S% b$ ]7 \+ ~1 W  E' R6 M                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标& [; \5 _2 B( g' ^' [( u) r
            Else6 H* X; }  ]  P; t- b) I
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
8 [& j- O+ Q7 K% ~: U2 k            End If, d: q3 f. X2 Q8 R& C/ Q5 Q
        Next
( [3 n  W4 f4 n( T/ L0 q
        T1(0) = 1 '起点切向/ |/ r: u& u  i& \1 c- O8 o; E
        T2(0) = Cos(T) '端点切向  q) m3 j/ T% e
        T2(1) = Sin(T)' z1 ^5 ]2 o( a2 R0 l7 Q# S0 B
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
- Q+ U( I  G3 @# Y* \4 p    End With
! J2 R! h7 }* H4 A- e% Z+ v. _: C9 o10: End Sub. X- u7 p4 T& u, Z$ {4 F' L& u
' L; `/ y% f/ h" c* p
( R; c7 w7 k8 \7 Y8 O+ `' n
加载程序方法一:
, m  I: k& P! @$ P1 _1、拷贝上面的源代码;+ A: a  j' |4 a5 q/ t: ^. ^
2、打开autocad;
8 h4 L9 H1 a+ A) l6 B5 d# w3、Alt+F11$ S$ ?( d2 I4 b6 f8 H8 R
4、“插入”→“模块”→粘贴
. ?% |6 |  a+ V1 `" x* L( o1 \- C
加载程序方法二:
( x( Y& |1 m# W2 R9 `! S. S! y1、下载附件并解压
! ^' v" T6 b3 ~3 Q$ `2 ?' u1 O4 D' Y2、打开autocad;
% x3 k" \' _7 k5 x: }5 Y3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
% `7 K/ ?( K( L1 l9 [- y: t4 `8 n5 ~7 W  K+ @: @
使用方法一:4 l! {1 T7 `% d; J7 S
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。' h! M9 Q# v5 ^; h( m2 {9 f( W

" D( ^2 J/ S1 G2 L" K, c' G使用方法二:1 t# e: H8 M- K
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
% ~) \( Y) ^% M$ v+ I8 s( g  B+ G7 B( U" x, N  S9 x
使用方法三:0 }) H6 |: r6 X
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。% L8 F) a  x8 l2 W: C! B( Y

' \- N# e0 S4 w[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
6 K( b  ?1 ~' u3 {$ ~+ ]5 oDim I As Integer '样条曲线拟合点数量
( ]- }% r0 T$ M& J我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
5 O) H0 V4 b% ]) \# L2 z: C' d" `4 o$ v3 _4 ]- M
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!& ^2 b) f( A2 ?" ~/ E# N0 u# k
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
9 X1 w9 Q) |" }  `7 [不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???5 c$ {. z9 K: X

3 k! a" o! b! A; S不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif6 L  p) W& s) G+ \  G  W% N
CAD是不是只可以用C语言编程啊???9 ~; M& [8 C9 v& l4 `2 r) n

0 i2 x7 G; ~. Y' `: B不能用DELPHI吧?????
9 ~) H7 h. ^* s4 O9 F

& I/ u0 x" n, X# b/ o
# |) Y) A( G/ s$ j% O% X) ~干国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 )

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