QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 32260|回复: 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还没这个功能.  m% _4 z6 k. e3 ]( a
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表- d8 i) x1 `8 Z6 ~3 Q, D0 ]% k
怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.
5 l9 \2 k$ ~' e# `1 E
' [' M7 d5 Z" G/ q9 \2 x6 c
楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。: a, P) f! L8 ?  N
考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:
' }7 {- p1 F3 i6 M4 B& j" v' l6 p0 ?+ y$ R& `% x) s
Sub JKX()5 O: \3 y+ T: M+ }9 ?* a/ `' \
    Dim O As Variant '基圆圆心坐标2 h, K) _6 j) j$ I; N
    Dim R As Double '基圆半径& b  {: W2 A% v7 g3 q
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)/ l+ Q" s. `9 P* p
    Dim C As AcadCircle '基圆& S9 w% d# T# v2 d
    Dim I As Integer '样条曲线拟合点数量9 h) r  i8 {" x/ l& i7 B7 |7 @
    Dim J As Integer '循环变量) n; t. z$ I* y  V& i2 T
    Dim TT As Double '逐点展开时的展开角度
/ G- e! _& [- {    Dim P() As Double '样条曲线拟合点坐标
: h8 U, A! Q1 \# Z/ m- a    Dim T1(2) As Double '样条曲线起点切线方向
' _4 i# _( \) C* {9 g    Dim T2(2) As Double '样条曲线端点切线方向% \& A/ v: M: ~( t
   
. e/ m7 f" ]' H; W. X) u( R    With ThisDrawing
" A) u3 W- ^7 Y0 m/ a) u        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序0 t( e$ O; [! v' t/ ?& o( O
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心; q; I: R4 E0 ?. ]1 z' `9 s1 S
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径% {! l! V4 ~1 b( q" k
        Set C = .ModelSpace.AddCircle(O, R) '画基圆( ?: x4 A! b0 y; S
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
( _& t  |  z, x* Y. d
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入$ K' {1 p0 Q% m  w2 T
            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度9 z& F* W$ G& a- B1 ?
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度: B# [9 `' r( N9 Z( C7 q$ C" a
                T = 360
8 f4 W8 x1 ]5 v            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序7 ^0 }' v+ N% b0 z
                C.Delete
0 |( N* i- q; u/ g- P                Exit Sub
( j3 c+ u# p$ |9 Q            End If
5 D, O, Q2 k9 L, Y" e        Loop4 \$ h1 @: _) N; T8 ?
        T = T * 1.74532925199433E-02 '换算为弧度
0 u/ `. S; s6 @- L        Err.Clear '清空错误代码,便于用户下一步输入
* o# N: ]3 {0 r+ Z9 c        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入* ]- c2 A! J" c* ]$ o& f, f# Z; ]/ |; l  x
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量, _* y4 ]. U% d! I1 p) C2 p. k
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50) T2 J' }" i+ ?
                I = 50
4 h8 k" B0 N; ?& q, |            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
: d2 m' t/ S; x9 @8 G+ a4 o                C.Delete
! q. V2 p( J# _' v0 }                Exit Sub
- ?1 P6 r' S& d) |% a+ T8 C            End If
+ |- t' U3 x9 g* }$ H
        Loop
' r# N0 h6 o, q9 z) Y8 P) e5 }4 V        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组$ e: `4 u0 W/ j3 a7 [
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标* T2 [  L# J/ }5 Y
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度; n6 b- p7 |) M; D8 s, [
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
; C; Z  R( M9 O' u/ m( M# y            If T > 0 Then '判断逆时针展开还是顺时针展开' d  M2 D7 L4 d# e: ?0 e/ c8 n; P
                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标& d- |2 m+ Y1 X& U* }  I0 n* c( O6 H
            Else/ L, k! b! b$ J3 r8 ^. ^
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标) t  O+ h' N! J9 `9 _: f. [
            End If, c( Q! d& _& |- r
        Next
+ ^) v& l+ _+ e9 ]
        T1(0) = 1 '起点切向, q* ?$ ~7 s3 g  ~2 t- N" |4 d% I
        T2(0) = Cos(T) '端点切向' \' p& D+ y. L  G  Q
        T2(1) = Sin(T)* g* ^( {2 s/ P$ i6 j% _; K4 ?
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
8 ^" m; i- p0 `; s    End With
/ p( E" O  [( g- {+ g. C10: End Sub
% E! V# e/ N; P3 H7 U; b* I8 |" V( F/ X

4 J( ?6 }. N- Q- H- {加载程序方法一:4 F% H9 {1 V6 H; o
1、拷贝上面的源代码;6 M5 r0 N- |' A! P
2、打开autocad;' u+ {! P6 w0 G1 R0 K) q. `" s) v
3、Alt+F11/ h2 j' u4 N" P2 }, X- x4 ?
4、“插入”→“模块”→粘贴
. h) Q$ j/ p# @
, z: A( D  r" u) @加载程序方法二:
7 @  k+ G2 b4 s2 _/ r" |1、下载附件并解压
' j$ {% Z6 f6 K4 D2、打开autocad;6 E% @8 B* `7 P7 H' i# u* g3 L2 Y: B
3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;. e+ ^1 W# k# a# I1 u% U7 t

8 ?* |, M" C3 A9 ?& \使用方法一:' s/ e3 X9 v3 z) V& A1 Z# F
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。% D7 O+ Q% h% r* j2 T7 M
7 Z+ V& o6 L) c3 Z3 j' l" G
使用方法二:0 U8 A+ h2 A4 u0 j* q6 C& n/ l* d7 {* |
在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
6 s/ c% j* {5 w: G: ?* h; I# D+ l
使用方法三:8 s& W( y0 R/ t) B) O+ G2 p' @
在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。$ q( J  Q" n' _; B
7 r- W# B7 M2 J7 x
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.' ^( z7 {; H, o. Q# F/ M, T0 o
Dim I As Integer '样条曲线拟合点数量
4 }4 g# Q: [) S& s我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?+ j; h  P% V( a" l* q$ o
% o8 E# l, u: n7 d, ^# r/ I/ p; c
[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
! Z( b3 p. \9 k5 Q4 h  P& Z  d0 d2 i大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1
5 x. D+ x" S7 G) m" j不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???
/ }: @! M, V0 ]1 y8 \
  e: c% a! O7 P0 z; i5 ]  ]  ]不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif( g2 U- s2 r$ @8 b: U
CAD是不是只可以用C语言编程啊???
' [/ ?7 i8 K6 R
3 J$ C: Y) m/ J不能用DELPHI吧?????

8 x2 a! g5 Z7 t. q! f$ C
! K# U# O) k- m/ u  {6 M7 ?( {) i: P: u+ i' M5 e2 k- B
干国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 )

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