QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 31035|回复: 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还没这个功能./ l% G! F6 @2 W. ^- O& r
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
& W6 l( I& U! f  R- o怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
$ O) L: A5 O% t

+ z  X& B) x2 o( d5 D( P3 k/ X楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
- C* e) n; R) t% w考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
" y: v6 L1 ^* b+ |( A. H5 A) X# i" U: N6 A/ e; e/ z6 T
Sub JKX()
: U* i* S3 o! K* |1 H    Dim O As Variant '基圆圆心坐标" E7 o; i- c& Y
    Dim R As Double '基圆半径
9 m& n% B5 W0 M7 t% W
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)
' _* B0 S  C+ ?9 C; H    Dim C As AcadCircle '基圆: q  l1 Z9 ~2 }, X$ m1 ^/ Q
    Dim I As Integer '样条曲线拟合点数量; ]. a+ q) G6 e
    Dim J As Integer '循环变量. u1 M" A  l8 R( P; ]! k0 j( U
    Dim TT As Double '逐点展开时的展开角度
! B- n: `; {' ]& b: t. \! g  S    Dim P() As Double '样条曲线拟合点坐标
8 }- a7 A2 I8 B% }  p    Dim T1(2) As Double '样条曲线起点切线方向9 \2 W7 I' |: S1 V( C
    Dim T2(2) As Double '样条曲线端点切线方向
3 A  c$ e/ J% S5 N* f; t   
: t3 N/ H! u4 Y6 O, P% o3 q    With ThisDrawing
0 K8 N  D. y) B4 i        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序) F: m+ X7 l$ ~" u2 V
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心7 \; ]( A" U/ L  J- U5 p0 |
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径7 s3 Y  L7 w' C
        Set C = .ModelSpace.AddCircle(O, R) '画基圆  h* @+ j- Q$ f  I
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入, T3 B! ]4 {; I5 W$ T' n' m
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入4 J" a! ^6 m' w) B+ t1 v
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
1 l2 G5 a2 S# H) |) D            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度( d0 U; {, D- C" E1 y$ r
                T = 360/ v7 W# s% M% y* `# A0 r) @$ s
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
4 l) O2 i9 ?2 _                C.Delete
% m% x6 [7 v/ _4 @5 d- ?" }                Exit Sub
) _9 t) y, Q! C& c$ i7 O* M            End If+ C* x0 M8 w+ k& d- n
        Loop1 Y* _6 E4 Q- ~/ w1 {0 G! N$ K
        T = T * 1.74532925199433E-02 '换算为弧度
/ g9 d2 ]" h4 ^& n        Err.Clear '清空错误代码,便于用户下一步输入
6 m5 y! T5 V1 v8 I8 S8 [$ h        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
7 E; }  C4 [, \& b& z  Y            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
; S: R: W1 L1 t  [& G
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为501 E; y: W$ x$ @/ y
                I = 50' j; ]/ r0 }2 k$ o& {3 d, B
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序4 J5 T7 j! D# l( i, J; Z1 C% S
                C.Delete
6 `6 }( D2 J6 [6 K                Exit Sub% h: A, Q( G. j% ~% x' e
            End If

" r. B2 {/ Q9 M( `' a' O) H) K        Loop$ u3 `) j/ M% z* s: s) w  T/ }
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组  h% u  g$ h. n
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
+ q0 f. p6 _% r! n7 a+ V7 t6 F            TT = Abs(T) * J / (I - 1) '计算该点的展开角度% V, U2 G% g7 g. V: b4 |+ ?
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
. J5 [# N: [# G9 J            If T > 0 Then '判断逆时针展开还是顺时针展开  d" u) U! h/ k8 c" F3 T+ G: x5 ]
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
6 q: W4 s' a) \: f7 k            Else
. y8 W6 M! }0 [
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
; Z6 k% I% @/ t8 e            End If
4 G! W* v- U$ c* |; W) N        Next
6 z5 Q, Y% ]/ Z# m
        T1(0) = 1 '起点切向! S4 V  I9 [0 y5 @7 _, O& \% w
        T2(0) = Cos(T) '端点切向& Z) X# O6 k- q9 A. I' i
        T2(1) = Sin(T)
; c* n0 Z0 Z3 \' [        .ModelSpace.AddSpline P, T1, T2 '画样条曲线2 x) }+ ?8 v9 Q6 O, t5 K8 j
    End With! [# |; E, g) z9 D  O
10: End Sub9 g$ R) }" w: }& E  I" s

. E; q% P) p  i5 A
7 u3 t2 Q$ g% Q. r2 e+ ^3 R6 O! H加载程序方法一:
" B5 M1 r$ U7 g& W4 v4 K) G1、拷贝上面的源代码;
" }) A, b8 ]7 Q1 ?8 o2、打开autocad;1 L. G# ]( W9 v2 E
3、Alt+F11
( L6 u' _# c+ N2 R- h1 Z4、“插入”→“模块”→粘贴
# j* |$ @, G; w1 G2 G1 a4 h+ S9 s; G2 o# h' X) Z
加载程序方法二:
8 p8 n' A3 b' x) H% D8 O: b0 Z# T1、下载附件并解压5 M3 u* R7 C5 _& _, t0 z2 {
2、打开autocad;
8 o$ z/ p% F! U& D$ W0 g! o0 A3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;8 }7 H; u% G2 H+ o

+ [8 E0 @( V1 N" m  i1 z. U- l; C6 A使用方法一:! E7 j1 {2 X1 R
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。6 s4 B- Q4 Q7 o6 j9 F

$ G; x4 v% H% N使用方法二:; t; o& j( L/ S7 n- p1 @
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。7 N0 A3 r  T! s! F& J# L

' V6 I* ]& X0 j9 o1 P使用方法三:
: J* q9 l9 e) P( R# `, O8 s/ a0 \在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
# r1 H7 `: \4 W* y$ `1 J  t( w9 Y/ n  x6 w' ~; u2 @) I* U9 @
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
$ l. X6 E2 m0 h, ~' {; r! N" {& JDim I As Integer '样条曲线拟合点数量
4 M4 M3 ]6 B  g5 v我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
( ~$ k4 f& s. K" b: D/ s7 w
$ l, o( I. v' k3 S: E# x( ?8 s! Q[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!4 M; w7 A) J$ Q0 Y# L7 h
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1- r, v: Q9 s& r) |
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???8 {6 ]" B+ P# k8 v( O  t3 t

7 g9 X2 y5 P( g5 \: t不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif+ ~1 r0 J0 F; y4 ]# Q' I% B; i
CAD是不是只可以用C语言编程啊???
$ X7 [- n- G# l9 c8 q4 C8 k# X" I- V+ c2 }+ d; O; K
不能用DELPHI吧?????

" n0 J( {& j" N0 E3 g' y& z& f8 S# F5 _+ l  M2 }4 j) f0 F1 u

* G; `$ c+ I3 q, `. f干国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 )

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