QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
" z" N: c: E7 V从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。  |$ t/ X  x$ A0 b' w; e: b
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
- u; r/ R- z+ Z4 J# n教程目的:
7 t* E" M+ z; B. x- p; q, s* v  p" l使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。' d' I8 |$ B  q" m: h
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
2 j+ k7 Y# L. x$ N6 e8 X- J) p/ J( b, S4 _8 V1 F6 a* q
阅读需求:3 O! V9 N* l: B# q% s. _' k! o4 `
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。/ Z  G6 V0 G% X7 A& F+ z: x

$ l) m# Y  F! g! I" N[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。1 U3 P8 Y& {% {  ]* S, w

% Q& O; o- F# i- w!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
7 l6 ~( W5 l( J9 z2 V3 U: `
: |- U+ n" p+ ]! M2 X0 m" [- p1 x3 c6 t这是修改过单位的,单位为mm

& _6 e% V& a7 R1 t. v) T* c
$ F8 l$ N8 s$ p' U% z4 S[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 282

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:& O; U: M8 H4 c2 y. {1 y  ~- G
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
- n. S# m8 i# y) b4 z! @解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,( O7 o' W& S& o1 {8 f$ U
        x = 10 * Sin(2 * t)
2 A! A: N: V' a% [        y = 16 * Cos(t)8 S- l0 E9 ]9 d
        z = 0.1 * t ^ 2 + 1. r7 i% g9 m8 i. g' f  M8 \5 E
将参数方程写入宏,参数t的范围取0-10,精度0.3。+ F5 M4 Z7 m) l& |' B9 w) ^. Q

* J" B: G6 ~1 L* Z- ~" n2 r! f[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
2 B! n7 I6 D! h* ~3 x第一步:取得应用函数及用法) B% Y, q3 g8 v( d
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏- `& d) K0 j" y- R
1、新建零件% t9 q4 U  r6 X8 P3 b; O
这是从别人那里学来的方法,比自动生成的用起来更方便。6 v  x2 D2 n$ U+ g* t* P5 o
  Z! ?. a6 h! b" ?$ S: ~4 i; t
'建立新零件
6 u& W% _8 J8 w( y; Y: J* o& i, z    Set swApp = Application.SldWorks7 J; ?. ]) ]; J% U+ G9 t3 U) F; J% B
    Set Part = swApp.NewPart
8 V) U: U0 D' j3 ?5 l! B* ]    Set Part = swApp.ActiveDoc. V4 S$ {* x4 ~* S) x1 d
; h4 V( [' G" o. b/ R
2、声明部分
8 Z( {) g/ }9 b" O5 a  z0 N, D添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
. l! r. g1 l& P/ N" a* n% V+ P! T& C
'程序需要的变量声明
* O1 p/ t( l/ x; W) N) MDim n As Long 'SW曲线点的计数器
9 R, r5 x! B* P9 [9 Y" u
4 `7 L6 B  d* S/ O$ r6 I' B0 mDim x As Currency7 [' q/ ~) x- V5 _( Q) }7 ~8 H
Dim y As Currency
  W8 P& c& [2 c+ A) X1 B0 TDim z As Currency
9 ]$ d# W+ a! y% u1 Q
- @5 Q' x) m$ A6 iDim t As Currency '简化计算所用的参数变量
% q1 b- L% ~4 [# dDim tMax As Currency
2 r% f& w; `1 d/ ~5 F, pDim tMin As Currency
# ]. P/ V9 {3 t( v  W- N3 ADim tStep As Currency
$ B7 U' H8 x1 T* ~
6 E, Z: o5 s/ o6 d7 ^$ B( [3、运算和绘图部分  h) w( [2 F/ ]' n* \  P% t3 }$ Z
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。% @) I9 C, t. ?; G& e( B( I
For t = tMin To tMax Step tStep" n& x3 X4 U) {
    '给定公式
$ S! `  u) B/ I        x = t
6 T9 B4 z' `6 a* o- p4 l7 C4 ~& ]        y = t ^ 3 + 5 + t ^ 2 - 1    5 d. L( J+ \! Q
        z = 0
7 f6 S1 w0 V0 a5 w/ V5 L/ L! f'绘图
' p6 u! C3 _2 B0 o" I3 f4 {- dPart.SketchSpline n, x, y, z, B" ^7 `4 v- w% S% h

. R; Y" w2 |5 b/ z8 {/ s'循环计数
3 ]7 O& Q7 n3 T# R& H0 Kn = n - 1- i* B4 h1 A" @; O/ |8 x& J% K

% i( f" q- |& c& iNext t' |8 q5 r4 m5 a$ {/ q

$ R: w+ n$ z7 B- c1 C# c第三步:调试! H/ s, K% a% Z$ ]3 V( L; H- }
如果有报错,看看是否在运算过程中出现了分母为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 发表# m4 T! ~. F3 p/ T, n
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
  o" \2 }6 x4 X6 W/ E. s9 R$ C但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

$ V: G& m3 u# F. m+ w" N+ m6 \
5 a: E" ]" F# t- `$ j, W( e" n( n好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
) T/ y& O( ?7 v  Y: y5 q0 w% i3 e下来参考一下
& k+ ?' W; Q' b4 b! d# \感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
* @' z. U( M5 E6 `! j( v: R$ K% r6 P' T! m! O* H6 r" C' {) ~6 U' z
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。: ~1 N( G( ^7 f8 w
+ ~, k9 G/ ^7 `; K1 x4 L+ s
[ 本帖最后由 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 发表+ T: V3 q4 f4 ?8 N/ p1 T
笨笨大大的教程的确做得很好,受教了,谢谢!  ^8 [2 o- `9 L! q3 l
, t  n# T( ^1 ^" F; V1 r: E# j
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

% l% ?+ }3 v' u1 u5 W% W
9 f; s) @5 w- a- U呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
5 v2 @2 L8 d" r6 {9 g2 L    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。* e. Q$ J% s& B" |9 o+ z* t
但是缺点就是:  a/ H6 Z' i, V, x% q4 A* M) _
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
* A6 j2 ~6 q' t0 R  I& ]6 ~   a" j. f* x, u2 T( d0 F& y
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
! }1 D+ U6 D: ~# @  V+ m* u另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表" y1 x* E  w! {, B  o4 e
- p4 x$ o- l$ Y: T

! p7 R+ X7 u$ [呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
8 J) \6 a" h9 j; ~5 t    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。" [: z, }! ?2 O3 F8 Q6 ?( v
但是缺点就是:6 G7 n8 [' m+ Y0 x6 j: q* r
    1、 ...
) @7 F& b2 u' {

, F; Q. Q5 W# p1 F+ M, e% V+ p1 E      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
' I! {, a$ `- Z2 B$ g/ O+ v      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
1 }$ @8 h- \% e1 [5 b8 {- z! j      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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