QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

0 `3 i! s6 k4 E$ P# l" I
7 x; ]: ~) u8 a! Z* c+ N楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。/ T9 ?% O7 O: \3 U
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
0 F6 {! n7 b, h3 M* Z# D2 `; A- P: ]7 M7 E2 Q- g& v# {) b
Sub JKX(), `0 a, E+ a! S2 \* z0 w
    Dim O As Variant '基圆圆心坐标7 E* @5 ?% n, q- V- H+ a: I
    Dim R As Double '基圆半径6 B5 w" T. \3 v, [( E
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针); o% A  M6 ?7 z1 f1 U6 c
    Dim C As AcadCircle '基圆) P9 L3 F" u$ V( [1 v/ L
    Dim I As Integer '样条曲线拟合点数量' z' n( v5 O& w1 g" O
    Dim J As Integer '循环变量
/ C" R# E: }, B, s! L    Dim TT As Double '逐点展开时的展开角度
( i$ I5 k6 W$ a    Dim P() As Double '样条曲线拟合点坐标  P0 O% E- C5 n1 H3 F
    Dim T1(2) As Double '样条曲线起点切线方向. D# {9 ?+ E: q3 {& J6 z) ^/ u4 a
    Dim T2(2) As Double '样条曲线端点切线方向$ y7 u, C! h. `& c
    9 A6 e" f+ ?# T! ~6 w
    With ThisDrawing0 D# s# ^3 Z4 F
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序% o- p. e& R! b. f3 @# R, C
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心/ ]: _2 ^$ K4 t; D
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径3 e8 C5 G7 t" h/ L& |) `) t
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
4 H+ q2 V- _6 E4 X9 q. o# i, M        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入- _8 V, ^3 o# n" {- G. M
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入8 S2 b; R3 ]2 p6 y: ^, \# M
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度: _, d7 M3 L5 k8 [  R% _: Z' t
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
* P: a9 x6 j: r3 f                T = 3609 p4 c; p1 }  a
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
! r9 F" _) o0 p                C.Delete7 K3 S& ]: _8 U; ~
                Exit Sub6 c. p) h& \4 q8 d7 m, R: b2 W/ \( ^1 r1 o
            End If
8 {" B+ A# `, q$ P* C! `% A        Loop
! n! G( \6 n1 n; T( S9 O2 C
        T = T * 1.74532925199433E-02 '换算为弧度# r1 v# ]6 y' I! D4 a5 u
        Err.Clear '清空错误代码,便于用户下一步输入8 ^. r4 N, J! P
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入. R& `4 e+ R9 X7 [/ U9 c
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量7 n) g" F: w+ A' Z$ Y
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
$ r. z' l$ g! C+ R
                I = 500 v% O6 \$ \3 L5 Q9 Q; d  x
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序& E5 \! \! h% a. O
                C.Delete( z3 \0 ~; P8 w3 ^3 [5 p- z: c2 A
                Exit Sub
( D7 ~" M1 ^& g- k            End If

1 R& @% }2 T2 k8 M, U; c: H: r; L        Loop* H5 M+ f8 h1 l
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组
+ c9 S. o2 P3 y       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标& ^9 d0 q5 `' I0 i6 f
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
! j! X% X/ h" F( I: A- T' n, Y! Y0 d
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)+ w8 q; Q. S1 i
            If T > 0 Then '判断逆时针展开还是顺时针展开
# {  K( E" C" x( X; X7 \                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
: O* r9 I9 d- d3 v6 h0 ?+ R            Else
1 g- m2 B, w% P" j( w, f! L# y: w: V
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标$ k' V; ?: w/ J. q+ E9 F
            End If- S$ l8 t" a: i7 C& k
        Next7 t  G4 m/ V0 C. b) p
        T1(0) = 1 '起点切向
- O. u1 b. T( I$ z' x2 z
        T2(0) = Cos(T) '端点切向
  m% h! G5 h9 ?/ |: y* `, f$ q        T2(1) = Sin(T)
) n5 r, L3 w1 v: W  W        .ModelSpace.AddSpline P, T1, T2 '画样条曲线- r$ w$ Z* I0 H- I! f
    End With' i& u0 ?# D0 a7 c
10: End Sub
4 B; B- E- k; R; K
7 N+ C5 e" s+ @2 K5 Y; \% m2 I$ @9 k5 k6 h" O
加载程序方法一:/ W7 v2 R4 T  E4 G1 `  Y. @
1、拷贝上面的源代码;* K( A" ]6 W. T2 `' ^$ R" F
2、打开autocad;
: `! X5 x# z2 b* Y0 ?( B* |( ~8 u3、Alt+F11
' J2 O6 n8 l; Y4 h& x7 p4、“插入”→“模块”→粘贴
; K& b' h+ y+ @) @$ F  O# o
5 d1 S( a0 g, ]7 W加载程序方法二:
8 j% h. g- r0 n1、下载附件并解压8 Z% Z" J4 d8 b
2、打开autocad;
7 Y2 E/ b- }; M. U3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;# H+ h  K8 V! l

+ V% l! P" h0 Q6 z使用方法一:
. Q9 h7 E+ Y- F# d* ^在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
, J/ n' [8 T9 ^8 ]1 B
9 f* Z- o* G1 F* s) E使用方法二:" g3 Z% V. z9 \
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。: V; }5 \3 P. _/ p3 ?. F* i
% q" `+ q2 W. J0 z
使用方法三:; ]  h& P$ _4 P1 y
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。& q3 P0 r4 A6 @( u
* A; O8 d+ {/ I6 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.# [: g) l9 L( m5 h( o! v& @
Dim I As Integer '样条曲线拟合点数量- W% ]* t+ l  s3 A8 z) Y
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?: H0 Y; w6 l' C- g% ~& G
3 A; d( m9 K  @+ f5 L5 o* z
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!& A0 n9 O+ |! o+ j+ v
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
; c- c3 n! {" T3 _7 T) i2 {7 ]不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
( Z- r9 C: C. T
) W+ W0 e; B7 \8 l5 i不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif7 @7 c( Q( r, c4 \/ E8 p0 ^( r
CAD是不是只可以用C语言编程啊???
9 w! f7 Q* L1 z6 g9 e, j' g3 Q2 C# U7 U( o7 X6 `* q( t4 ^
不能用DELPHI吧?????

. `! K$ n! j+ X5 D5 Y: ^5 n7 Z4 q& s' t2 O$ O7 V7 C+ F
% [3 B* h6 ~4 P* W
干国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 )

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