QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 31921|回复: 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还没这个功能.
; U- `& _3 g) o! i. x* y另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
) R' ~7 Q1 [  ^5 c$ j% s怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
4 Y. W$ ^% v# ?9 ^0 o
, s) d; ?* Y. q6 j. E/ {8 N
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
$ g3 X5 \5 e0 [% I考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:( `! I# _& E$ m4 @/ r+ g

) v/ Y' v. y# Y3 F# G( x; FSub JKX()
0 _' B0 H2 o# s0 i' O$ g. z    Dim O As Variant '基圆圆心坐标
- F6 F- `$ i& ]: H( d; k. f" c, n    Dim R As Double '基圆半径
3 q: `8 a( w8 [; O
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)5 W5 \8 ?+ G! P0 ^# e7 k. ?
    Dim C As AcadCircle '基圆0 P( c9 {5 e: O# Y. `4 T" B! d% x
    Dim I As Integer '样条曲线拟合点数量4 [0 H  u& a% p; e1 A: W: ]
    Dim J As Integer '循环变量
' f' o9 C* H, T5 t! c. c    Dim TT As Double '逐点展开时的展开角度- T' _3 X6 Z  ?" h/ [. ~8 g# g
    Dim P() As Double '样条曲线拟合点坐标( q- p4 p, D& [$ d/ r
    Dim T1(2) As Double '样条曲线起点切线方向
7 X/ ?; U) S9 l  O$ [    Dim T2(2) As Double '样条曲线端点切线方向
% Q' ?4 K$ e  k9 Y1 M  }   
% [, f" X- u" o/ g5 ~+ k    With ThisDrawing
- Y/ x8 M* c* J, J        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序7 }& C7 j: [  [
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
0 S* s. Z+ J1 ?0 o5 P* M( w1 Q        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
4 t% y. p# g) l1 h  A3 ?* N4 G        Set C = .ModelSpace.AddCircle(O, R) '画基圆6 [6 Q. _3 k( V# Z4 k7 |$ P
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入( x1 m+ t# u0 \+ m# `+ O
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入7 M  S; G9 m' Q5 x" c8 b
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
; V% z- R0 e* m, ?- Y# S            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度
1 }8 |" \% A/ p9 [4 p% }7 w1 H) L                T = 360
- [. V" D7 ~$ v4 o% |            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序$ }- I+ s0 H; U6 r7 t
                C.Delete
4 U- w* ^$ @# Y$ s) n+ X' B                Exit Sub
6 U3 k7 s8 U  C7 |( e( F& W            End If
: {; d+ ^! X8 n- Z7 w6 R        Loop
( }" T7 I: m( D& |
        T = T * 1.74532925199433E-02 '换算为弧度
7 x7 f1 o7 D( f2 L9 c        Err.Clear '清空错误代码,便于用户下一步输入
0 S0 z/ L1 K" ^2 a! C        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入' Z% @4 N4 {" l
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量: F$ g3 W0 U# i9 Y/ s5 Q! f
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50% q$ _1 B! A, T) E8 J3 W
                I = 50- X8 }# @0 a( E" Z
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序7 s0 o4 U0 M) n3 D& @$ u4 Y; s
                C.Delete
( S" \6 V8 ^: `( g$ T# E                Exit Sub* Q2 k1 m9 j& s/ d* e$ R+ Y. r3 D8 `
            End If
. W# F" B* `, `: z& E" e& J7 |  {
        Loop+ Q$ y; o2 F; n" v( Q
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组* c0 H# t- ]1 w4 O# ?! H
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标2 D! T! \3 O2 `; `
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
  Y  o: i. Y% b: w" u! R% X
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
! O4 \& s- P; b5 Q- p0 e            If T > 0 Then '判断逆时针展开还是顺时针展开
* O7 @9 ]4 c! a: Z8 i                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
7 ^) E$ ?; T+ {) J& `" O            Else
7 z3 e9 T! F) \5 k% F9 ~; S6 Z1 G
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
( l5 z6 ~' A3 Z- f  p0 @! _            End If
3 \0 |# L7 A2 \& p" C; ?) G: l- e        Next
. r2 G6 X# ]2 E" }0 w
        T1(0) = 1 '起点切向
+ k% ?% m% ]; y( Z: p$ g
        T2(0) = Cos(T) '端点切向& d) }, c" `$ x! c- V0 M
        T2(1) = Sin(T)7 w$ d  ~2 ~6 f* _; m
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线7 ?; r# h4 q7 a; E+ ]; {* y  v
    End With
2 y8 b) y; W' q9 A4 f3 \3 j; c/ \: h" C10: End Sub+ g1 `; y  \, R! ]: s3 H3 a8 G6 m
) p) e3 f/ c( u4 Q

5 S0 N  K; a* W  h加载程序方法一:
6 }: o. L/ u1 \" \1、拷贝上面的源代码;
+ t- q" F0 n+ V% F( M' z, w2、打开autocad;
  c& }( y; r( f+ `2 ~3、Alt+F115 {* v: P; l2 u  C- o6 v
4、“插入”→“模块”→粘贴  s  p4 @* B) _0 h& z- C) p

; E' {$ a9 c$ g! h6 Y$ c, Y加载程序方法二:
. N9 ^4 k& x% C, _1、下载附件并解压
1 r% K! m4 q& }) e2、打开autocad;2 o; G1 n8 r& S
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
# Y& u8 L0 ~  W; ~% a
7 z* o- y% a# |% g9 S# I6 z使用方法一:
% A0 P0 ^1 B$ V( J2 ~" Y0 H3 [在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。+ ?, t; F7 S3 I, k& Z
8 c* B* p+ Z# e, J; D0 Z  W9 F
使用方法二:9 Y  T7 n$ Z! }' h1 S
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
& M* W+ c2 u* Y) P& w/ n
8 X4 S$ u; |  I6 k" `& B使用方法三:
& A* _& [- X* z7 d5 G" x  x在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。& v, i- u! I8 ~5 b
( v0 O+ A! l5 s, Y; Z. M
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.9 x2 M/ p4 y& @3 n8 }
Dim I As Integer '样条曲线拟合点数量
' z8 \. o, D. n4 `, Y我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
: J- E% o$ Y. M1 Q1 c& |: ]& O% Q( g, {! B: \# j" C9 A# a
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
% P# p# L. C% b  V大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D13 Z6 L) t; \7 V; R* I
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???; O8 ], N% P% U
( c) k' ?7 j2 f, c; i
不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
0 q1 o) ~  U, K" o* C' yCAD是不是只可以用C语言编程啊???" j0 Y1 h- D2 [  s

# U& a4 l( w* q& I2 `+ @% q( r不能用DELPHI吧?????
; e) B& w% H5 N
: v/ @, w& C3 w! v) w% ~
7 Q. a$ p: J, P4 @
干国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 )

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