QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 9354|回复: 36
收起左侧

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

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

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

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

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

( p5 y. ?7 N- M0 v9 e: i1 a这是修改过单位的,单位为mm

; c) S8 `! w4 T1 z5 R' {8 x" `" h$ W0 i& o
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:: D7 B8 X/ x; q
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线! K8 y9 v$ F5 E% C" |5 x; E
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
; F4 c3 {4 ^+ M5 n/ l        x = 10 * Sin(2 * t)  D5 [2 i% y4 _7 y5 }
        y = 16 * Cos(t)
) q$ T% Q9 z# i  {        z = 0.1 * t ^ 2 + 1
+ b$ l: n1 r; E  V2 I7 l2 l' y, P将参数方程写入宏,参数t的范围取0-10,精度0.3。
1 `4 P, `6 g" E8 e% f( y  N; F& a* Y; p' U% c2 m
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程$ W3 X. F; h+ H2 z6 w
第一步:取得应用函数及用法
3 _  `+ p0 T8 f6 _4 A! O+ Z* h打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏* M* \3 e# p* d/ }, a9 i* a
1、新建零件
9 A( Z" e4 A. |0 ]. N这是从别人那里学来的方法,比自动生成的用起来更方便。; [6 n/ a; Z4 M+ V9 n& X

/ Z& d$ k3 I& f: q  [0 W'建立新零件6 _9 y" V  e# q5 @$ M5 j
    Set swApp = Application.SldWorks9 s% V* }% g8 h
    Set Part = swApp.NewPart3 \7 \6 h$ r4 |' }' [
    Set Part = swApp.ActiveDoc. p! q: o/ a. |7 y5 R4 C$ ?

0 a# x& o$ g" K2、声明部分2 V+ ~0 `3 V3 @9 z! x# V5 M- d3 N
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
" H4 |" W1 u4 u5 ]- D) ~8 ^
4 v4 @/ W/ a: \2 W'程序需要的变量声明+ }$ ^( U# d9 H% n0 o
Dim n As Long 'SW曲线点的计数器
$ F# V9 N: C% b/ a
% ~% N9 D) {) l  @. V( |6 LDim x As Currency' g5 _, ~1 P; ]1 s
Dim y As Currency9 M2 Z1 ?. ]9 i! V% V
Dim z As Currency
4 x1 N" o. c4 ^4 Y- ]% X4 w
, S+ m  C8 j( x! J* gDim t As Currency '简化计算所用的参数变量! N2 i$ l8 N: ?+ e/ ?$ V! P
Dim tMax As Currency
. [$ k) H  g( o7 B) i4 O* RDim tMin As Currency  D* J- q7 F, F
Dim tStep As Currency' w, e9 V8 V1 |. m7 V5 J7 H* ^

0 d6 ~( Y# e& j, R- w3、运算和绘图部分9 Z8 |) S, X) a* ?
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。8 [) d9 }8 w+ y' ^
For t = tMin To tMax Step tStep0 U- ]! X6 |( z. I- V1 L" d" A/ w
    '给定公式
! J; t3 Q4 t- z# r2 _& P7 d        x = t5 y6 o: U! B0 F1 E$ t0 k5 d
        y = t ^ 3 + 5 + t ^ 2 - 1   
5 h+ O# W8 l/ v2 P8 O        z = 0
9 B" K6 \# I2 b- I'绘图% u, M3 u( E% K1 A7 K& Q. u# O. B& W
Part.SketchSpline n, x, y, z
8 j: q$ t0 A( d, d# j' _- P8 B0 W9 {
5 ]- ?5 _- t; c/ V& J% H, \'循环计数( s$ y1 t6 V/ C! B/ y! r2 L) x
n = n - 13 S- `: [) A% k  P% L4 ?# O
6 `* L' ^  t2 h: S+ g
Next t1 R% b7 }& A' M. M# E$ R

) ^* R# j/ e! j: E9 v$ |7 J第三步:调试
6 ?" M/ D. c7 w" p2 q如果有报错,看看是否在运算过程中出现了分母为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 发表
8 A! h6 w! s+ _! G* K相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~6 A: \! x) n% L$ z0 i* ^9 c
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
; ^1 [# M$ h" T3 ]1 Z% b
! l$ E8 T; [; X/ {4 o- C3 s5 ]
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
# k. L+ N/ ]$ J" |* o下来参考一下; X. u/ s! _" }6 C. }7 x1 v
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
+ Y1 N; X2 v4 i9 ]' b6 O# \
8 K, u4 w: f! K% W0 ^: H) x不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。" |3 ~( [  z/ o* W' i: M0 @
0 ~! Y# E; g3 `
[ 本帖最后由 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 发表
' y# P/ Q1 S2 J笨笨大大的教程的确做得很好,受教了,谢谢!
# u( C3 w. @$ _' |4 W5 m- i# X$ V: H
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

. E5 c- {. J. U" I. j  R8 i0 b' e3 Z0 j& c: s& m
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:6 D4 d, @. j3 x8 m1 A
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
0 D3 g( `9 b+ K' @! N& _但是缺点就是:
$ o" q; D# |5 Y    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。! g5 D3 l3 c  E" s) o% r  e9 {0 C

0 L, o  c( V0 e, U8 `所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
* x  r9 }3 g* T, @0 G$ K另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
- |* n: ]+ l7 |7 o# s
  i  N+ u* T. A! J* T0 y2 }' z! R
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:8 p( O7 E6 u+ Q3 s4 l  x) l$ O$ d
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
( b$ Y, Z( Z: m8 F1 D. E$ U但是缺点就是:
& [8 ?0 V  O  Z; x5 |    1、 ...

6 J' z/ U6 W# b; f6 ]( I) N7 G 3 o8 M/ k8 O' s6 {, S
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
4 e0 H7 B, J& r2 Q0 F8 I      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
+ e+ A# p. K0 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 )

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