QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 8906|回复: 36
收起左侧

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

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

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

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

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

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:! _' N9 \1 }% p& l1 A' e5 e
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
8 N( e3 c' X$ w1 X解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,% O, r% G. b( Z2 k
        x = 10 * Sin(2 * t)
( A1 y+ }  @+ J6 A2 @% K        y = 16 * Cos(t)# C: E4 c) k: i! w: S' f
        z = 0.1 * t ^ 2 + 1
1 Z" K7 U' U- I9 [' G5 ~" Q将参数方程写入宏,参数t的范围取0-10,精度0.3。1 N# I; m/ s( F" R; i& N  L

+ x" u9 T( I% ~7 p[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
) V% k; K$ L# Y7 K1 T& C第一步:取得应用函数及用法
, U; Z* y& d0 `! w( X9 ~打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏
$ V& C8 N3 f9 _/ Q! }1、新建零件
6 d* e5 H/ `& [- u8 y5 Y这是从别人那里学来的方法,比自动生成的用起来更方便。
2 r, H# O, {8 `! l/ g8 T, |
$ e6 z- ?. j- \5 M- v/ r. u'建立新零件8 Q2 V8 O) Y# b. u: X! _, \
    Set swApp = Application.SldWorks
$ j, }* [# B8 L$ W8 J. P; T  v0 G" h    Set Part = swApp.NewPart% v8 M, [/ e( Y4 v& z& u* u
    Set Part = swApp.ActiveDoc
' f% O" E9 ^) t
! P* H3 A  j7 a- q9 L2、声明部分  z7 f- r0 ^4 N; m
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
! ~2 O  l. B) b2 g2 Y! c1 g" I* ]* O1 V5 o
'程序需要的变量声明4 L, Z8 R$ B1 k
Dim n As Long 'SW曲线点的计数器+ s3 U4 n" ]; E4 {0 d$ i' T

# t4 t$ ?" i8 l' MDim x As Currency) v& C. w* j# K
Dim y As Currency2 v: o' z: y4 h, @! _, Q( O0 S
Dim z As Currency
1 }0 ]$ @: n6 K$ k+ c5 q+ ?
: I1 ]- s" }: P0 BDim t As Currency '简化计算所用的参数变量# A/ a( T9 S9 D& }
Dim tMax As Currency$ d3 J$ X7 U) m3 ?/ [& f2 V6 b$ N
Dim tMin As Currency
6 e1 t, i1 Y2 KDim tStep As Currency
  U' f) i, S0 n' o/ c6 c
6 _2 s6 Y; P* q& `' H/ T8 P% Y3、运算和绘图部分. |# R5 |9 V+ q# ?2 N& n% \
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
' E8 i- C( w/ cFor t = tMin To tMax Step tStep
8 ^1 L( u% ?' n( w7 s& y! I6 Z% t0 E    '给定公式7 `! C5 J& P9 k! s% A
        x = t3 I8 k7 S# r# ~( ], j0 J1 c
        y = t ^ 3 + 5 + t ^ 2 - 1   
' @0 _: r8 h8 s8 h; |/ b        z = 0
' N7 l; J3 \- Q0 N7 F- X'绘图3 a/ F% z& I# O+ V. p, R) d+ D' H3 h
Part.SketchSpline n, x, y, z' z( C$ |5 J" T/ H: t

6 ^; I) a+ f7 g- p" \'循环计数
' p8 s2 X' }0 nn = n - 1
6 s- a/ ?9 r  T( |: C5 V& g5 O# V  q. j2 s* P" V
Next t4 l- L$ s4 ]0 M9 Z

! q; S; C+ ~2 t2 n第三步:调试, ]* O1 B0 m9 y" ^: h$ m+ ^
如果有报错,看看是否在运算过程中出现了分母为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 q: E0 Z3 i/ u8 n0 h
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
/ g. {$ I" z$ K6 }! d  e( P; i' H但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

6 R+ g2 E. {/ m* L; G6 r! i
+ P. r7 l8 a1 A好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,0 P& u' [. P( Q; h' _# x
下来参考一下
3 W4 D8 }0 x3 a) r感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!# p3 @0 g+ G+ c6 g2 o- d

* |" X; X9 r: R0 \' ^不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。- v( L3 i) X, S* Z, d7 H; j& o2 }  S
( ]4 |# \9 V& C) Z( c' p8 X- h9 ^
[ 本帖最后由 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 发表" w; ?  |5 T9 i+ G& j, w- z* z
笨笨大大的教程的确做得很好,受教了,谢谢!
; E$ u7 _3 d. e+ K+ u0 [
' `6 W* J0 e3 ]+ n0 Z+ c; Q不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
( g% c, K5 u# g( f

- n8 h+ \; ~0 I& u& k2 R呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
8 D( V1 r6 u9 c3 m+ G2 g    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
" T. }1 E! L; S, @但是缺点就是:
: r2 x$ z9 `2 u2 M) n; K3 z+ @7 D    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。0 \& ^/ r6 [5 j. b( `# `5 O

: {7 @: y" G) j所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
: c! z- M& o" z0 d; h! N另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表& j2 G0 m  w: S* ?

  ]2 \7 q+ [4 s9 ~7 v6 a9 B4 K6 j+ N" w' T9 d( X
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:& E: {7 E. B( B( i% ~
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
& D/ m9 A) u6 [" o" G8 O7 W但是缺点就是:
# C7 ~! O# Y- h- @$ D, \# @    1、 ...

( d5 g# y& B8 l: }4 v1 T
! f; t& J5 T0 k      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
  Q7 q. X8 u- ^      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
" _9 p5 Q( F9 w" ^$ ^6 z      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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