QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源9 o- [  D' |( A1 e& @7 |
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
7 |8 C, t& [$ w本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
+ n1 P; _8 @4 z  X教程目的:( H4 l' d2 S0 S, l4 X& ?8 o
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
7 Y/ @/ |7 o- v1 \" s0 q4 y( R笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。9 x7 N: i( U) k7 C0 c# M  F

) c# D+ \! i* c7 X2 T$ ^7 F4 r阅读需求:
2 w  ?1 `* h1 e4 q9 u4 {简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。: q8 s: V0 |4 J6 P- G0 K& x

1 T) ]) d% G& Y3 I  x[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
7 x9 g# X5 ^, D6 Z; P2 y
3 L. u2 [/ s3 A4 ]) r* ?( l5 K!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!( }, ?3 w- f, S7 ?. u9 `

2 K% }% w3 Q2 d这是修改过单位的,单位为mm

7 N4 |( w# ?, y' Q+ I1 a, X  X2 Q% B: v
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
  U5 Q4 z) p7 ?! |. p* C8 K在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
) Y, A3 u1 N) i+ k8 a" i( U4 @' H( g解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,& T" R: U6 G* S0 y6 Z7 \9 g& K3 s
        x = 10 * Sin(2 * t)$ X8 J, S3 t8 v
        y = 16 * Cos(t)
$ H, z9 a% e# u6 |        z = 0.1 * t ^ 2 + 1
* v3 Q/ ^' O* E& }6 g! }$ g, q将参数方程写入宏,参数t的范围取0-10,精度0.3。
2 T8 u/ D6 m$ t9 K! V; |' P% {1 P$ {
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
5 p& e! |( L  U! k/ u3 u第一步:取得应用函数及用法) {8 M8 a- ?! b4 U
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏
9 {1 c6 H4 [8 F4 t# G! b  z1、新建零件' r: X4 W9 j+ D* P) S4 b  N
这是从别人那里学来的方法,比自动生成的用起来更方便。
8 p( K2 ~0 x3 ~" E: }- {# u/ A0 r
'建立新零件
* V, K  P6 h- W# x' s) T* C    Set swApp = Application.SldWorks9 B2 E/ G6 C# G! }2 t' _
    Set Part = swApp.NewPart
1 B+ z4 j  C3 f    Set Part = swApp.ActiveDoc4 {+ v6 Z1 u. @/ ^7 G8 V& }

: }1 N8 j' I% |9 Y3 P2、声明部分
5 z5 S! }) n5 r1 f添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用. ^4 h& O3 |8 b0 [
* Z# h7 f% h6 K. O1 X7 J) E3 T" @
'程序需要的变量声明8 C, V* w; t' A1 Z, r
Dim n As Long 'SW曲线点的计数器9 \- t7 N# I! F1 g# h7 _
  M- R; V( Z# u
Dim x As Currency1 ]: }1 E+ l6 y! _' f5 T
Dim y As Currency
* m0 h- A* X0 I0 T$ t, ]& vDim z As Currency
9 Y. I' O6 [9 m4 d& ~1 v3 b- f6 K9 i
Dim t As Currency '简化计算所用的参数变量
1 y  o9 ~! I- V# @, ?3 u, t2 xDim tMax As Currency6 w) I" h3 t* O2 l
Dim tMin As Currency
/ ^4 V/ L6 d5 }4 F! z' BDim tStep As Currency8 x+ a* N- Q+ U0 u1 Z) d, y
7 o7 J% M- F: X5 {: B! ^( k' M
3、运算和绘图部分
" h' M7 A$ M7 {/ C* K: k0 A+ A绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
, E. {! W! o5 e) O1 \& ^$ zFor t = tMin To tMax Step tStep
+ e5 l* G# T% q    '给定公式
9 ?6 r6 I* T$ V. `" a9 Z! I        x = t) v7 t; y5 t. w7 W: `3 _! ^
        y = t ^ 3 + 5 + t ^ 2 - 1   
/ r' X4 B5 P0 X! V" A2 u( T& j6 c& K        z = 07 E: Z, D' s+ w* h3 l- G
'绘图
" r2 `/ R( b9 ]Part.SketchSpline n, x, y, z' N5 R- y, @" o

: P7 M( Y8 X5 y- r& L2 P& I* v'循环计数
1 v; g* y7 n0 z: [n = n - 16 K) r3 n1 Z( ~7 [1 p! s

+ T/ v4 [; F2 MNext t
2 _- O$ J4 {0 w+ N- L- d3 K4 B) k  D/ C
第三步:调试
7 o1 ?* M( r- D9 d% {- b* F4 V. a如果有报错,看看是否在运算过程中出现了分母为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 发表
5 n3 P0 t# Y! O! C3 S5 Y相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~, S7 `4 Y* b- D" l( R; ^, E! ^
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
7 d* D3 g. P4 [4 q& R

' ~+ Q) c4 c8 T. p. b  z4 y好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,$ M" i1 P5 h0 a' x% E: m
下来参考一下
! a: F% u4 S$ f感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
! `6 `6 S1 ?; S9 E4 p
' H2 P. I" s5 X' C. C% M( L不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
$ g* P' D5 o, A' t
. Q1 Y- o# _$ C' _& ~' C0 w+ Q0 X2 I[ 本帖最后由 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 发表
, U2 k+ i* @: b2 a( z& \笨笨大大的教程的确做得很好,受教了,谢谢!' l( ]! l6 F6 [1 m

1 z7 @1 q5 J/ l1 Y不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

/ l* z: X5 R; `" P% s4 t- b3 R# n) k
& s: T: d# ?- G5 U5 u呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
* o4 U( g: v3 t; d. V    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。8 A* ]$ S& ^# k0 d
但是缺点就是:
- G" n2 s6 u* ?6 ?) ]- S: F; ~    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
/ ]8 |2 h" y+ t+ j/ ~5 ~/ `  J) B8 E0 M : t8 a$ ~0 B! v5 e0 D( @7 i
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。; p: D; u% p; ]9 c2 A
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
. m. ?; Y+ J& c/ d  {4 Y
: h4 a& y4 g( L; B+ v, }  W6 r
+ {! G) H- N. R& i; {呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
, G7 r6 L4 [; b" @1 @4 a2 ^6 Z    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。# V+ ?5 I1 g, _! A, i5 k
但是缺点就是:" y: k3 H5 A: z
    1、 ...

# Y& y  f3 ~) Q1 a
% O% I$ U. J5 _$ ^! ?9 A7 k2 s1 i( H      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
% n; R: J: a$ V( C      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
) z1 h& V# b2 v& D      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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