QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 9489|回复: 36
收起左侧

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

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

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

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

x
教程来源" C; l* j7 e& Z3 G7 g) x' G) x
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
* f3 \& ~" r! E: N8 O. p) _本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
7 v1 U& t- ?" {( x教程目的:
" f* h4 @3 d. T0 E1 S使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。: P9 H3 w* a  n; b& p) s
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
$ `* e* k1 ^! z3 f( M
1 k+ C+ p/ x& d. b. T: h阅读需求:$ ~+ o; D# f) S' ^7 g! f5 a3 H
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。8 L9 E8 O( D9 ]# h2 D) x) b# P

' h; s8 x9 Q6 y- U, E[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
( F3 p" Z" }' _0 G% m% s+ e
: V1 y; A! s0 Y!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
4 y, S4 L/ I9 I' G* G8 V; J
5 ^; [7 {9 h% A& r  t" u& t: j; l这是修改过单位的,单位为mm

  R0 j' P9 K" b4 K7 |/ m5 T1 Y  R6 S# u! i  Y! v) {
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 282

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:, }, N0 g9 X8 R. f
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线5 z0 k# V" ^7 {' m; W9 f- d
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
3 R# x: g/ r% q# B' @2 w        x = 10 * Sin(2 * t)0 [; f$ u  e1 H; o# [& Y, X
        y = 16 * Cos(t)
7 N5 \# R' t9 h8 U1 H8 l        z = 0.1 * t ^ 2 + 1
3 f* ^2 W( \6 y将参数方程写入宏,参数t的范围取0-10,精度0.3。  w9 [. B: ^6 m- ~$ B( x

* m2 ?7 L; [5 i9 k. a) u" H[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
5 I+ I) z# v$ p* f3 m5 N第一步:取得应用函数及用法
3 n8 s5 ~* Z, d4 K打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏
  O0 S8 W. G. |) ]1、新建零件- _; k3 L+ c) _$ n. h3 c9 T; S: b! q, c
这是从别人那里学来的方法,比自动生成的用起来更方便。6 E4 E0 N9 p; s& E
, X% w. Q+ C5 T1 y% W
'建立新零件
3 s. l: _& R  S& F$ p    Set swApp = Application.SldWorks
5 ^( z; ~+ f8 H5 L, ]- o) W    Set Part = swApp.NewPart  h4 V. l& N. O/ u3 B( Q# M
    Set Part = swApp.ActiveDoc! {0 s, ~& K: y# X

7 L( c+ U4 X  f2、声明部分" K9 m; _7 O2 D$ H
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
) s' c; G# X. h6 a/ v0 x0 c7 E* e6 E2 D- O  M& O
'程序需要的变量声明
; w9 S; f& S5 y* SDim n As Long 'SW曲线点的计数器
! N8 O; ~' Q( g' [! i" q) u% S1 M4 q2 N% L/ Q' E) M# [
Dim x As Currency
' P( U, F" [' x& K; Q% c6 fDim y As Currency" H5 t$ z( Y/ y! n+ j" ^" v
Dim z As Currency
% b  d) r! P7 @! e2 U7 F. C* I' [/ P# Y( ^
Dim t As Currency '简化计算所用的参数变量/ M: _( t) a6 h2 f/ T) A
Dim tMax As Currency. I4 N' T8 j' }- _1 @8 Q, E
Dim tMin As Currency
' u. X' |: @( H0 _; zDim tStep As Currency
- u9 c9 H0 g# ~; e
2 {* ]8 ~" V4 G/ ~& S3、运算和绘图部分
0 s, b5 o" f# S, m3 d) G# ~- r* s绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
0 D: y  g  U( S5 {8 ZFor t = tMin To tMax Step tStep
/ q# S* w8 K4 t* E3 Q, z" @- u- Z    '给定公式/ Y2 E8 F0 V) ]! M/ B2 d& [
        x = t. D6 Y0 K, a4 S) ~  h8 j+ W% q
        y = t ^ 3 + 5 + t ^ 2 - 1    + y" e* d& q7 a( R
        z = 0
  I; V# T; b) D/ ]'绘图! O8 n4 x1 ~' m2 i2 V
Part.SketchSpline n, x, y, z1 I3 y, E. X2 a5 _. N6 x

' N% ]# }* G( `( @' ~$ ?'循环计数
* M' H8 }; N( _' \! _/ D# j8 q5 [n = n - 1
9 u3 [9 n  k/ x5 e5 G' H( M  q$ n& H8 s3 x+ S& I, Z
Next t
0 v3 |( u# `1 X7 m' }6 x- [0 b- F
8 R. O- s9 U3 l1 f第三步:调试  A) f2 L: {; x3 z, R+ f6 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 发表( `, J; d8 Y( L. z" x
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
' [5 m' }7 q4 |( y/ t但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
. W$ L* v; H+ V; y0 _
: `* p8 a% v  t# j1 A
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,* ^5 g. O; N4 {$ f
下来参考一下
2 O$ m4 e. [9 W2 a感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!# p8 V5 c! }/ D- B
1 ]3 u' i3 q/ s/ }& T+ R
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。4 O, {7 e* L1 e0 F  G5 c

9 N2 b& T7 Z( n2 p/ D" d- x[ 本帖最后由 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 发表
1 F( y7 W$ [9 Q6 J* A! ~笨笨大大的教程的确做得很好,受教了,谢谢!/ ?! s" i$ I. ^

( X! j+ W# ]$ h6 n不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

: R' b0 _7 n0 R2 C6 d! _7 t3 }9 Z5 s/ ~3 M, ^5 b. H4 N8 g
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
) ]4 i- m: j3 ?7 _+ t! h    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
, Y9 m  `; _/ A3 w- l8 B0 O9 C" y5 d但是缺点就是:! X- F0 V; X! H7 A2 R& e' C
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
) V0 L: j5 z  ?+ u4 @ 3 b0 {6 o7 K9 V, j1 u4 I
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
+ O1 M' y) O2 t# o* z0 Y( C9 X另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
  S; r: g. v6 W1 N- g
# }9 J# H! N: y
# B% V" @: s: @呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
" N$ ?, o( F" Q2 Q    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
  }) f' T# [8 c" a) N- T但是缺点就是:7 I0 y9 \9 \1 v6 I. S0 M8 Q# W7 H
    1、 ...
4 F7 {7 o# n- B$ M/ N6 n

7 R$ e# S7 T( R5 D5 E9 u      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
7 b  d8 U# d7 [: o" f$ Z      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。0 c! L2 a* ^, c+ C1 l
      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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