QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 9443|回复: 36
收起左侧

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

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

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

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

x
教程来源0 X* m5 g5 r" Y, R, J; }
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。- m% q/ u- k: D9 X8 ]
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html1 b- n- g( W6 v) g
教程目的:" V9 s+ s3 _& X& I: q2 j
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。# B+ J0 S% v# f+ Y1 g, i
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。5 s! C1 ~7 M: i& p
  p- Y; F# p* q& U" O
阅读需求:) U- H* x, x2 O, t8 V; g' }
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。, ?; Y" Q9 T/ A' ^

2 l6 j4 e- t! ?7 D+ a& ]; ~[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
  b! p& O" l$ j. g
3 I& ?( A  o$ {/ a!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!: ~( @1 f8 S% {
4 @+ E: q8 o5 t* a$ J0 e
这是修改过单位的,单位为mm

, O( b+ d5 T# y0 s6 b5 c' \* R, \& J) a* M+ ]6 t/ m
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 282

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
. r* o) l$ F, Z, m% g在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
! R7 [8 k- j0 z8 ]7 S解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
) F1 x9 y# L+ ?9 t        x = 10 * Sin(2 * t)) U# w& h2 L/ y$ J0 f
        y = 16 * Cos(t)+ }, W* E0 V2 J3 o9 s: j
        z = 0.1 * t ^ 2 + 1
: n# _! v4 g& G: z5 {) p. K将参数方程写入宏,参数t的范围取0-10,精度0.3。+ d1 l! i4 d& U. t! g
, e+ D. {8 S& Q+ ~
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
7 M& H1 N9 o2 p  y. ?2 i, r" `" g第一步:取得应用函数及用法& k7 L7 R4 S# W- H3 R. _7 b" D7 ~
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏3 M5 K! g. M) Y4 q. e
1、新建零件
; T+ I  e  V5 U1 b2 g0 ^这是从别人那里学来的方法,比自动生成的用起来更方便。6 d+ h$ h, w9 j: x2 X  L# P9 G: @

8 S5 v' J: f7 F'建立新零件
9 f. c1 O1 g) w5 h    Set swApp = Application.SldWorks+ I4 @1 }# g; m! k1 a
    Set Part = swApp.NewPart6 z  L: L* ]# S& J! ~; C
    Set Part = swApp.ActiveDoc5 x6 [0 l; f7 b; W  `* Z4 v+ F2 [, H
9 `8 J# |; G5 D* V
2、声明部分
  a8 i( q: L5 D1 Q( x$ s$ B' @3 W添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
+ W7 \) i2 p6 P* F# k$ e" J0 F+ S, d6 M4 \3 j8 J% E
'程序需要的变量声明
- R- T4 @/ U5 F! H, g( `Dim n As Long 'SW曲线点的计数器9 o+ Y- [7 ^+ k5 h
4 Y% P3 M- G% a8 K: E1 ~
Dim x As Currency$ O) F/ B, _, b8 @& ?
Dim y As Currency
6 E+ h* }0 k: e4 J3 |4 GDim z As Currency' ]" K( @0 i; H5 n  `

/ _% T& A! T! _. [5 D! a" z: \Dim t As Currency '简化计算所用的参数变量
% |' U3 i6 ?( ^* O8 iDim tMax As Currency* R5 f8 p% _, \9 z3 ~
Dim tMin As Currency
# I9 n0 T$ \6 |" @Dim tStep As Currency6 y/ s1 }1 K$ C& z. i: P- D$ D

7 T- \# X/ M( G4 x* U7 a9 J% h3、运算和绘图部分
# d& E0 ?9 G, w* j: Q7 ]+ V' h绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
9 n% d- J" {3 k! @: P. RFor t = tMin To tMax Step tStep( [: R, Y+ Y$ L! f/ V( R4 Y
    '给定公式
) H( C2 C0 M' m3 v% @; O        x = t
9 N" n6 E) A! Y        y = t ^ 3 + 5 + t ^ 2 - 1   
2 A1 o' F$ p* F* d, B% {& f+ a+ I% ?& [        z = 04 N) r2 w& x& w2 \6 c
'绘图
" q' q$ D1 i$ y0 e1 J+ g/ QPart.SketchSpline n, x, y, z5 s. {; n/ F" P

* O; t5 Y/ x; x, n, ~3 p5 z+ r'循环计数
% y5 Z5 |4 Y6 E6 ~8 dn = n - 15 h6 Q" P' m& Q' e, [: g+ |

! G, K% c, i! {0 DNext t8 U4 B0 l$ C0 p7 a. w, i
" x0 H* s8 w8 T% a9 t5 I& F8 m& p) P
第三步:调试
' t( P9 j( y' y# e: z- 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 发表
& J; r6 C0 x; G2 O* M5 h相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~9 I, I( V" x8 X+ Q6 C' W5 @
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
. P4 b8 U' N5 H  }# X( K9 o
) i& L. |8 h5 L* z  y/ G
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
8 i4 d, Z3 u1 T+ \3 a8 \下来参考一下
. N% a# Q2 S# ~- l感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!
: V) l' s; Q7 M/ [
9 u8 W- P$ f+ `6 J不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。1 @( ?0 Y( O' \

+ h$ c% z4 ]3 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 发表
2 @' Q2 t3 |1 _) X5 u$ G# u1 J1 ^笨笨大大的教程的确做得很好,受教了,谢谢!4 C1 _% S: l  D# S
% ~. s) e9 S/ h( H$ @4 |3 M' Y
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

; i) v- ~: T$ h! u! B% L8 {3 V
" k$ L2 K4 s- I4 [; Q' c呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:3 X4 P6 u" [& t5 ~
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
% ]" k1 C/ z/ W2 \3 o1 f但是缺点就是:
6 w- E1 [' s3 M8 ?6 S$ F+ R    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。) h9 B% i- h. \/ P8 q2 j# Y9 S
! Y7 r, P5 o1 N2 k' K/ n
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。; S  \  S$ w4 o6 Z# p
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
5 [  |( E) d' Z! X: I- K+ O0 D) d# n5 a" w/ G& Q* G
  X! A4 _* F# D7 v3 n
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:' {& h$ X# m/ w; b$ I! a
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。2 `- V" {4 q% m1 G8 N
但是缺点就是:) r9 |2 M" D; c3 K
    1、 ...

, n/ e, @0 C! x& W
% W7 y6 u* N5 \( n      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
7 K. F2 ]* ?$ I" h3 i) D- l* [      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。- i/ H% b- ]* k2 i2 g4 S4 e
      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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