QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32244|回复: 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还没这个功能.2 k+ O. @& Q( _& o
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
! y# g4 e$ m" M8 V7 ]怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

# `5 e3 J; e2 Y3 H4 F  ^8 B$ f  ^$ X, ?0 F
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。5 M4 L. X$ y6 ^2 i/ j- Y' i
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
, ?0 y# h3 l; o% s" ~2 h5 y% l/ H
$ z# Z) ]- R7 D2 T$ @+ P8 X2 nSub JKX()
6 C1 `: |4 u! X    Dim O As Variant '基圆圆心坐标
1 \3 q+ W, ^5 f% ~) C    Dim R As Double '基圆半径9 H( d, I; G" _$ \* e
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)4 k9 ^8 G2 x+ T1 r, L1 b/ r' x( n+ K" q
    Dim C As AcadCircle '基圆
1 c! f6 Q9 p$ J. t- O. D: ?( w
    Dim I As Integer '样条曲线拟合点数量
! O7 i9 N0 `2 w: s3 [5 a. p    Dim J As Integer '循环变量
, J. I7 A/ k9 }. k+ N) O8 y    Dim TT As Double '逐点展开时的展开角度
* z9 J+ ?) N* P8 T, f+ ~. ]. W    Dim P() As Double '样条曲线拟合点坐标
6 e7 V9 }5 M8 P0 Y    Dim T1(2) As Double '样条曲线起点切线方向
5 C  b2 M* Z" Q$ O+ r% e2 a    Dim T2(2) As Double '样条曲线端点切线方向
  k8 }* j- w  e6 @* M0 ?2 L   
" D( _6 O6 H8 ]) `4 h% c0 H4 j    With ThisDrawing
7 o1 _+ ^+ z: c4 l        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
- S6 P, }) a  ^) O! K4 q1 b& M3 g        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
' D3 V; R0 o' A        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径9 t9 y" t/ v7 k/ x9 {7 v6 m' s, o
        Set C = .ModelSpace.AddCircle(O, R) '画基圆. O2 Z9 I2 c8 k) [$ d0 L* f, S$ I
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
6 P1 p8 B2 T. F0 r. w6 H
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
2 H9 y( F1 p" h7 l2 B: `# Y            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
0 y* @# u# Q. _) A2 b3 i4 @( @: b3 h            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度5 _& l6 C: D; ~# B
                T = 360' `5 L6 U! `' e7 F% x- P) ]
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
" X/ M; [% c/ G) K  E/ {                C.Delete* w  }: R( Y6 M& M5 D1 v2 y4 _) W
                Exit Sub; b, ~! |" x6 m. K. Q. p4 V
            End If
( r6 o% J" ]/ s9 P. j; f2 y        Loop
' b0 l2 d# d) S  {: s8 }  K: Z5 l
        T = T * 1.74532925199433E-02 '换算为弧度+ m8 A/ g: G! l
        Err.Clear '清空错误代码,便于用户下一步输入
, K6 G9 K& ?" r$ g7 P        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入( ]  v9 g" U" e+ N, [7 g, x
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量& l8 ~+ |4 O" [9 x' J, b- i
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50) H+ g% S2 X7 C0 D8 `; B
                I = 50+ ]  p$ C& x7 i, h# g
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序( }8 n: L  y( s- H- P3 ?  o* H0 N
                C.Delete
4 E0 ~( p% q7 u) g2 @3 }/ |$ H5 k                Exit Sub# c5 X" S2 d. M4 y' i8 c, ?
            End If

+ E7 C  z% r) _( ]        Loop
& p5 w- y6 L: K2 O7 k% h" l        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组6 V5 g9 N* l$ ~1 X$ L4 m% }
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标* [& ?/ X) H" u  l- [
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
2 }8 [+ j- }  d# {. g0 [
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)- e1 F8 [  p+ _8 d. k
            If T > 0 Then '判断逆时针展开还是顺时针展开- Y  U4 W* m  e6 N7 t$ a( \
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标, G, k! Q& h0 x9 h0 q
            Else2 {& M. O0 F9 |6 C8 L
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
! P! a8 E$ N4 v: r) \% b- J            End If6 R: q8 y, i) m# C8 F5 ~3 J" }
        Next
. Q5 v4 v9 h! Y# l) r6 _# q" e
        T1(0) = 1 '起点切向
" C  T0 J, d* ~! j6 }4 n
        T2(0) = Cos(T) '端点切向, o: H/ J! K- E. P
        T2(1) = Sin(T)" N( x& U% Z9 f- O& V
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
% X- C0 e  E- T! b3 M    End With4 L8 T/ e% @$ O: N6 p5 s
10: End Sub
. t6 b5 h( l1 P  h! V) j+ c6 C% s9 w0 C
  R1 J! ^& v! n( r. l* X* B
加载程序方法一:
/ @+ l: y! C$ _6 {* `6 M1、拷贝上面的源代码;
0 @0 T! c, k+ w2 V3 C- k2、打开autocad;
$ a5 S1 r) r# L* F3、Alt+F117 k, }: V( p8 g( u; b/ v
4、“插入”→“模块”→粘贴+ g" |& v" ^! h2 {- t

2 F' A; s" C- S, Z加载程序方法二:1 w" u1 k7 n3 Z# I% t) R
1、下载附件并解压
- i, F8 G: G$ q! |/ J2、打开autocad;9 j/ d* ~+ O) f8 x# b
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
) Y+ x, C2 L5 p1 K; g  V) b' ~( J& U
使用方法一:
, X9 Z9 w- k) R" b7 L在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
( T/ T- {$ x4 v. F, W* E( P( @" t( N7 Z8 Z
使用方法二:. s. D* {' q7 f' P! q/ V
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
- R4 O- t5 @# v( _2 o  e' ?+ m8 t' Z0 o1 y( L* B3 ~
使用方法三:* C( v% [; v( s& X% D
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。( W1 k7 z6 b) E2 a! a
$ X  E8 q0 W8 f1 K6 v- g# {9 m1 E' n! g
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.+ U  L1 Y6 W1 s$ X6 t
Dim I As Integer '样条曲线拟合点数量
6 T: |6 ~; Z1 q/ u我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
: C5 K0 E# e/ Z: M% q0 ?( S7 {) K# X% y* X, E
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!* c( S- ^+ I% r; o" l+ ~7 e
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
# O' R5 {+ I4 U9 o3 L) ?不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???( g. i( b# `" v6 B  L; ?% t( W

+ O5 H7 h- ]: j, g" T不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif4 V9 r2 @, x, n# Y, g! w* [& Z
CAD是不是只可以用C语言编程啊???: ~# r0 e- _7 o- e* L' r; V4 W' ^

: R1 G5 u4 y) u' b: i! C% {+ G7 ?% D不能用DELPHI吧?????
) {2 h- V! H$ ~/ ~. T

# n, l/ ?  _! s6 w& {+ d: i3 ~2 C7 `5 @7 s: ^% 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 )

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