QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
, ?1 N9 q: W) \, g1 I6 J从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
+ R1 k' U9 I, F" z! l) }- T. J! b$ y本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
6 @; K2 r- H4 g) V3 B教程目的:2 s9 U6 G& D/ L
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
+ \" J) g  c5 d8 ^( e3 \0 @: Q6 Y笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。/ s& w! |' N5 n7 r* T& Y& D
8 l# ~$ _! b0 x, H, d3 l/ {
阅读需求:: [1 e3 `! j' Z5 \2 W
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
0 x+ Y/ x0 u1 a9 {" g
, j; o; @5 h; J7 O[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
, E9 D% \7 o9 j4 o9 d7 ?; l0 |" j! ^% w2 Y% s8 U: z
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
4 N) ^( ]0 e( t# P9 U' ?$ `: @1 W/ C. Q+ r' ]  u# E
这是修改过单位的,单位为mm

4 `* B4 s# c2 c0 ?# `! i; A) F4 T+ V5 h
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
# d, I* _8 c( b; \/ N: D0 K2 ~在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
, Q; N1 V# N/ Z- p$ c! @解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
" _- l7 j! k' ?' A- C        x = 10 * Sin(2 * t)
, j2 B1 W: Z1 A. R        y = 16 * Cos(t)
- n8 \  x2 e4 Y" Z% M# c        z = 0.1 * t ^ 2 + 13 v, p+ q' N1 r
将参数方程写入宏,参数t的范围取0-10,精度0.3。
- W! @) s+ A6 a; B4 h. A" L* F" g1 V* w8 W
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
6 e3 m4 N8 |/ @. ^& g3 C第一步:取得应用函数及用法6 D- L5 X6 a2 ^! @1 a* ]: h) E
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏! L/ a( D3 B- t8 F
1、新建零件: K3 O9 m* E  l% A/ Q) u
这是从别人那里学来的方法,比自动生成的用起来更方便。
& F3 ?$ k+ z# U, |) H( d8 B
7 w. ?2 x! b! d* N+ \, N5 @8 E& Y'建立新零件& m3 a! y6 E8 z7 z8 P6 J0 l/ b6 A
    Set swApp = Application.SldWorks
) U- J! `( g  J    Set Part = swApp.NewPart; Y3 q8 e6 C7 \
    Set Part = swApp.ActiveDoc
# p$ a: I) Q7 p. i% U+ `3 F) Y8 k, ^' b( u  q' k9 S
2、声明部分
3 o; h5 `9 Q$ E添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
4 b* u8 o- {! _( V+ W; u. Y* _8 e8 @& Y
'程序需要的变量声明6 |1 @7 I6 e2 ~2 ~( F
Dim n As Long 'SW曲线点的计数器
7 n. J5 }, @* y8 z/ t) m( m$ C. b; U3 P& c+ z; }
Dim x As Currency
- r9 {5 r7 W1 n: r$ e/ QDim y As Currency
/ j' x8 \) J0 u* M+ |Dim z As Currency
+ M1 v  |* g; g, g( R
, ~! V8 j0 Y; n  W2 y/ u  NDim t As Currency '简化计算所用的参数变量+ X; w1 D' }1 R4 l5 Z" S
Dim tMax As Currency0 j  \% e4 [, M5 E6 V; M8 h
Dim tMin As Currency
& `4 M* W) Z! M; c8 v  a' z. YDim tStep As Currency9 c* x) C' q! c- q0 V
, p9 U! D& Q, a4 ?' A
3、运算和绘图部分( v* H2 M4 o  ~2 Z1 U
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。3 U2 H( E* c1 ?& u, O
For t = tMin To tMax Step tStep
" j' s# B/ [7 ]1 h1 i4 H) Z    '给定公式# ~; T- [, X- T8 y
        x = t
$ [& C* q7 X) G$ u: F. K  [        y = t ^ 3 + 5 + t ^ 2 - 1    , l' o8 k$ x( m! w& x7 R
        z = 0/ C: c  W+ o3 g
'绘图
1 |4 _; @' w# [+ S, PPart.SketchSpline n, x, y, z
+ L4 |& Q6 m5 y) i
. T& Z. a! [% J4 u1 D'循环计数
+ J6 S6 c5 A. \( e0 V1 r4 v- Un = n - 1' ~% j  |' r# Z/ v$ `3 h

3 j: J$ \" x6 P( O  RNext t9 J- Y% L! w. x0 k! O' ?

2 X0 {1 Q' t0 X9 g; S5 J. l第三步:调试
1 j* j# t1 k/ H9 S9 y- W1 T如果有报错,看看是否在运算过程中出现了分母为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 发表
# v2 l9 p* H3 J- [0 e4 R$ d# [% K相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~0 F! `" v7 _" @! M
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
/ j, o5 e0 K8 S/ U9 |

3 J7 f6 k' q) s( V, u好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,; ?- C) ]# A: _
下来参考一下
6 q9 t: ?/ ~; L' L; e; i$ X感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!7 C, b: X& M. G, R0 t8 V

3 m. `5 E8 v" A8 [) V: o4 Z0 Q4 r不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
8 z( v$ p6 @0 i, r% t, x( E! }- n, o, @+ @$ J
[ 本帖最后由 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 发表
- R: a* f( y3 n9 |笨笨大大的教程的确做得很好,受教了,谢谢!2 R3 E( _1 {: K% ^; g+ s' o1 s
, p0 M6 \2 C- k. z) `' `2 R
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
6 a! E8 \: }9 [3 S6 G( i& ?
- v6 |; x# ^) x* x  R
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:* N; G" y' ~) n" D& x" ~; Q2 e
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
4 d8 f; g. o. J6 h但是缺点就是:- u8 E' b* A7 I, j, m/ j
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
: P' L: K7 {- d  W5 K0 ^/ ^. _6 x
8 ~1 D4 F  i: H+ Y1 [所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
! i, W. E* s; v2 a6 p+ l, y; J另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表( O' g1 a. J* t* W5 v

' \1 p8 B9 Z, {( H  O6 i6 @+ _/ ]8 [) [
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:9 t. F1 K  C5 V' E! [/ R4 p7 ~
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
2 @. f. P- K* d- N* c2 n6 F8 r但是缺点就是:
7 \2 S: H" v! R# l    1、 ...
7 X0 Y0 j- [4 r3 c# w1 |

( _$ S$ L$ W, h% r+ M, {3 w+ k      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
( p7 U; W2 T# H' c7 L      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。; ]2 z  S0 p5 [
      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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