QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 9352|回复: 36
收起左侧

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

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

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

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

x
教程来源" [. J+ z' n* q# d. b0 K) o! i
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
/ a7 W7 `4 v# l2 N8 r: o本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
! f* S' _4 X7 a教程目的:; f1 |/ C- _7 I) q* g* n; K+ L
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
9 j# g/ k0 ?" D$ h$ ?0 y笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
% V- g: j+ q+ o$ s8 K2 L* V# m* ?5 I2 t  ]/ T
阅读需求:
( `+ h  [" ~% v8 q4 T5 e0 o简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
. e9 m5 O, g1 C: x+ d6 n% J( J. q$ Z; T# o& U* m5 K- x! _
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
( L5 g" l2 Z/ R/ }
4 M/ ~- E' C8 U# A. d6 |. Q!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!7 I3 x% G8 `5 Y$ g. {
& J5 q* a: S" z2 G! u# t; W
这是修改过单位的,单位为mm

* s' u5 E0 J; M# G5 A& G
4 u+ m$ I! i1 K3 M5 I3 b[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:3 }0 z7 c: I- g
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线+ O$ |1 E) }7 g0 ]( H1 P5 ]
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,4 g3 g2 _9 }) q0 q$ y: J
        x = 10 * Sin(2 * t), A4 E4 e5 y5 |3 k! e( e
        y = 16 * Cos(t)
  H% w! m) K5 C+ h$ i4 u        z = 0.1 * t ^ 2 + 1
: Z- }9 u1 J) k$ L) F' q2 v, e将参数方程写入宏,参数t的范围取0-10,精度0.3。
+ ?. e( U  x! H) n1 C8 w9 I% s, U9 A4 m- u4 s5 ?* |
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程6 k; Q+ q8 j% `: J+ l. o# s
第一步:取得应用函数及用法% e2 W& {6 s) l6 ?7 g
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏$ A! n7 b3 I8 F; [- K9 q* N2 z
1、新建零件! M( y. y' @- F# C
这是从别人那里学来的方法,比自动生成的用起来更方便。6 T& R7 a4 V% ~# C

5 X$ a% f: Y$ \% P, s0 e% Z'建立新零件
. |" V4 |2 I% a5 ~1 G    Set swApp = Application.SldWorks2 o8 Y' U& g  l9 S+ i$ ~' ~
    Set Part = swApp.NewPart
) Z7 Q" x0 Z. w7 K9 t) i    Set Part = swApp.ActiveDoc& r6 K0 U' @5 m/ ~' j7 w. e0 _/ B, [" t

) a. m, ]& }% f0 R; ^9 ^9 o2、声明部分# t, [" J; x* `$ o
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用- J4 L2 G$ m( r0 l6 c: D& o
* o+ m: C- G" W/ N
'程序需要的变量声明
9 L, T6 o1 p( m, Q+ N) o0 I5 e1 Y- wDim n As Long 'SW曲线点的计数器
- V# i: D3 N4 j, T2 V+ @' P& p  R: ^0 A6 x6 N8 b& `
Dim x As Currency
7 P" h# O+ \8 U8 A% `: q% ]Dim y As Currency. s$ K! {$ Y& ~& k$ e4 C
Dim z As Currency$ d' o" C. w5 g% L: b5 v# E
% y& p1 E1 z8 W" t
Dim t As Currency '简化计算所用的参数变量
. x) T4 u! K" X) \( e* |9 sDim tMax As Currency
0 J* T, U! Q- J" A+ iDim tMin As Currency4 [% H  H5 K% n- }. n( D
Dim tStep As Currency
: F. G7 F7 x9 A0 C1 J7 {) q# l8 i2 X. _, w% T1 P8 A
3、运算和绘图部分
/ W( S3 f6 D: K9 v绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
3 V3 R" l6 H. C; A2 k; GFor t = tMin To tMax Step tStep
& F$ ]. i3 u; c$ C, ?    '给定公式
2 A) W. G" X5 e) L5 K, H! @1 X        x = t) o1 J, i5 v0 T% D
        y = t ^ 3 + 5 + t ^ 2 - 1    3 ?$ k, P' L; G& g; `" ]
        z = 0
& Y( A8 c6 W9 [7 P7 ~0 x5 f' G'绘图' z) |/ l0 ]. I$ J' }( h
Part.SketchSpline n, x, y, z1 \5 X- R+ C# z% O3 H) z
6 J. z: E7 p% [# R
'循环计数
8 g, x% I2 p& Gn = n - 1
' e; H' g+ X2 W1 [- e8 @) n/ a% v- N3 G
Next t$ Q7 b& x2 D" U
. g6 p; Q; m/ K4 F
第三步:调试
% g7 f1 t  o. }如果有报错,看看是否在运算过程中出现了分母为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 发表# H8 Y; m4 q( i* E, d6 ^: H
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~# f: v5 j6 C1 C0 R& g
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

$ w; v& I. {  I4 [% Z# P; _5 g
0 u# R2 H8 m4 X) f: i好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
* d$ f  p4 q; y- R2 O下来参考一下. l- f7 Y. p0 u2 J& ]6 L/ B8 T$ E
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!' X, p4 _2 N* P, s
+ m1 Z3 f1 V; X* F/ F  y' c- Y
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。% G- p2 x4 t% s$ @, q. ?* K& [2 V
1 h, s* a( J, H5 J1 z
[ 本帖最后由 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 发表
6 D7 t- q+ ]% l- z1 b& b2 k+ w( J2 S笨笨大大的教程的确做得很好,受教了,谢谢!$ M0 ~1 l; y9 X  d# Q

& s. ]9 _- G# k7 Z' o不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
. X: S6 g: C1 i7 e

7 L5 U2 d2 s& W7 O. p5 G& Z呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:  b% k1 w' L( p3 A1 }0 E
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
' A3 w( o* m* I但是缺点就是:$ N4 P6 O! [# E' \6 }
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。1 Y# [, h, ^9 G8 g( m

- r/ n) N) I! l: `: I2 n3 @# e所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。: r) W2 @: [! @/ D* e% y  n
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
% O0 N2 g. }1 E- n) O7 n9 T7 `, S
) `! |+ C  P4 Y0 |( `
8 O" s. X- F; P: p$ \4 M; ~2 @呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:2 z; C( A# n. u2 g' p! a
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
% s' `. p* }! P$ c: Z9 Q# u但是缺点就是:, g7 p: t+ Q6 K- F
    1、 ...
- w4 ^7 X# {5 U3 `5 z* G" a8 P
4 p) r  m5 d+ [% s' r. s
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
0 x) Z" Q5 [! @  _  G; L' C      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
7 G+ b$ A$ V0 d* W4 d1 t; Q- ~      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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