QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
) F1 ^5 {* M1 ?4 I6 v从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
. r. C# c- i; e本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html* j( s0 Z- T2 B9 P; X
教程目的:, Y5 T( n% [" a- `/ D& n
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
% f  O3 v3 j; g笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
& |* [: l* G$ B* x
; i) Z( L& B4 s9 `阅读需求:
8 Z- D0 v7 {! @* l& q; d简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
$ k; K7 H: F/ [7 |6 Z  m
6 `3 w, m, S6 i: q[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。( s2 F* A& i4 b; s; m4 l- \- m9 D& \
# I+ X4 z6 S. k0 A
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
3 g+ s  H$ w, j/ |7 V; ^0 ]
6 G! T& \4 ?  v0 I2 n) O这是修改过单位的,单位为mm
/ v* x/ R" u+ f: [/ H

7 k9 T6 `8 f/ `5 l4 y7 r) Y4 [[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 282

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
4 U( U2 E! |- z在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
; C& c' h- P4 r0 {. D' T解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
3 B! ~6 t4 F) Q& z5 g4 O9 [        x = 10 * Sin(2 * t)
$ ]6 }1 \0 g  L/ @* t        y = 16 * Cos(t)
- {7 @; `( G2 [( ^) X2 P2 A        z = 0.1 * t ^ 2 + 1
4 b4 @# @0 h0 X, k( N4 {将参数方程写入宏,参数t的范围取0-10,精度0.3。
' K8 n9 q  u$ q" Z
/ }, I5 _* m! \$ x) d" e[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
/ h( m* y; Q& \第一步:取得应用函数及用法
% A& _, j* [4 W. K/ V! C9 Q- Z1 q打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏0 a0 P! Z- ]) X
1、新建零件
' p9 g/ s5 `$ e# n+ K4 v" t这是从别人那里学来的方法,比自动生成的用起来更方便。
1 D: t7 y4 R9 `7 Y
4 S3 A' Q, ]7 i% @4 l( ^  r'建立新零件
9 s4 a/ c8 S2 P$ E" p4 R    Set swApp = Application.SldWorks
3 \( s' a5 [2 m& O; W    Set Part = swApp.NewPart
& P9 C( `- j4 c8 f2 x( K    Set Part = swApp.ActiveDoc
/ \8 X' ?1 _1 s/ y6 v8 s  \* B3 _% k) B) A$ @0 _4 [4 e5 g
2、声明部分  ?9 Z/ ^0 X6 b
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
. a; R. {0 W( v4 x, a) m" L: K+ j& k  G5 E6 [2 _! M) s
'程序需要的变量声明0 j& t1 S4 S0 U* I9 X8 `
Dim n As Long 'SW曲线点的计数器
/ S8 g: m' J- U2 L1 r7 v! I8 r1 X4 w! b# S) K  @
Dim x As Currency
% @0 I3 V4 \- Y! G, F. GDim y As Currency8 F# n4 H+ U3 E7 L! ^8 K) j5 j
Dim z As Currency
) }0 i; m) s' B* l5 W3 F2 W8 ?8 n$ ?& y* e
Dim t As Currency '简化计算所用的参数变量
( r1 ~" H" N- `Dim tMax As Currency  ?9 q: E% G! o* x/ a2 c
Dim tMin As Currency4 U  W* Z7 @5 e- M+ i1 `
Dim tStep As Currency
8 E+ h* v* ~0 G; C/ Z5 v+ L; y3 p' i: V$ S$ a- Y) P$ H
3、运算和绘图部分
5 c3 ^9 ^7 G4 N  f& R0 t0 T绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
' v$ f( Z' B& n1 Y+ L. c, ?For t = tMin To tMax Step tStep
4 s" E$ U. M4 I& Z: k    '给定公式1 K" a5 v3 @/ I$ E7 r0 j" n
        x = t9 `) L% I8 u3 a" ]3 m
        y = t ^ 3 + 5 + t ^ 2 - 1    . }& k8 Q8 |5 y2 g' F' R7 }
        z = 0- @7 u8 g* Q3 n! u# ^5 c
'绘图
' q0 G6 `+ \# [7 |. tPart.SketchSpline n, x, y, z/ E$ V5 t3 d- ]+ v# T/ a# F, X
* g4 G1 v+ K: P
'循环计数
+ t' n, \" g* j9 k( on = n - 1
/ }; T1 q. r0 k2 J" Y
4 ~2 R0 s- _$ ~2 cNext t- n. k4 j+ c8 x

% Q* @/ M7 T* T) q/ r; m第三步:调试
6 z- p- H1 y5 o" a: p/ V4 g1 ~( p如果有报错,看看是否在运算过程中出现了分母为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 发表
0 K: L  r* L) l) m  A% n相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
$ V' w4 }$ T& y' |但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

( {/ A) `8 I: q+ D- y2 {% @) y
; k% Z9 Q; j& z& A4 [好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
1 P# s2 T% G' k1 ~9 a' W4 ^7 n下来参考一下
: h0 E$ U% x& J+ x4 e+ |) N感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
- n. s* a$ q' q6 I/ m* L
8 t" Y+ {% p! H4 w不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。  `7 }5 G/ [5 M3 V+ V

3 B6 m/ W' n( h. {  J& j! ^- @8 l[ 本帖最后由 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 发表
" f; R  P' l: w* `. A2 R笨笨大大的教程的确做得很好,受教了,谢谢!
& L% x1 D/ e! S! H8 }" G. {, ]( L, H" S& d' H
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

2 ?' o) Q2 O, d& L  ?' x- V8 c, x. S1 \
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
0 r" p1 {! y( _" K2 d    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
: r  g8 r  O, ~% q. ~: Q但是缺点就是:
% {1 S* `. U+ c4 C& o    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
% w& ^5 z  a5 ^& N; N# X  ~; H" A * t+ g2 j2 @2 B# C% E- Q
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。* ^, n) O9 `" N3 M: k+ a2 @1 T
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
2 ?; f6 E: P3 R) a/ a
( M* x% I- A) J0 {! r: o5 n) Y6 @. x5 ~) L" Z9 }+ d4 n
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
0 ~) r/ |+ r% [1 q: t! _7 B    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
8 z6 t! u" m0 X6 v& M但是缺点就是:% C  Q, J& Y( O$ {' ?  Q. z
    1、 ...
  \$ A* ?$ v2 f: i- B& d: }& A% Z0 ^) G
. l3 L( B, H& Z8 `
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
$ C+ v) {; j2 E/ k  T7 }      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。3 D; p( f+ P- o* U" `' b
      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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