QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 9468|回复: 36
收起左侧

笨笨教新手之十——35行代码!解决公式曲线输入

[复制链接]
发表于 2006-10-1 19:22:15 | 显示全部楼层 |阅读模式 来自: 中国北京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
教程来源
% U1 `# _/ \7 @, \2 F从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
* m. ?8 W) n8 B& |/ v本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html& V7 b1 L7 x* ?3 f/ o
教程目的:" U3 A/ ^, E; g, \0 `
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。: k0 E' m! U; G# F$ O$ I' Y2 t! S
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
7 c3 s4 |% A8 d, [+ w- D8 a4 j8 z, Z5 D6 Y1 g( F) X/ ?  x* R  k) L
阅读需求:' a0 {' s6 N: n( V, J+ _0 r
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。; Z$ w* L3 X" H8 F5 a$ i9 k
; g  z& _& t" B+ d6 @
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
0 B' B4 Q6 _: q6 V$ ?. e1 j0 ?& H; D# r
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
( s8 E( k& l0 D$ i7 C* O+ v; C
% U8 ?: _# z6 ?  p1 m2 o- Q) X这是修改过单位的,单位为mm

' H3 y; j& q  p
4 }. o$ x# X. B/ l[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 282

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:. C* j5 x- e9 C) I# l. E- Q& e
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线. B0 b0 w0 S& D% j$ N  d$ ~
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
9 d  P4 p$ _8 e  j$ R        x = 10 * Sin(2 * t)0 F" y. [( I0 J5 f9 m; g9 r
        y = 16 * Cos(t); [2 u  T; I4 z$ ~9 Y& U; ?
        z = 0.1 * t ^ 2 + 1
! `% w; m, i* J9 ?: [7 ^: f% R将参数方程写入宏,参数t的范围取0-10,精度0.3。" c8 [6 y7 o8 J( x
, S1 ~. F$ s' T- J8 ^) S+ q
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程5 a! q0 V, H. N( {& K
第一步:取得应用函数及用法
$ R' i7 {  `  J; T' I5 e8 C1 b! l打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏3 w1 |) m. r( y  X( c
1、新建零件
% n2 N0 q" Q5 H$ m8 {* x& E/ j这是从别人那里学来的方法,比自动生成的用起来更方便。
" O) C( K+ s6 p9 k* H# l9 M
& n. a* m# c4 D5 x'建立新零件
. i+ q. a2 o* K6 j" [5 N( [    Set swApp = Application.SldWorks' [( B* D$ }" E; E' P
    Set Part = swApp.NewPart% n4 B% d8 Z- \% S  U/ Y3 s+ h% k
    Set Part = swApp.ActiveDoc
. j: {% [. O! S  D* _( e$ m/ w6 \% M. a+ i1 S. k5 ^
2、声明部分/ D9 [% O6 B) E$ F: f3 m4 _
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用* m: n# {/ R: q6 Z
( Q- [5 c5 o, D! d, E4 r! x
'程序需要的变量声明; ^# [" [+ m+ k1 E/ A8 x- q
Dim n As Long 'SW曲线点的计数器: Q9 b( q6 Y+ O' x, \0 q9 A
# F3 R. ^( w6 x: l* p  t0 k
Dim x As Currency! I3 ]/ C; u. x6 D: m0 R
Dim y As Currency
4 K3 H! I! F& W, @Dim z As Currency' w' D, P+ q5 N) N
  @9 \* L2 M8 n  \" K
Dim t As Currency '简化计算所用的参数变量
! j3 U: H( o5 L6 }3 {! \: P0 \Dim tMax As Currency
# x: U8 A4 d4 [7 [' q$ H# v# j' VDim tMin As Currency
% D$ A! S$ c" {. f3 n, A- PDim tStep As Currency
. A- S, j" e5 [, P8 B5 V8 U- ~$ U" i* f# n" g5 r1 R
3、运算和绘图部分0 p# `# w8 k9 e
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。( U' m- Y. [. t2 X$ A
For t = tMin To tMax Step tStep: I, b* F: v0 {3 K" W- x+ h0 d) ?
    '给定公式2 _) J0 A0 _7 }0 g2 X% B) x
        x = t
- Z% P/ E( K8 r        y = t ^ 3 + 5 + t ^ 2 - 1    4 n3 v2 d: N6 ]1 Y, s& ^) i
        z = 0- w3 C7 ]# @! B' s( Q
'绘图
1 p) Y4 _4 e2 _/ p. J' HPart.SketchSpline n, x, y, z) x( m+ W, Z6 |

; \. {3 Z! e5 h  h. k'循环计数4 Q6 d9 o- \% E) }3 N+ z
n = n - 18 t! {0 k! V9 B' q. n. R

2 R* z4 `1 _7 g+ a3 j0 W# \Next t/ h; {3 |' ]7 }6 t! r( S$ G& g6 f1 q( l

7 M. \/ l( b! N. P+ ^9 [/ B3 f# p第三步:调试% p) L' n9 P& B% k. C
如果有报错,看看是否在运算过程中出现了分母为0的情况,也就是出现了函数的分段情况,适当更改函数的范围就可以了。

评分

参与人数 1三维币 +20 收起 理由
Recky + 20 好资料

查看全部评分

头像被屏蔽
发表于 2006-10-1 20:09:36 | 显示全部楼层 来自: 中国江苏徐州
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-10-1 20:12:56 | 显示全部楼层 来自: 中国上海
好同志!辛苦了!!!!!
 楼主| 发表于 2006-10-1 20:31:19 | 显示全部楼层 来自: 中国北京
原帖由 rutstyle 于 2006-10-1 20:09 发表6 L0 [, T6 r/ N/ o6 M: f
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
: f( S2 j6 p) V( v* j. U6 e3 L但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
$ h$ p& n. {/ N+ g

, U/ }& u% X3 h; H6 o好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
2 \2 d' q/ Z5 `. ~下来参考一下
9 c. X& U& `3 Y( v) r3 ~: n感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!* ?8 u4 x2 L) d$ k  g' G# T
2 S# F9 j4 S# |5 @$ c0 F( N
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
  X* u* l: G) x9 t0 B7 a0 W4 `3 G# |, [4 l
[ 本帖最后由 Recky 于 2006-10-4 15:39 编辑 ]
参数方程.JPG

评分

参与人数 1三维币 +5 收起 理由
Recky + 5 奖励

查看全部评分

发表于 2006-10-4 10:22:54 | 显示全部楼层 来自: 中国广东深圳
谢谢笨笨的精华教程......
发表于 2006-10-4 10:51:09 | 显示全部楼层 来自: 中国湖北武汉
高手大有人在啊,佩服
 楼主| 发表于 2006-10-4 11:17:36 | 显示全部楼层 来自: 中国北京
原帖由 w_hs1 于 2006-10-3 17:13 发表
3 g/ l: k$ R1 [: H3 P) }0 _笨笨大大的教程的确做得很好,受教了,谢谢!. o5 x, p- u; M; ?
/ F  w# r5 C  F- _5 _1 p
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
' C0 _& m+ \" V" q% e

/ t4 ]! j. l) T2 _6 K* [. T呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
' _# G& ~+ f! H! B4 l* `/ G0 _    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。; I2 O- M6 K2 L4 K4 d9 x1 L
但是缺点就是:
' a" P/ A5 b& L8 D5 F' o5 A    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。) M; t' t  ?! ~$ s

- k& E6 |) n, X) s所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
( w1 |- S: R! v* c' u另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
1 L6 y& E7 [8 ?' }  V( m* c8 _9 N( P, N) o# p/ \: P
4 Q4 ~; P2 \& \/ |7 d
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:- c  A1 n$ V, g1 A
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。, a7 A; r- y. Y& q. x+ K& t
但是缺点就是:
+ ^+ P# ~* F% m( L0 N: k    1、 ...
' Q' S5 f" l6 O9 m1 i; r, {6 k
0 Q* e; \, l! e7 e+ ~. F  v1 y) y
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。# c" C$ }0 G3 y6 B, H1 q  N
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。8 {6 O  k4 C6 H$ f  S8 E, x
      再次谢谢笨笨大大的教程。
 楼主| 发表于 2006-10-4 12:55:57 | 显示全部楼层 来自: 中国北京
发表于 2006-10-4 13:41:16 | 显示全部楼层 来自: 中国上海
发表于 2006-12-3 16:57:08 | 显示全部楼层 来自: 中国江西赣州

谢谢

再次谢谢笨笨大大的教程
发表于 2006-12-3 17:07:34 | 显示全部楼层 来自: 中国浙江温州
谢谢笨笨大大的教程在
发表于 2006-12-4 22:27:22 | 显示全部楼层 来自: 中国河北廊坊
好经典   我什么时候才能学会啊
发表于 2007-1-3 12:11:54 | 显示全部楼层 来自: 中国浙江温州
怎么要07版才能用
发表于 2007-1-4 11:17:05 | 显示全部楼层 来自: 中国广东深圳

向搂主学习!

向搂主学习!谢谢楼主提供学习资料了!
头像被屏蔽
发表于 2007-2-8 11:33:46 | 显示全部楼层 来自: 中国陕西西安
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-2-8 13:42:57 | 显示全部楼层 来自: 中国湖北武汉
经典,学习中,这是教材。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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