QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 31924|回复: 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还没这个功能.9 V6 q* Z& \" N& j; {6 I  H7 b
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表6 K8 ]7 c% Z% ?' W# s' }( W1 J2 T
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
. s8 o* w  h3 p# v1 r, l2 T

  @  j# N. Y9 I. B6 o; u, L楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
. E  e" l4 H* o, @! p考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
$ n0 i+ \7 n/ f: n9 A  U# b
4 b3 Z. `9 ]1 }( d/ Q+ hSub JKX()
  J5 v0 t  o4 o    Dim O As Variant '基圆圆心坐标1 e9 H; ~) G  o. p
    Dim R As Double '基圆半径
! d! T: @4 U6 d7 G5 a! W
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)6 u2 r, l9 s3 s" V+ W& c* u
    Dim C As AcadCircle '基圆
2 j( q& }* f- t  c1 |, T2 ?
    Dim I As Integer '样条曲线拟合点数量6 O2 }$ }/ U+ A+ U7 e0 }
    Dim J As Integer '循环变量
  q( r$ n. S2 M4 ~+ ^+ Q1 a    Dim TT As Double '逐点展开时的展开角度
6 x! c/ @% {; z/ X* m+ u/ H+ L    Dim P() As Double '样条曲线拟合点坐标
' E- t  W" `1 |5 g) {6 r; n: y* X" J    Dim T1(2) As Double '样条曲线起点切线方向7 H' |% y7 W( E2 f- W; N
    Dim T2(2) As Double '样条曲线端点切线方向& f; }/ Q  ~) S0 R8 Q6 |
   
% C6 H# `0 q. P) O  u4 v    With ThisDrawing3 Y+ k1 H- o+ s$ |: C) y( B
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
# t: X% b- _) Y/ ]$ J' ~        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心! n* v8 e* ?- w) v9 A' a0 f
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径  {1 E% `2 \7 e+ `9 w
        Set C = .ModelSpace.AddCircle(O, R) '画基圆2 \, k/ b2 T$ H, b* b
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入# C: u4 q' w( Q# q3 C8 C/ z
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入' c- C) }/ H7 F: d, ]8 {( m) O
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
; e' z! O- ~  I4 d- ]" U  k            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度" [3 t5 ?4 d  |# K
                T = 360# a2 ?1 V2 O2 f5 q4 Z
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序6 W+ x+ x$ o( g, }
                C.Delete
! K: {2 j+ U! {% u# N                Exit Sub
6 b0 e1 P/ v/ d            End If, p8 Z- D% H0 t/ u- A& G$ t, D
        Loop. M5 a0 B$ I9 a6 l' C0 H/ q
        T = T * 1.74532925199433E-02 '换算为弧度
8 ?) \1 I$ B% }3 |" i& m: ^        Err.Clear '清空错误代码,便于用户下一步输入# Z" S% U& }2 l# s* i
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
0 o. o  h) n& k            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量/ ]" \! k( x, k* R, R' X( M( |! J
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50# ?5 c; Z! j9 N4 q
                I = 500 w0 R6 D4 {' }$ [
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
. a& }  m: b7 d0 r                C.Delete1 a5 Y2 ]5 `" ~7 w9 v2 ?
                Exit Sub# u3 G/ |- V" P$ E3 A  \
            End If

. m) M7 Y8 e6 [& \# n6 q6 i7 p        Loop9 z. k4 v# _% k  l; Z, `1 J
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组# e+ N6 ^+ f: \9 R4 d$ s3 m
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
, _( a$ ]  f8 t( h8 W- T& g            TT = Abs(T) * J / (I - 1) '计算该点的展开角度; U1 J* d5 u5 \' {
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
, I" C0 D! X) W3 I3 {            If T > 0 Then '判断逆时针展开还是顺时针展开( Q  V2 u" N$ l3 u- q! p
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
$ o; r6 [% C8 k7 M6 Z2 M            Else
: _8 r" u2 J1 V! R2 W
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标, _# z' D4 d. \0 ~
            End If
5 v2 K  ?7 x# L5 J7 y9 U1 `7 M        Next
3 x8 U7 ]4 L' @7 r$ \" H
        T1(0) = 1 '起点切向5 g- J% ^* s- ?5 B
        T2(0) = Cos(T) '端点切向
: G$ {5 |' u3 c% w( |  F        T2(1) = Sin(T)
, v/ U0 v  b( l        .ModelSpace.AddSpline P, T1, T2 '画样条曲线& X5 n- J6 u; F' o- D
    End With8 |9 w0 \" B; [
10: End Sub1 ^( M+ V' S2 [5 Y  c$ ?# [/ m

. a4 f, u% |* [% G; B6 B8 s5 g/ a3 X# `8 S9 I; j
加载程序方法一:3 D# D  d" w" ?' W+ }3 p( E% W& e: U! {
1、拷贝上面的源代码;6 W4 o6 M, P0 O% z. I
2、打开autocad;
% a" I$ l- R: ?3、Alt+F11
/ k# H& e$ G+ ]; J9 v& K4、“插入”→“模块”→粘贴
8 Q/ i- q1 o, U, b5 I5 g* _2 E1 G; O
加载程序方法二:  d" t+ _* D2 x1 T/ B
1、下载附件并解压& R8 \" j. ~0 Y' s  Y$ P
2、打开autocad;" C1 |8 e  Q' o$ U1 _& t; r% I% z
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
% `6 I- G6 f! h+ S. k
* G3 B+ ^' n  Q' d$ Y9 d9 u: C使用方法一:
# {- M; x  C: P  q* _% ]在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。- b, Z, N0 f6 M9 f9 a# c9 X; Y

  p. A) n" z1 N! Z+ P( ]使用方法二:
) Y9 n; E+ N+ {5 j% A# O在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
& U7 t+ @$ f# `5 t* j8 w7 E1 ?& u6 k! q! l2 k" b6 z
使用方法三:$ x7 v0 y& x9 C9 G
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
# N# P, \9 k$ k) p4 R% D3 ~- a) R- `; f  f$ T" {9 U
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
+ T: c8 ?  W. c9 t$ y' nDim I As Integer '样条曲线拟合点数量
; @0 z; F1 [2 \2 @! f" [我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
1 _; d2 w% Y1 E. s" |" B. T" p+ p& n- E  f! X- p4 ~
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!/ t3 E; r1 m9 N& }4 ]4 b6 l
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
* E. }( \# _6 _, B不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???& {( H2 c+ j9 |& L9 W

7 {9 d2 k& P" N5 S' ^- J3 S不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif( P4 s$ j- w2 Y
CAD是不是只可以用C语言编程啊???, ^, v0 n* j) T9 {* @
; C% ?" R# I! S8 H& J
不能用DELPHI吧?????
! r1 u! a' f% i" K* d6 r

' _; q# L1 b" `1 j5 J% |: Q6 K! r, y0 p( L% l! J# ]" R
干国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 )

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