QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源0 L2 s3 v4 P) A, ~
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。' i+ B- d0 G7 b3 n  e
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
3 g6 W( H3 @& `- ^/ m教程目的:
7 @7 N1 \( N3 X使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。  T( t5 y! z9 E& n) S
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。' f; ]6 Z$ I/ d7 [, I

: x; s  f; {# B/ _1 u7 a阅读需求:
2 {$ |, x2 r& i( \简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
) q9 X9 t3 _: J/ ^% E% b: Z) n; @  s' @( r( h9 |0 [
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
. ~* C4 _- W; u4 w
9 d  P  Q7 I( |' m$ n!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!/ g9 O3 S( d1 y! y' Q9 G6 R
8 X9 D3 W% S; a/ N
这是修改过单位的,单位为mm

; b0 B; Z1 z/ x: c" L
* G3 w& B* ]0 X[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
$ p5 \$ z0 ]( |% w0 Y在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线. |6 {  y1 f: U  Y
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
% X' P4 N0 m6 ?        x = 10 * Sin(2 * t)
$ P2 ~5 S. f  _/ I        y = 16 * Cos(t)  R" A. X$ k/ |# W7 T- j
        z = 0.1 * t ^ 2 + 1* I! \( {# Y: U% D
将参数方程写入宏,参数t的范围取0-10,精度0.3。  J8 G- @6 `5 `0 o

' B: }. i4 E# D+ w7 v* U5 [1 \[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程' e! _) o1 K3 i
第一步:取得应用函数及用法. k$ E/ c2 S  l% b8 U# e( ]
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏  b# ^/ P/ p9 n) X+ m
1、新建零件
9 l( }; Z6 h2 q) ~: b3 \这是从别人那里学来的方法,比自动生成的用起来更方便。
/ t0 O2 t5 U. Y" D
5 N, `/ j9 Z/ [& q" X'建立新零件
' D0 x; u4 I" G    Set swApp = Application.SldWorks8 B9 n, P8 z6 f+ q# g% \7 C
    Set Part = swApp.NewPart- V- x! Q5 g6 q0 C& l. O
    Set Part = swApp.ActiveDoc
$ W, w4 ^- @! I; ]& Q+ y2 F* a' W. m) l% o" d% M5 o. t
2、声明部分
- X) m9 T* E* a+ [) X7 s添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用+ ]( _; B( J  c: e5 x9 f
/ X9 ^. ]! f! k; J( D. X
'程序需要的变量声明
2 {1 a2 J% E' ?0 ?; K# dDim n As Long 'SW曲线点的计数器
7 d2 {+ k8 ]$ C: X7 I- g! u* z- @6 T4 [$ H& M6 s' ~( e5 \
Dim x As Currency/ ]7 _7 n5 ]5 [( T6 J/ i" K5 e
Dim y As Currency
3 G' v  v# d! \" jDim z As Currency8 w% ]& n, S/ j8 r* S( Q: c0 e

; M( x  o4 R% F6 i. f! G3 cDim t As Currency '简化计算所用的参数变量
2 f4 \& f; d3 ?9 u$ JDim tMax As Currency( C7 G  D0 U- F7 X# H
Dim tMin As Currency; o& u. O7 P2 n( k- {* ~
Dim tStep As Currency- b* B" y  Y0 g4 [8 o) X

$ s+ i# J& U. d& T4 V/ z( N! r# I3、运算和绘图部分
6 V+ I- F* [4 Q1 z; ~7 M+ L% C绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
' W5 x7 Q6 O  H9 N" Z9 CFor t = tMin To tMax Step tStep, y2 I. a# k+ ~" m
    '给定公式5 b, ^, t' v. D( w1 J( C. e) r& A; b
        x = t4 z( P" V2 _4 o
        y = t ^ 3 + 5 + t ^ 2 - 1   
) B/ ], T7 W- j: A        z = 0: t% \- y% r% I6 E. A
'绘图5 c$ x4 |0 q' e7 Y5 B$ y8 s3 c: p/ Y* D
Part.SketchSpline n, x, y, z- h* k0 I- F; z4 g
) f0 c* m$ h# G! d6 E
'循环计数
/ k/ X' H' m: D+ t0 [9 M% J$ Sn = n - 1
5 u" O& P* ]/ u- M" C* H3 v5 _1 c5 {7 I. \% h
Next t
2 D9 z* I# X2 c+ D3 f) T
6 W: H2 [0 p  j0 l4 g第三步:调试# W; I8 ^* |. I
如果有报错,看看是否在运算过程中出现了分母为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 发表+ Z  [+ A: b  O3 a9 ]6 X, @: l
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
1 D. @8 H% p' A+ C- c, e% f! a但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

' h4 u# x; j% \5 x/ o
' N! Q' E2 ^9 F5 v$ r% }# L好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,( Q( I/ A1 B4 ^+ z9 ^
下来参考一下# O  |/ A& F- K/ y8 ~" Z% V
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!" ]( M2 e: e# t' E4 N  u
; y* {5 ^% O6 `) {. N0 [* p
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
) S9 J9 }, W: I2 }( }* Z1 B" Y! a# `6 T0 K7 U- J; m4 Q' D1 B
[ 本帖最后由 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 发表
2 n, l( c: e% I! R$ @8 L笨笨大大的教程的确做得很好,受教了,谢谢!
& m: X' F2 u; k  w8 W- }7 W- t. y
$ z; r! I. \. G$ |) x% N不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
3 v' B- S# {  @) B8 z$ c4 \4 _
) W! C5 ^! J0 E7 @0 Z7 M. c4 E( m/ v
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:! m- [) x* M) [
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
) i: c+ E5 M0 A  M但是缺点就是:- Z( h' j, F) h. n8 d! E' n1 L
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。* ?) d7 I% |4 V. P1 ]& S
2 h7 j. V  f6 e4 Z. {2 C1 J# n: O
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。( t2 v* {4 S  i, M/ H$ Y9 O+ _
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表: j1 q/ a6 `1 E3 a8 |
3 h  r! k- M7 D; C6 g, l- t

6 {4 {  D8 Z& w8 V9 x/ B8 U呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
' B, t7 A5 l' t  X, _! D+ m    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
/ E  r& p6 t. P! ?6 m# d1 Z但是缺点就是:& n4 H6 c8 B! i6 A" G' ]9 @' x
    1、 ...
& }+ ^5 v& L; ?" d1 t0 ]
) Q( T% o1 |2 g! a: O8 F" e
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
6 ?; A" O) v3 Y% Q0 `      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
3 v# `& t5 L. T4 Y& h2 w8 b      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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