QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
, ^! h& I/ e8 ^+ O从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。8 S8 g; v: z. \2 B; f
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
  X8 X. u) L! c9 K- l教程目的:
  b/ V; C+ J6 S+ q9 H使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。6 {0 G. V) Z& I5 w1 Q' J
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。' F2 |0 R2 I; J0 ~3 t: k% a" Q
# G; ]: u2 M6 {' U; Z
阅读需求:, ^  M8 i$ R/ P  L" U4 G
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
+ o+ G4 D0 V- Q5 d/ X2 T; e; H# {: X5 L" Q9 G& V/ a& Q
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
. }# o. g" W: D3 V2 o7 k8 V$ B* f
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
+ p2 a, z9 T" s) ~1 O4 a
4 b* [0 {. Y7 T: P& c6 v1 a2 B4 }7 \这是修改过单位的,单位为mm
$ w4 S9 ]: I5 V+ Z* P% L
$ R) K  D2 G% [' l+ l6 J
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
1 f3 @! }% [+ g, X0 J& ]0 F在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
! ]$ v& g, R6 s7 J$ r! Z解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,/ v- h& k. o: A3 r
        x = 10 * Sin(2 * t)
* ?1 n' E: H% }4 J, }        y = 16 * Cos(t)  P( u6 t4 O3 s
        z = 0.1 * t ^ 2 + 11 d" D; w8 V6 i6 m" U: h
将参数方程写入宏,参数t的范围取0-10,精度0.3。
. G. I! Q/ ?( f3 ]8 Y7 x) w( A7 j% c, r
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程2 p9 d( [; K/ ^5 Z/ `3 P; u
第一步:取得应用函数及用法
4 P- b6 }2 F% G1 ?打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏5 I0 k: C/ T' z+ E2 l( Y
1、新建零件, p/ p( [$ S' x
这是从别人那里学来的方法,比自动生成的用起来更方便。. o& q. x; ^- T! s# E

/ }- F& L1 z7 ^1 V'建立新零件
( k8 c) ]) a5 R    Set swApp = Application.SldWorks
; @" Y" {. b& l9 O2 [( w    Set Part = swApp.NewPart" z& [7 ~; s9 f  E* W5 x
    Set Part = swApp.ActiveDoc6 ^7 @  p/ m5 s

  |% R7 q5 o3 R4 a# `2、声明部分
: @; e  v" @/ i; l9 n; p添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用+ s* R" ^3 }2 Z  b% q- x$ m1 M# w8 Y
. J9 ~& ^  ]$ \. ?3 R( l. ?
'程序需要的变量声明: [7 p; \/ l( }% G) X
Dim n As Long 'SW曲线点的计数器
% L* k2 f7 k5 m$ i( ?# T9 M2 Z3 u
' _6 ?  N4 f7 ~/ rDim x As Currency, i6 g: [1 d. @7 c, y9 D% y5 M
Dim y As Currency
* J; s7 X/ E3 x  HDim z As Currency
  G( C6 z' d( T8 A( j! k! u0 D/ f, ?1 M4 A: F' M
Dim t As Currency '简化计算所用的参数变量$ |7 T" L0 ]' q4 \8 @
Dim tMax As Currency" z# U( e  u" Z- r; m3 F3 g
Dim tMin As Currency
0 C) r) p! i: ~+ y. l% RDim tStep As Currency: _2 d5 f6 a2 E1 V# I2 G6 D% Z( H

' X$ e* W1 F0 z4 ?# E$ z0 o8 I3、运算和绘图部分
9 H9 o# ?7 [- h7 M/ j% V; [" {. e绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。% t# Y5 i  h' z4 P# w% C
For t = tMin To tMax Step tStep
1 [' n+ B0 o1 ^+ c    '给定公式
3 l2 l' Y* w' c0 s) o        x = t5 i' m/ G0 f) p) C0 j
        y = t ^ 3 + 5 + t ^ 2 - 1   
0 N0 }& z9 f: M4 {% r# P. {9 Z& I" }        z = 04 t9 p2 G. C9 [: O2 S/ R
'绘图& a' H9 ], Q! q$ B' }: T
Part.SketchSpline n, x, y, z$ v5 ]- X5 ~3 Z) a

, N! ?; b; O. R; g'循环计数
% L- y0 _( L% Q, c- h9 t8 nn = n - 1
9 x2 B* r- B" j4 b0 ^: t! y$ ^  N1 h6 x
Next t7 D( g& K& N9 x# I4 a7 m- |# F

: i  I* Y% G3 u. G5 r  I# b1 ?4 f第三步:调试
! V; S+ V+ O, V# I如果有报错,看看是否在运算过程中出现了分母为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 发表
' d$ Y% \8 O2 p. p; u1 v% `相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~' B3 B4 B9 W7 Z( e' M  k; W
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

3 s/ ~$ g  S7 D& v3 _* T4 L
6 x8 D5 B( O' P$ X* ]5 h好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,8 `' y, i0 ^, o+ ]% V8 s
下来参考一下
+ I$ t$ r7 q. H! ]9 V' m感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
' v5 V, J" p7 I) d' `
- M( Z5 I0 Z3 _" l. Q7 @不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
! o5 d. w+ P# N6 z% \, O. ]7 B) n4 Z0 j' k4 m8 p0 O3 d! X' n$ @% e
[ 本帖最后由 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 发表5 _/ ~  v4 p8 o4 o8 U6 q( l6 q
笨笨大大的教程的确做得很好,受教了,谢谢!
7 V7 z9 T& n, o% D5 a/ i2 b/ ~, W6 i1 g
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
: Z' Z4 a/ E& m+ L3 A
4 B9 i8 h" b0 k% s
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:/ M( X1 X5 |% z' Y* R
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
3 ]; \) g0 n5 ~, j但是缺点就是:
1 D% c7 d  i5 G3 I    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。1 \! c9 `4 _% m

7 {: [; _* [- Y所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
" J' s# B% R/ i7 ?) _另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表1 W9 ?, P& e4 C; a2 N
- X3 `% n$ R. n, `) c/ F+ N  Q
  a( f3 E! r+ k
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
' f6 D, O+ d' R5 j/ z    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。6 P. L" ^5 r: `* @/ c: c
但是缺点就是:! a0 d1 l2 G% ]- U4 @. M/ C# v
    1、 ...

9 i# t# H6 q7 V8 y1 [, b  p 7 [( @' b+ r2 p8 Q1 d% P& X5 s
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。3 e( N* U4 M+ a% m! w$ ]( n
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
7 u3 v" R3 T, p, C9 s! N/ _      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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