QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

+ J* m9 G* c; O$ s# \- E  {% n( X9 S
6 I  d% d! G6 z, o2 _  }楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。. Q1 V' @  \& r
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
0 C) n& \( I" X- \1 D/ F6 O) ?2 L/ S  B6 G3 Z, r
Sub JKX()& I, I; w% ]0 i& I. f
    Dim O As Variant '基圆圆心坐标! x9 Z5 G: r. S" S! o1 E/ {
    Dim R As Double '基圆半径
* L, N  c6 }" A3 c
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针). Y3 g# ^  N4 h5 v( [. d$ h( Z
    Dim C As AcadCircle '基圆
# G6 ~4 M* Z/ M) U' c
    Dim I As Integer '样条曲线拟合点数量1 s7 N0 ^+ h3 _+ V3 T* A4 n. d: k( ~
    Dim J As Integer '循环变量" ^' I6 I4 V" z
    Dim TT As Double '逐点展开时的展开角度* r( ~& M' O" ~- ]. q0 |. d
    Dim P() As Double '样条曲线拟合点坐标% t) A5 S. p9 i6 p5 L! |/ d/ i
    Dim T1(2) As Double '样条曲线起点切线方向
" W. m9 E- }: J/ _- D    Dim T2(2) As Double '样条曲线端点切线方向& R2 B2 o9 L0 s& }$ s
    ' G5 c0 I( Q/ t* Y: n
    With ThisDrawing+ v0 q9 Y& _, D2 D# W
        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序
6 z0 W5 G, f  J8 U: e# G/ N        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心
& Y8 Y/ M, q1 |$ Q3 W        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径
+ b% d) l* r7 H7 i3 M        Set C = .ModelSpace.AddCircle(O, R) '画基圆
5 s: W# G$ U# p; U( M$ Z        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入4 t1 l: C5 [( I7 J" H
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
+ m& n6 q4 o, W+ x5 s: ^. q            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
8 }! b8 I) K: S. [$ T            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度5 V- Z; @) [. J. r$ i) |4 j4 X7 X
                T = 360
$ O  q; r; ^/ w# L( ]- L3 `            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序- G6 r+ {9 i& x2 L
                C.Delete0 B4 d/ M3 j- c1 R' _
                Exit Sub
' w! |. I/ `. M            End If
4 _* N% b$ k5 a6 _. ]- c! Q        Loop# O1 S3 i+ |' p( t* {) R
        T = T * 1.74532925199433E-02 '换算为弧度$ }' g7 B5 k. N' ]3 K, B5 S9 u
        Err.Clear '清空错误代码,便于用户下一步输入
, S4 u3 z  E; S/ F$ g+ I( @3 K9 J        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入
# F5 p! z) |! V9 B; ~5 D            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
) v% @% `' T, t) U
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50! p& \3 c! P9 l, d3 z0 {
                I = 509 W+ [' U5 x  o8 I
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
/ b, M& D& V; ^+ h/ @0 e                C.Delete
5 q2 b9 _: n& O5 e                Exit Sub  _& n% }3 O! Q  k1 c: U
            End If
/ m  W$ o+ h3 @, M6 L7 @% z
        Loop
  W# K4 B, a0 U' r+ d) N9 s) z        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组( ~; C; ?9 j; R* x& o1 G
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标
7 `4 ^9 g1 ]: ~  @) _' n            TT = Abs(T) * J / (I - 1) '计算该点的展开角度' o8 y3 i6 r8 C& e5 p( _
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)' f( _7 M; A  J' a5 O
            If T > 0 Then '判断逆时针展开还是顺时针展开# w- F: H2 k5 _+ U/ p" p
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标
* O  F, L  C" E- H8 [) v            Else
- {3 a4 [3 q1 F' g- C1 v& @
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标; h5 O& S4 K( u9 v* p' k7 z
            End If+ ?3 O, U! m; l
        Next1 E* K! \, Y+ p. v
        T1(0) = 1 '起点切向; g& r  d5 m. p5 W# z
        T2(0) = Cos(T) '端点切向
0 d$ b8 P2 j* A3 }" H        T2(1) = Sin(T)5 z* h- I2 \, Z" y$ O/ B4 ~
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线7 O0 H4 e1 }0 K6 T# {
    End With
5 \. ~5 u# `3 C$ U. S10: End Sub3 g1 l( U9 c7 y+ y# v4 F4 r8 v9 i, ~
( V6 \1 E$ n/ z: Q1 V0 ]; q
7 b3 t8 n9 k: b9 b# g% S1 r
加载程序方法一:7 ]" E& _: [& e8 }9 h9 [! ^3 s% ^
1、拷贝上面的源代码;
- {8 q7 c/ j& S2、打开autocad;+ v& a' N6 W$ _+ F' I1 @, G
3、Alt+F11
- E* j# `: M; ~- g+ S4、“插入”→“模块”→粘贴/ _  Z+ }2 W; y/ v, q) p/ k2 \

7 b" O. z, e2 O. K加载程序方法二:- f- o& I" ?+ A% `
1、下载附件并解压) t4 r- r4 j' {# a  J# U+ [
2、打开autocad;
+ e: |! _1 Q" w3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;% F+ D0 u  v2 H# R2 V
% {1 @3 F1 a0 b  S
使用方法一:" E* `6 u1 r0 O: o2 m) @
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。
) k' K5 L! j$ A2 B
1 ], \. @# x! s$ a使用方法二:
0 S' J6 X2 M' t; I) c+ B% Q" V, f! K& X在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
' M% {+ A% X1 ?, m! A+ l* H2 U3 ~7 q  c, ]) Q4 @! _
使用方法三:- ~. Z% o5 P. P; z+ C7 ]* G
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。
' d% {: D$ j5 \: n, @
3 k3 S; x' x  H# M  P[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.  D$ I  E3 P0 V* ?
Dim I As Integer '样条曲线拟合点数量
9 m4 G6 t5 b8 K. S我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?7 m: \$ V; X# L7 T/ C

+ b- z" s' [/ m5 n* d; ^/ |[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!  k% v% E6 {( P' B5 K6 v
大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
7 b7 i7 n$ W% G3 K2 p) o( r4 {不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???/ m  |7 Z: J2 w/ ^4 S3 \

& G! s: O$ D* \6 m% z) T# G+ d不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif' J# D) l; S! j
CAD是不是只可以用C语言编程啊???( ~0 j- |! U3 q9 ]

3 h& ?$ @4 }, K不能用DELPHI吧?????
& L8 \" f0 U2 B# z9 O
# }0 W: ^- o; K- ~& b% ]

& ?3 H4 ^  w, e& F$ S干国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 )

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