QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32089|回复: 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还没这个功能.: }1 A& \9 V: k: H: A/ ^8 y
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
8 r2 U; R6 n$ r怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
6 n2 c6 T2 C2 h4 h0 a
! s1 d* P$ g6 p4 {1 [
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
) p1 v) e5 p) K0 \考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:1 x6 L7 h$ K: N

1 `; h. h! `9 b7 Y* QSub JKX()
2 n4 [) L- W) ]$ y    Dim O As Variant '基圆圆心坐标' z2 m1 j, Q. y, F5 [  f" o5 g
    Dim R As Double '基圆半径
" l! @% M  z, _! Y
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)" B( Y: n/ W% e
    Dim C As AcadCircle '基圆
& t- S: I+ g. ?+ p# B
    Dim I As Integer '样条曲线拟合点数量
7 J" n6 Z# _) Z% R: p8 m4 G1 T# c    Dim J As Integer '循环变量
: u4 _3 M- e; x    Dim TT As Double '逐点展开时的展开角度3 a/ a7 c$ E4 _+ F4 N4 M9 M
    Dim P() As Double '样条曲线拟合点坐标! r! z, I, W& N) n, m
    Dim T1(2) As Double '样条曲线起点切线方向
7 A4 x  z8 o' |/ V3 B+ |    Dim T2(2) As Double '样条曲线端点切线方向
9 q: Y$ `0 I, F: b8 H   
' u1 V6 G$ W5 ^% E0 _    With ThisDrawing
! U" ]/ |) ?& R) C5 M        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序; ^; A" e% K3 J
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心" S+ z  Z3 C( b. V/ M" F
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
. [2 E( c, j4 z) x+ D' V* r        Set C = .ModelSpace.AddCircle(O, R) '画基圆
9 [1 O, I7 D0 E* a        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
9 [4 [6 r& D" G+ r9 e
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
! C4 ~  H$ p; U8 C. n% o5 k            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
+ g- _$ c7 n7 E1 V; p1 H8 q+ A            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
' Q7 A' ?- F7 N8 V- D; |  [* ]                T = 360
3 g* t; y4 S7 q: |. d* b( E: |            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
; t! ^9 D5 }& {$ L$ L                C.Delete6 i6 {# D: S4 f( p
                Exit Sub) c3 t; P. }. N" k
            End If& W( I& x/ m4 d; Q
        Loop* ]3 s8 D' B% v+ z
        T = T * 1.74532925199433E-02 '换算为弧度+ L* q& k9 T5 B6 b6 j) u+ ]
        Err.Clear '清空错误代码,便于用户下一步输入
& B% `4 a) Y0 a- {5 l* E        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入: _1 {' n* A- t5 E/ H2 ?
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
, X. \4 U  I3 q/ v
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为505 D$ L" e  d/ b0 N
                I = 505 G' M% c: ^9 l+ e& o
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序+ ]; P  V# a( P7 C' y) C* [: \
                C.Delete1 [! x- j/ E( a
                Exit Sub8 P2 g3 Z1 l4 l& |& a
            End If

. J4 f% M6 p  J% `        Loop
' o/ S' L; R$ V; H4 R! }. u  h        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组) P, q; U4 p6 h  y, h: m, k
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
1 e4 Z1 ^. z/ ^( [7 s5 q            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
1 y) ]( A2 J& K! o2 E
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)* v5 }- H0 m/ p/ L
            If T > 0 Then '判断逆时针展开还是顺时针展开' m) ^3 z8 m! k' S6 {4 a. s7 P6 c
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
2 `& P4 l# r, `. s            Else6 ]7 {3 b; L* {0 ]0 j; K7 Z
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
, w' ?% v/ i  p! D4 q5 W            End If
* N# w, Y& Q3 N4 g        Next4 E" X( R3 ]1 K# B
        T1(0) = 1 '起点切向3 [( C2 {0 H4 G( H& p: x
        T2(0) = Cos(T) '端点切向
4 T4 L2 C, P% ~" R3 ^        T2(1) = Sin(T)) \! B% M; g! v5 F, d* a
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线4 k' k3 {$ \5 P1 s' |
    End With- u; h, K' [7 t& S5 H2 ]1 U
10: End Sub
* Q9 W- C8 ^& W! L( w& {( `' w: O. t0 o" k6 m
' G" N/ ^. H4 \4 t$ q
加载程序方法一:# ?$ Q7 m) e+ h$ m5 \3 P7 i2 g$ @
1、拷贝上面的源代码;5 \0 F. x6 k9 `- O% s
2、打开autocad;
# @/ x- W4 w; W2 d3、Alt+F11
/ l; g3 |3 j& X/ Q, u  D6 ^4、“插入”→“模块”→粘贴
( W9 k; {5 `% M7 t
( Z) ~+ [% T6 _6 l' ^5 n+ I+ T加载程序方法二:/ r2 ~6 ~: o" q; J3 r
1、下载附件并解压
& r( r/ q9 v; N6 P2、打开autocad;4 J. _: P5 N$ q" k9 m
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
  U6 `1 A+ N% ~3 p- v0 Y' a  d/ q/ Y
使用方法一:
+ M# k8 `. W) X在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
( M, ?- |+ Z' Q+ m0 ~- z
# g) c0 A8 K- Z2 u1 K8 g% K4 i使用方法二:
9 c& R( O1 T9 f5 f; b+ ?; |在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
$ R1 {  ^6 [5 ]' N. p5 I' ~
  {5 P" e3 g* k, q% J& b( F使用方法三:
$ }, M9 _( f: P; V$ c' p/ I( _在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。8 B3 m* ^" _* r7 h' U

% B9 ^3 Z; Z" b[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.3 q0 @3 L, \( O" l- o6 D
Dim I As Integer '样条曲线拟合点数量
4 l2 i2 E2 J6 l4 L! K4 ?9 W我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
* g% g/ G4 {# W  S
# u, g3 h& [9 l# b. \5 ][ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!( {6 z/ |' ~6 u. ~& d1 [
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
0 D2 B! l9 u6 ~, Z! F* x* j不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???6 Y- t, Q% W! P1 h
+ r2 p4 H+ X  E# _" \4 i  J
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif  o: ^2 ?" P( w6 p+ e
CAD是不是只可以用C语言编程啊???
8 u% w/ l3 A6 G4 M9 k8 m) V1 w
( \5 V% r3 N* Y2 o不能用DELPHI吧?????
- F  k: l; B2 \2 ^
3 x1 w* T- [- T( {
" o( U  Q; y! x; i  s
干国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 )

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