QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 31887|回复: 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还没这个功能.  A2 A( h" n3 ]. O1 O
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
( R, {- ]8 p8 p6 E# ]怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

5 G2 @# a; X) m8 d( ?
3 {% z7 R1 U, I% j楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
% Y. e4 C0 a0 Q1 q+ q考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
' Z& G" X' `  n  B; B  A) a4 b; h+ U
. e- E0 O& H$ r  [* xSub JKX()
1 L2 P# g3 z& g: m" l    Dim O As Variant '基圆圆心坐标9 N  z4 s. o, k/ ^/ D& y
    Dim R As Double '基圆半径- s1 C% ]$ P1 a7 k5 R& X. R& o
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)+ w4 e0 A  V" l  o
    Dim C As AcadCircle '基圆! J9 n( l7 k( @( l' w
    Dim I As Integer '样条曲线拟合点数量  g  ~+ _% v8 A" m9 [
    Dim J As Integer '循环变量, z/ a. {( P5 O8 D4 O9 q7 ~4 I
    Dim TT As Double '逐点展开时的展开角度
, b2 h, C# u/ D+ M6 a: K! f) H    Dim P() As Double '样条曲线拟合点坐标
+ t6 b/ p0 }$ ^- d1 n. T1 ?" ^) z    Dim T1(2) As Double '样条曲线起点切线方向6 X# @! L$ f& Z' W# ?! h1 P/ P
    Dim T2(2) As Double '样条曲线端点切线方向' q1 c; y6 ?) C1 l9 Q
   
- T) S/ u5 }3 Z+ R0 J8 D    With ThisDrawing
# A6 M) L6 X3 y1 N        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序1 |8 c1 ~) E- w4 J
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心: D3 R" I# @# `, K
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径: k( G# \$ H# p8 H# r& |' w
        Set C = .ModelSpace.AddCircle(O, R) '画基圆+ c- ^( i7 \7 I
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入  U0 S, G1 f/ n( j! o
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入. w1 \. I; c: ]1 A8 n0 [: s
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
3 O& `+ W8 V: l* ]            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度8 d* T1 F" a! U8 b3 K9 ?+ ?; a1 L
                T = 360
4 ]0 s! |3 E1 f            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序& |  o5 P2 b: y2 [' |
                C.Delete/ V/ K6 q0 n. O3 x- y
                Exit Sub+ w" i" `3 z1 C6 D
            End If- f# q) ^1 Y- A' j
        Loop; d* U# B4 \8 k5 {* j9 R+ J1 n
        T = T * 1.74532925199433E-02 '换算为弧度, k4 t0 [# W$ M8 }, d
        Err.Clear '清空错误代码,便于用户下一步输入
$ Y9 m4 u4 T' T. W; `        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
1 F2 r+ b: b3 X0 `            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
, S) d2 [* R' g. I
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50! d. t! m/ g2 t- U( Q, e6 V  C
                I = 50- `" l+ `: m7 `( G$ Q9 j' C% z# j
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
0 R8 J7 O4 e9 Q                C.Delete
+ L' r  L" b9 i$ v1 H  x) b                Exit Sub
; `6 a( I3 W/ N6 f3 f; U7 K" R            End If

, |2 p! S2 N( Z6 \8 z        Loop# c( ]5 b9 W- ^* x- K2 `6 w% G
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组; Q4 T' W/ f) z9 r' `1 p; q3 g" Y& c
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
0 u6 P; p$ z4 s            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
9 l( x% ?  r4 s9 z+ ^
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)- ]7 m0 a! m+ n9 q8 B7 n9 I! _3 t
            If T > 0 Then '判断逆时针展开还是顺时针展开
7 x- i9 b* ~0 G) k/ D' M: F4 k1 m* h6 c                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标/ j8 \- Y. |- x; k* g" @  X4 i0 h
            Else/ O! J" S* K% A  c7 [" O
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
/ g6 \* K6 G: |9 W* d+ }            End If# z$ h4 c/ m  {5 d: e: d) L4 V
        Next* O0 {' p, }& `/ [* T/ {  s4 B$ S
        T1(0) = 1 '起点切向3 r# I! t3 z' m* t) Y
        T2(0) = Cos(T) '端点切向
) X; b3 |$ ^; D        T2(1) = Sin(T)  u" l* X3 @5 h  t
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线: W# t& l$ l" e4 ?6 _
    End With
6 T* l2 Y+ o8 @) Q* a) i10: End Sub0 {$ o6 y3 r  ]+ t7 A

1 K" ^. ~- W  Z# L* F/ R" U1 s- \4 r
加载程序方法一:
5 b$ Y$ V0 r& V5 T3 J' K1、拷贝上面的源代码;
/ T0 w1 ?: u% }4 N: ^2、打开autocad;5 y8 ~6 {, _9 t# K. M& j
3、Alt+F11+ y& g, J% W1 l* q7 b- r- v' A
4、“插入”→“模块”→粘贴
2 G$ U* `' s. i6 F2 Q" ~5 Q( g6 v+ K
加载程序方法二:
0 {; {3 M3 S. [  v1、下载附件并解压: v1 X$ s2 p. F  w
2、打开autocad;
  j$ K1 P. {5 P; f3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;3 j# T/ e5 g7 U1 S8 _
9 g4 }- {! x' `3 R1 k* X: ~( I
使用方法一:' {6 b. ^$ _. i$ q( d1 H2 h* \
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。- h5 F: O% I' t) {

" k& h/ d6 A9 w使用方法二:
+ Q8 c9 d6 |- V9 s& q/ f在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
+ @7 Q; F+ _4 g9 ?
+ h2 d+ y% F* a8 [# p使用方法三:/ J, U  T* T7 n' s( l
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。# T. k% d/ \  A- \4 \8 _

# @" t' t# L# I1 V[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
1 M4 n$ y( W3 P5 Y  Q0 h3 XDim I As Integer '样条曲线拟合点数量$ |. e' \0 |7 b+ U
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
& l% Z& T; z, }# _5 x3 Z) |1 G
% X& e2 D- \  E# M% R! I8 N[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!/ E! l; U& @% u5 r, C( [5 A
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1; g, D2 z- ?6 O7 B$ G5 ~$ w
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
% d6 W9 J7 t' C5 l1 D+ I2 n' z$ a
. e5 T! p. T9 C' r不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif2 x! k/ w  l5 f3 S
CAD是不是只可以用C语言编程啊???/ B( z1 I8 e. F3 b0 V
8 ]. [. p3 l4 O6 b3 A: N, W
不能用DELPHI吧?????

4 M7 Y, l6 F0 A. `: U5 u  d1 U( M$ ^( H/ P

  t5 v+ |# S- _+ ~0 E7 H干国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 )

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