QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 31867|回复: 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还没这个功能.8 v. B) S% s/ Y: A# x( S. T+ ~
另外可以从三维网上找一下渐开线弹簧的LISP程序,也许可以一试!
 楼主| 发表于 2007-3-30 14:20:48 | 显示全部楼层 来自: 中国北京
CAD能画参数曲线吗?如果能画怎么没见在论坛里有人提起呢
发表于 2007-3-31 11:57:59 | 显示全部楼层 来自: 中国辽宁营口
原帖由 qinjiaqing 于 2007-3-30 10:14 发表
9 o6 S: _, z8 t( b怎么没人应战呢?不象三维网的作风啊?骨头越硬越要啃啊.

: ?; |8 @/ d* S
" P2 ^; U- |( M% {8 S% B楼主这种话是很无礼的!!!这个坛子里高手如云,只是人家都不屑于理你罢了。
# E' Q: t9 J/ r% W' _" [- j  P考虑到其它网友可能有关于渐开线画法的要求,把我的常用方法发上来,供大家参考:; v1 K% Q5 L/ O# a- W0 H

" e/ p7 X( Z4 l  a8 t9 ESub JKX()
% y6 N* z# i2 I' X8 g    Dim O As Variant '基圆圆心坐标
' g, z# q5 Q* D/ z    Dim R As Double '基圆半径4 n: G$ \# T& n+ G2 M, z6 s
    Dim T As Double '展开角度(正角度为逆时针,负角度为顺时针)- {: y+ [3 [  G6 e1 n
    Dim C As AcadCircle '基圆
( k3 J! D( ~$ S4 _0 G' D
    Dim I As Integer '样条曲线拟合点数量! w4 P6 |, y$ ~; g3 F& P# D: @
    Dim J As Integer '循环变量! q& K. q3 A9 Z- [$ n' F
    Dim TT As Double '逐点展开时的展开角度
/ b1 ]4 \% @( M. w$ `0 m4 P8 d/ F! t    Dim P() As Double '样条曲线拟合点坐标
+ S3 x% j  a. x1 @    Dim T1(2) As Double '样条曲线起点切线方向
* V$ h; U+ m4 s) A1 d* s  b( _8 W    Dim T2(2) As Double '样条曲线端点切线方向
; m- `' w# S+ h. V1 ^/ A1 i   
; M0 u+ V* J6 O    With ThisDrawing
9 n/ [0 R3 B( H$ p        On Error GoTo 10 '用户输入基圆圆心和半径出错时退出程序, f$ D5 b  V) _: K: `
        O = .Utility.GetPoint(, vbCrLf & "指定基圆的圆心:") '用户输入基圆圆心3 T' h! Y" L  d
        R = .Utility.GetDistance(O, vbCrLf & "指定基圆的半径:") '用户输入基圆半径  @( e' M1 u7 b8 U$ t. }5 [0 E* w
        Set C = .ModelSpace.AddCircle(O, R) '画基圆' z2 l4 N, o6 S; h3 X+ q9 ?' O
        On Error Resume Next '用户输入展开角度和拟合点数量出错时检查出错方式,判断是否为默认输入
6 @7 ~& q! r1 {. r
        Do While T = 0 '用户输入展开角度为0时要求用户重新输入
9 K. ]# W8 U/ {            T = .Utility.GetReal(vbCrLf & "指定展开角度<360>:") '用户输入展开角度
5 r+ a' B9 T7 \            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,展开角度默认为360度& ^- m; g( \# n8 M; P, s
                T = 360# Z, P% Q9 X; ~& _* S
            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序
: c; C# C$ w8 m$ y                C.Delete# y4 u+ [- ?' a1 D" b4 `
                Exit Sub. ?$ _1 L* U* c0 k7 s' z! l5 v
            End If
) h8 {+ a3 {9 T3 @" J. v6 i        Loop
4 a, y( c& E4 [: F
        T = T * 1.74532925199433E-02 '换算为弧度; F8 g. e. U0 y/ e- N' k2 g
        Err.Clear '清空错误代码,便于用户下一步输入) G; g3 @) c, m) |
        Do While I < 3 '用户输入拟合点数量小于3时要求用户重新输入- k, s; i" t8 d  B3 Q$ `: J
            I = .Utility.GetInteger(vbCrLf & "指定样条曲线拟合点数量<50>:") '用户输入拟合点数量
" z. I% ?! [3 n) F% ^  U. l
            If Err.Number = -2145320928 Then '命令行为空时用户按回车或空格键,拟合点数量默认为50
; `9 `9 v  C" `$ f  p+ Z
                I = 50
2 j7 l1 g% ~5 y1 c7 I5 ~            ElseIf Err.Number <> 0 Then '用户按ESC键等其它错误,删除已画成的圆C,退出程序, t& [' @/ P7 u
                C.Delete
9 q; W4 c  r; Q! ]                Exit Sub# t# f) E0 `8 g. E1 |
            End If

& b  `+ {/ D+ Q7 S% W        Loop$ {% L  u" V: a% k! C/ m7 Q% v+ p
        ReDim P(I * 3 - 1) '按拟合点数量重定义拟合点坐标数组6 _9 ?, e  W$ X6 A3 [
       For J = 0 To I - 1 '按渐开线公式逐点计算拟合点坐标; |3 y9 u9 {+ o4 K* J- w, Y; h
            TT = Abs(T) * J / (I - 1) '计算该点的展开角度
% J9 b; Q" N# ^' A) K
            P(J * 3) = R * (Cos(TT) + TT * Sin(TT)) + O(0) '计算该点横坐标(相对于基圆圆心)
3 O9 i( X# e3 Q) o            If T > 0 Then '判断逆时针展开还是顺时针展开
  E7 Z8 ]/ x! i% H! P                P(J * 3 + 1) = R * (Sin(TT) - TT * Cos(TT)) + O(1) '逆时针展开时的该点纵坐标4 n* M% f& V7 d1 q# t
            Else
+ x% D  ^. y, j- j
                P(J * 3 + 1) = -R * (Sin(TT) - TT * Cos(TT)) + O(1) '顺时针展开时的该点纵坐标
3 f" Q! A7 F" o, @5 o! I            End If
1 m3 C/ g( i0 G0 {5 F0 R        Next
  s. L% t2 m0 F: f2 G1 U' s1 b
        T1(0) = 1 '起点切向
& I; u/ H( h; S; R$ p; d3 P- y2 B
        T2(0) = Cos(T) '端点切向  [0 z0 d# b" |
        T2(1) = Sin(T): m/ `2 T$ u; p/ ^1 r6 ^7 l4 i+ c
        .ModelSpace.AddSpline P, T1, T2 '画样条曲线
% T3 C6 q+ V" V  H    End With
2 w  C! T7 a2 _5 h1 X# o10: End Sub& {$ z2 F4 S# w! i

: O! O+ V6 d; W' Z6 o3 m1 s' X1 E
! a1 U. ?9 D- O( |! e$ {加载程序方法一:' J6 ?; w4 ]+ g2 j6 n7 r' H! l8 t
1、拷贝上面的源代码;( \4 |/ M9 d1 t" \
2、打开autocad;
" d; ]; W9 f5 d* z3、Alt+F11- K$ P5 J2 C( o9 N( `4 Y$ x% d2 P
4、“插入”→“模块”→粘贴& \$ \* E0 [! c& f- V' A/ O
% e: H# d7 O" g" e- E
加载程序方法二:
6 R. ]+ u* Q" n7 l/ D1、下载附件并解压
* O' \% K  q1 r* a% j# p6 [2、打开autocad;
6 t% ~/ o1 b- D. z9 f3、在命令行键入“appload”(或“工具”→“加载应用程序(L)..."),加载解压后的文件,关闭加载窗口;
9 U0 N# K+ X; a# V( j$ U: K- }* f4 z% L* y4 O' J
使用方法一:4 Z9 m! h3 L4 l# }/ q
在VBA编辑器界面,按F5,回到CAD界面按命令行提示操作。图形在模型空间生成。/ s! r" F( q; J1 Z$ \4 C, k

2 u0 ~3 ~" q: ^2 _3 |" t使用方法二:
. t8 y- Q) a$ R, @2 ?在CAD模型空间,命令行键入“-vbarun",回车,"jkx",回车,按命令行提示操作。
7 P. L. w2 l5 M" ]9 E+ [+ q% @8 W" ]6 Y3 j  L" e0 \' Q) n
使用方法三:
5 l0 C& C0 g( H在CAD模型空间,Alt+F8,选择名为“JKX”的宏,“运行”,按命令行提示操作。, d* s) c8 Y' i$ A8 q
$ ^" _3 e* e  |% H
[ 本帖最后由 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 | 显示全部楼层 来自: 中国北京
首先对大家道歉,但是我真的没有其他意思,我只是看我发了这个帖子后一直没人给的答案,所以才说了上面的话,但是无论从字面还是从我本人来说都没有任何贬义,可能有歧异呵呵.对不起大家嘿嘿.
/ {" A$ A1 l2 y+ k& V4 RDim I As Integer '样条曲线拟合点数量; J* q2 J6 N8 X8 \: r3 @
我想问下如果是拟合出来的那又如何能达到所要求的精度呢?拟合点的数量取多少合适呢?
4 k* A5 A' W8 [0 H! {  L# S
# F1 c) r8 X5 `' O' w7 c  m' Q2 d2 V[ 本帖最后由 qinjiaqing 于 2007-3-31 17:20 编辑 ]
发表于 2007-3-31 21:48:54 | 显示全部楼层 来自: 中国湖北荆州
5楼的厉害啊!
; s: R2 j- z4 U7 ]6 t大家应该多学学
发表于 2007-4-14 17:57:49 | 显示全部楼层 来自: 中国四川成都

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

http://www.3dportal.cn/discuz/viewthread.php?tid=250487&extra=page%3D1. H4 b" P6 A" q9 h5 L2 J' K3 g" u
不仅仅可以画渐开线。
发表于 2007-4-14 22:27:49 | 显示全部楼层 来自: 中国广东广州
哈哈,,CAD就这个好,可以编程,,省去不少烦恼
发表于 2007-4-15 00:14:53 | 显示全部楼层 来自: 中国浙江金华
CAD是不是只可以用C语言编程啊???+ Z9 z/ M/ r8 m" r7 f7 k, J

0 N! f+ ?8 [8 j& }4 T7 m( o# v不能用DELPHI吧?????
发表于 2007-4-15 20:27:02 | 显示全部楼层 来自: 中国江苏苏州
原帖由 XZY521 于 2007-4-15 00:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif0 h- l1 F' u4 n. v. D  T
CAD是不是只可以用C语言编程啊???+ O  t- [9 V' \1 {: M, A

5 i/ G' u0 u9 ]6 P; M8 J/ O2 U不能用DELPHI吧?????
6 {6 X* ~- ]4 p3 x! b, {) _
) V+ s8 p: h! X, Y; ]: W6 h; U5 s

2 M4 H! j0 K! ~; 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 )

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