QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

- d0 F7 o. k3 h2 |- D% e9 C6 E* w
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。' T$ o: P( n# N/ n* M
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
+ p5 E# x: ]7 \1 N& `3 ^: z4 F6 ~  k/ }& W- X1 ?: k
Sub JKX()& r, f' B" {- x9 G: g8 c
    Dim O As Variant '基圆圆心坐标
$ s" V) _, n/ E' Y/ ^: |    Dim R As Double '基圆半径$ ]% U7 v* |6 x% d7 m# u1 t1 L
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)$ c: i5 K* e* C+ d/ Q1 ~2 k
    Dim C As AcadCircle '基圆7 a% b) P; L5 Y3 o6 H8 g8 a, c
    Dim I As Integer '样条曲线拟合点数量
: c0 S! R* ]& X6 b$ S    Dim J As Integer '循环变量% j+ D- V1 z  e  C
    Dim TT As Double '逐点展开时的展开角度
% z$ x. \2 c$ x# p8 v1 l0 a    Dim P() As Double '样条曲线拟合点坐标6 i% E' d8 Y! n% }: c" ]# I
    Dim T1(2) As Double '样条曲线起点切线方向+ I" `# `+ ?! B6 f
    Dim T2(2) As Double '样条曲线端点切线方向
, e% f( F) ~; x) F: a" F5 Q    5 v* d6 q0 V; F# e5 H% ?) I
    With ThisDrawing
3 }0 L  F. X1 {9 s9 J( J, V1 K        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
, x- M1 A8 {5 N6 l* R        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
1 M/ x8 P7 N+ \        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
, j+ O7 i/ ~8 F' `  l0 u        Set C = .ModelSpace.AddCircle(O, R) '画基圆0 b( J* Y' E/ }( F7 _6 v
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
. M0 }* `& Y3 H7 J# y# [, n$ l
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
2 o' i8 y4 @# V* w            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
' r8 o; X/ ~0 r            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度, H5 c  n3 b% u7 N
                T = 360% ?5 t' S, s. W5 ~9 t" j2 `
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序! K5 C+ E1 y- _8 r+ R1 A
                C.Delete* U/ ]# J$ Q. r8 Q! u* C$ w% ?
                Exit Sub
( T7 G" h+ d2 X. K            End If
8 s) c$ a2 y* L- `        Loop
2 p. e  H* n; W1 x  k% g3 k
        T = T * 1.74532925199433E-02 '换算为弧度6 P' }' L- K  _5 V. r
        Err.Clear '清空错误代码,便于用户下一步输入$ a$ [) G# c' `4 h% L  w
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
8 R5 a8 U" b' \            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量( _2 ]6 N# w. s3 C* V3 L( J
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
( b5 m! K# A" |# Z2 m5 U
                I = 50& J& S2 H7 p( P  P7 m+ O
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序4 `* `, m  Y! W# R' l; i. M
                C.Delete
/ D5 s! P; u+ c                Exit Sub& A" e5 h( a) l$ _! n+ L- s
            End If

' b( e  U3 e/ }; x        Loop
- f' t5 I* X& ^6 g6 N, k, j! r        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组6 v7 {  S3 E4 u
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标# g0 i) g* [7 d# Q8 a
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度+ K4 E& V6 k% {$ t5 B+ B+ D
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)  [2 k+ e  b) a, H1 w, g8 }1 x
            If T > 0 Then '判断逆时针展开还是顺时针展开8 l3 `: F( g% z, f4 ?. P  l% ]
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
( s  f. _/ n* S            Else
( t/ C* a; J" G
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标. t5 A6 i. t9 Z$ i4 P
            End If- t% o0 p# e+ v4 Z9 |8 p  o
        Next  x' |6 i- H" h: G1 j9 o
        T1(0) = 1 '起点切向8 i7 X5 w) n/ X- Q, J$ {
        T2(0) = Cos(T) '端点切向; _" J( B( Q3 t# k
        T2(1) = Sin(T)
( s& V/ A& I! j. j- Y& y# L7 U        .ModelSpace.AddSpline P, T1, T2 '画样条曲线1 D4 G' {, I( @% x/ M# L
    End With
$ u+ T9 `. s4 o& Y9 U6 u10: End Sub6 x. @& h/ I4 K4 d- o1 J- S  \

7 Y1 g- v" e0 S
3 G6 D, T* }& A6 i: u1 [加载程序方法一:% I( a6 S; F8 w. P7 T
1、拷贝上面的源代码;# U1 F1 k9 R' ^/ g: Y
2、打开autocad;2 D: s! H4 p) q) I" B( X
3、Alt+F11
- p9 ?% o. z# H4 ]" t% @6 B4、“插入”→“模块”→粘贴
7 b1 B; p+ D1 F1 _: u: x6 `: M. h1 n! T- S. N9 L; Z. T$ c' _$ ?
加载程序方法二:
+ U0 B$ }/ I9 C* R1、下载附件并解压
* u1 F2 M. U* }: b2、打开autocad;7 m* S: Z. m8 j0 k4 {
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
& U# Q7 Q' B& s) i* t$ i
. J, I5 j# z+ Q, B; `9 c# ?5 i使用方法一:# _- c0 O+ \0 n% W$ o
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。) `0 k- p- R1 H* W6 y

, l: o3 }5 _9 L& I0 L3 Y使用方法二:! J6 }4 n* @/ n2 m  }2 N- a
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
  |) Z0 r* k6 j( N# E6 Q, [2 w; |) ^6 J! C: q( C
使用方法三:
' G* Y: [& j2 [4 i. Q/ L* m$ c. g& q  X在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
+ D1 Q7 f- c7 A' f6 _3 F
3 G3 J6 Q  x5 f" }7 c1 g% L[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.' c, w2 [$ L% |( \: [8 F8 c1 n# c
Dim I As Integer '样条曲线拟合点数量8 k% D6 u* V: S+ H; |$ [" l( b6 B* ~
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
' m+ y$ V: |! X% ?3 V
4 m+ N  o/ A. _: V- A6 T8 p8 e[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!; L! Q6 P  q/ M1 I! ^
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
+ M7 h+ Z: o! j: ^# R" L不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???" p, }# z: p  X) C+ ~8 p9 J
% o  @; D8 D* |$ o
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
& D! Y  |1 \  i( H! ?# yCAD是不是只可以用C语言编程啊???
9 Y- a; [7 ?+ h/ _, p) O
; Q$ O3 s* F1 U; a, H4 o9 e不能用DELPHI吧?????

4 N9 e: u  G8 D- O4 _, _  A. V. C" ^& w" V* H' @

3 z( S& o- T; T$ M# Q/ y干国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 )

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