QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

+ O; U5 l3 t6 r$ j
0 j% J# B- }- N) w楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
2 ^9 s4 _5 s. R/ H' P" x) p. g考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:  f- ?! B) v9 ^4 X$ v* P( M

9 ~% v& D" |9 ^, v0 c0 `Sub JKX()& W6 a9 L3 k: b7 E
    Dim O As Variant '基圆圆心坐标
4 C1 B" J8 h) ?6 D, r2 f4 _  }    Dim R As Double '基圆半径( }: Q, Q# Z; l& Q, i
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)2 E9 p  p$ c6 A
    Dim C As AcadCircle '基圆2 x2 X7 V6 ^# x4 q/ J" y$ h
    Dim I As Integer '样条曲线拟合点数量
2 u- f8 ?+ b5 N$ P8 ]/ ]! A5 v: a    Dim J As Integer '循环变量$ o5 o1 r( X. J0 V. O
    Dim TT As Double '逐点展开时的展开角度
6 U7 r) J0 Z; S' P    Dim P() As Double '样条曲线拟合点坐标3 ~# b3 \: J# A) D6 V
    Dim T1(2) As Double '样条曲线起点切线方向2 s' |0 z  j: {
    Dim T2(2) As Double '样条曲线端点切线方向4 |3 g& v4 b/ I" z
    " X! Z6 X+ G+ b+ V* `8 b
    With ThisDrawing% w0 U! z. Q" v
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
- P- S9 D9 Z: N  r5 j, b% l' m$ C        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心$ T+ w6 _; W# G9 H6 f* v$ v( E
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径( N/ V$ M6 t- ]- a/ `' E& j( H6 S
        Set C = .ModelSpace.AddCircle(O, R) '画基圆
' {5 g  D5 P4 j        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
8 U/ F! V8 X7 A0 t' h
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入% T9 J, w- O6 Q+ c1 ~2 I
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度% p& J) O. W( y) B- n' o$ D
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度2 i; T$ T) {  I0 u# M' G  r& R1 n
                T = 360
6 l: Y9 g6 ^/ n  b" K            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
6 g* r8 Q+ T+ u                C.Delete
* m$ Q% E- o& \  C                Exit Sub
& H0 ?  E& z0 z8 i; s  h            End If7 m& e1 G4 M0 q; }# X
        Loop
& a) h, w% q8 {1 t! l5 O9 z
        T = T * 1.74532925199433E-02 '换算为弧度* t7 t; m2 |/ Z& A
        Err.Clear '清空错误代码,便于用户下一步输入5 \8 K$ B0 S- x( Z1 y
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
% M4 }- v, ~' _: i, D            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
; j% M$ ]; ~+ Y$ E3 j; J
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50+ v5 z7 Q2 s* {) R5 ]
                I = 50# ^: O5 s5 ], u2 `4 x% v, K4 t
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序+ s2 Q9 l- j( {, k4 b
                C.Delete: r) b9 [& E1 t$ H
                Exit Sub) q" z2 C# |/ G6 I5 t5 K3 p% l
            End If

3 ?" @# N5 x( d1 Y2 }' I        Loop
/ s: o0 x6 N( h' N1 X/ R        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组' K2 j  a. \4 Q1 _/ l; {& z9 X
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
, `8 B! ?& b& l9 ]' R% [8 T            TT = Abs(T) * J / (I - 1) '计算该点的展开角度( y4 w# b  x& `+ H6 w8 L9 s
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
# n" o# k1 e; Z8 R4 d2 m8 |5 `7 z            If T > 0 Then '判断逆时针展开还是顺时针展开
8 T1 Y) W4 I3 L7 F: u, p                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标) u1 `& u" F' H/ h1 W4 w
            Else
1 i7 d1 c5 \( B3 X; M" {
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
  f6 p1 k- W: K+ l, Z            End If. V, Q3 f; ?5 W- ]
        Next
8 p1 |; K; G. A6 f7 g$ ~
        T1(0) = 1 '起点切向9 y7 x+ p4 Y' {! I
        T2(0) = Cos(T) '端点切向2 G1 y* v* w1 v! W4 d
        T2(1) = Sin(T)2 h+ T3 O8 y2 i  S
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
6 i6 E% ^/ |- K- d    End With
7 b7 c- A4 s, b1 j10: End Sub; F4 x) X/ b; {3 T
& }4 y9 ?) Y/ p. X/ Q  U

+ l+ R& s/ j( P! ^0 H8 Q% f* A# A, i* i加载程序方法一:3 X4 T3 t& B, R8 m
1、拷贝上面的源代码;- k" o6 m' w1 w$ T6 n' A2 v5 n
2、打开autocad;  u3 k- l& J5 e
3、Alt+F11
1 f9 t- t1 J( `1 D! [( F$ _4、“插入”→“模块”→粘贴
# g$ Y; Z  _9 S. r. k
: \7 U( `$ n  i- j7 M) }; ~加载程序方法二:
, O3 u- X0 t/ P9 i0 m) r" o1、下载附件并解压+ s  e( ?9 A. x. n! r9 n4 S% j
2、打开autocad;
2 A- Z- e  g3 n6 O3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;+ d+ I, a0 k8 J0 W% f. L

; w/ F* {: u/ [# |- |: J; T1 a2 j' z使用方法一:
- ]4 O  j& z2 C" c3 Y在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。# `/ T4 `3 |0 |) ?6 p/ x5 k
' J* ?0 n8 \# \
使用方法二:
5 }) G0 U8 P* h4 B在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。/ j7 q! O3 \3 O! e
9 @2 k# [5 I$ u3 Y
使用方法三:! r, L3 N* g1 a3 Z5 p
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。) X" ]& D0 m  c* f* H( z, m

6 h7 f1 A7 W5 `: S! x[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.' y& W- W$ h+ h  p
Dim I As Integer '样条曲线拟合点数量# V. m: j, D( o
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
9 g0 Q. X6 O: Z; z6 B
+ z6 F: e% }' s) o. p[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!, l" _; G  [7 U0 {0 S
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1+ u  X5 m2 l5 x3 Y. X0 X- Q, u
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
+ Q  s6 k3 J+ Z1 E1 w& A( a, ~+ @$ ?3 ~! u  V+ |
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
$ ^7 g/ w7 [& Z' U9 z6 k2 J: w! f5 h4 }CAD是不是只可以用C语言编程啊???" }! F3 L) y+ `( C  j) l0 F
1 M/ D1 `! N7 X2 h$ q
不能用DELPHI吧?????
+ Q& @! u* B2 x1 i2 h9 `

/ x# S+ _; m( R6 M3 N: j7 \7 x+ x( x. N/ k# {
干国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 )

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