QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
  C3 D* [# O' n3 P" Q7 i从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。9 Y3 {: I! B' X. p
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
+ g  q. S; J; n# n- O. A2 n7 q教程目的:
: l$ ^) ~$ {2 Z2 D( Y. E3 ^; J/ P使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
! {" u4 d- e. \笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。0 j) U4 ~9 z) V+ x( ~

& L/ D3 u. ]: w! f, |阅读需求:  ~* g8 C1 ?( y3 o7 Z
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
* j0 z4 l( i- P0 q" Q7 e# K& X' B' ?) V9 @, _" [
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
* l& d; N# \% l% {8 Z& \) |* s) o7 _5 o  A& k: T' z* Y
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!3 W% `2 K/ e7 B$ K+ j8 c* R  D
% |5 K' a1 X  C0 s  M9 U& G; m4 m& U
这是修改过单位的,单位为mm

$ W4 \4 u- x% T8 b5 @3 B' c
5 g7 U) f3 t5 w1 T" G& K[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
& R. U2 D6 k9 z8 H7 i* S3 S. S在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
. n( L- T) @! {0 f0 ?, r1 g  v& [解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,, y# l/ ?# ?* S1 M( }. K1 F
        x = 10 * Sin(2 * t)
+ Q  H0 d( B: i        y = 16 * Cos(t)
: f  S' {# G! H( L  f        z = 0.1 * t ^ 2 + 1+ r5 y7 H( j/ C0 k% x% L2 ^0 H8 ?
将参数方程写入宏,参数t的范围取0-10,精度0.3。, L4 c3 x# P0 p& z+ W* J6 [

1 H9 g8 f& E) J( m  o[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
8 Z; M9 q6 G: s3 l% h' Z第一步:取得应用函数及用法. _5 T- A; Y4 U* U: A( B* ~8 @
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏6 p3 ]; x, [1 j' O
1、新建零件& n3 T- B# ]" W( K) B5 D
这是从别人那里学来的方法,比自动生成的用起来更方便。, r0 G1 v- f  P9 }
( Q) c' O9 r: y& E4 x  u
'建立新零件
, \1 v2 \7 H& w- J    Set swApp = Application.SldWorks7 x5 T1 }! C) R7 K1 J
    Set Part = swApp.NewPart
: G! j! T" y% u' m    Set Part = swApp.ActiveDoc( R+ Z7 d7 m# h1 `

, I  B" G& j$ p! \2 ?% D* q2、声明部分8 L( a7 R! ]7 U7 r* s
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
5 p1 p  b: `$ y
+ y# T  O& t! }$ W! {. _. A; q7 F'程序需要的变量声明! @# n* y* D; Z, q- m8 Z
Dim n As Long 'SW曲线点的计数器& v! G5 t( o! E, x- S
3 Y9 t1 I  x* Y3 Y5 Q
Dim x As Currency5 a+ n" ]- i! I4 w
Dim y As Currency7 H; L9 e* d+ q
Dim z As Currency9 k9 h3 D1 E9 r* V- f
3 W0 c" w- Z! @8 S1 E! c! Q
Dim t As Currency '简化计算所用的参数变量. n* t. T) M9 k: g* F. H
Dim tMax As Currency! y# s& n8 ^$ S5 Q8 E
Dim tMin As Currency
+ C- m/ ~% \% y0 t1 y1 WDim tStep As Currency! i# u* k* {3 |" d
7 X: Z& ~& t/ X
3、运算和绘图部分
# e6 `1 G, Z4 _+ A% U绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
3 {8 @2 E$ h+ i1 m* V; IFor t = tMin To tMax Step tStep, T0 q* x  E% O4 c7 `8 ~
    '给定公式
, H0 E3 u& |7 [9 g5 z        x = t  C0 b$ O' R, c& }; t6 ]
        y = t ^ 3 + 5 + t ^ 2 - 1   
" R* s5 T! t+ u7 ~7 o" M        z = 0; Q  v4 y3 p4 [9 G: s5 l
'绘图
; ^" J3 E8 L7 A" k9 PPart.SketchSpline n, x, y, z' T1 _( W( X0 P% J
% P$ Q; r0 H: g  o
'循环计数8 U& f% J: `, O2 M1 u
n = n - 1
' _1 A! Y/ b# M6 G# C: Z+ e: V  B" J) M9 D# E$ s. T# T" z" }
Next t  X9 q7 S( q6 p( o
+ M% _7 n1 M4 E
第三步:调试
) T! q- q1 S  n, J* D如果有报错,看看是否在运算过程中出现了分母为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, K0 a/ R! O1 s* ^: e% m相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
+ [/ H5 U% h; ?; |7 g但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
" R0 F( O; ?- x' `( g  j
. W5 C  j; m* [2 m
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,6 y5 V+ `( L' F
下来参考一下' h5 l4 |" G. [+ H5 p
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!6 T% o5 i" D1 H' Q1 r

# G! j) |: D; g! r: T( G不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。$ e, l6 r6 Q, p5 F$ |

5 s) j5 A0 D* C3 S  S  ^8 W8 a[ 本帖最后由 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 发表/ S9 F" S3 e7 ]; j5 I8 U
笨笨大大的教程的确做得很好,受教了,谢谢!
1 e; D! _3 _% h: o" k) ^0 N3 G/ \- ]& r! f: l
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
% b( I* @; }/ B1 i/ ^7 p5 x
# n( h% i% L5 Z% P$ m# C- _
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:4 ]+ F9 {6 d+ c2 h" E: ~  G
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
) n, _  h- Z# I2 {+ G. [但是缺点就是:
. q) Z* h- B* c9 O$ {2 o8 Q) W    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。+ O6 t! M, A$ \& t4 ^
3 M7 @: `0 f3 _$ Z+ e
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
" ~' i4 p3 S. h, b$ f$ \$ g2 ?另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
2 t; K/ K5 n7 G2 M7 {: N
* a  ?7 y/ E% w/ R& r" N
1 W+ N2 r4 M+ j5 ]/ J) |呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:( F: w5 W6 E$ S; ]$ }
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。% g* ]/ n/ l4 A& r; e
但是缺点就是:( U1 z' E- f# Y" e
    1、 ...

! `; c6 X' q6 ^1 }2 Q4 p
/ _' O8 h* z: K! C  M      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。9 r% M! E' [2 Y, k4 Q
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
- x. X+ u4 }9 S' b, C& `      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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