QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
8 H( `+ S9 d' h' N: E从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
& v6 X) _9 J0 ^" h  Q4 ~' N本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
& H) U! ?! F4 {: @教程目的:
7 T* j3 g3 a0 f使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
  L4 ^& b& A; y8 ^, W笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
) A* Z+ v/ Y! j6 m# @
3 \4 w6 [1 H3 @# v) t: D6 f阅读需求:8 x( i; R  n7 ~
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
; a0 h6 u) N# |& m( `( B  B+ w8 J- J# [5 G1 ?. S$ `
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。1 ^1 l' v* v/ H9 p4 k" `
5 F9 v7 z7 H: e4 t- Q3 U0 s% g
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!* b4 A6 u( j7 ]  O) E

, c# |! S1 n' l4 J这是修改过单位的,单位为mm

7 f% S8 s9 I2 q0 v1 t! {# v' ^8 M; R/ m/ z1 d
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:/ s6 \3 o* i. Z) R, G" w7 a
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线( K9 Z8 r4 V! X2 s% F% `5 W
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
  G6 u' T6 m+ P4 O. Z, I$ ]        x = 10 * Sin(2 * t)& N% v. ^3 Y7 X9 `1 s
        y = 16 * Cos(t)
4 h, F& N2 F. P$ }        z = 0.1 * t ^ 2 + 1
8 s  M8 H1 d' }0 [) V* }将参数方程写入宏,参数t的范围取0-10,精度0.3。
0 s! g- {" g- }5 \! {# }& U
9 X6 r" X  h/ L[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
  Y) Z( X' k) g第一步:取得应用函数及用法
5 h: @1 K  C  o2 m# S5 K- C  Y2 z打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏
, P% X5 E0 A8 I, P7 T/ C* M& M1、新建零件" ^+ F. g) U: A# W
这是从别人那里学来的方法,比自动生成的用起来更方便。0 ?+ v. _% w+ R+ k0 S! c
8 X* q! g4 J  p( ~' ]/ Z4 w
'建立新零件
! k* d  X, B) \; d    Set swApp = Application.SldWorks0 O& |0 s: `7 k; o5 @" d) v
    Set Part = swApp.NewPart# |7 x' w* x9 U5 A) Y
    Set Part = swApp.ActiveDoc8 t8 X/ n# Y3 _- l' `

4 @; Z: S4 L# ^' ?* W0 m+ y" R2、声明部分# |+ t- N+ P+ |: W0 K0 x! C
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
8 R# ~: b+ x1 U. X0 a5 H2 U9 x5 n7 X* J' @: m7 G1 C; h8 |4 o9 B
'程序需要的变量声明
7 X9 |0 ~& ~; @! ?+ D* p, r! c, IDim n As Long 'SW曲线点的计数器
0 i( L) K: u" c; @: ^8 K1 J0 Q6 ~3 Y( }) I" l) i) c
Dim x As Currency
7 Q- n/ d4 K% V' HDim y As Currency! l3 L& s0 I. [* F' d4 A( _& Q  G
Dim z As Currency
9 Q' H$ A  Y7 i% m1 F& ]- ^' T" K2 c, F
Dim t As Currency '简化计算所用的参数变量
/ R, j  }9 s" A2 X% ], `Dim tMax As Currency
! ^, A  K* |! E2 c8 [8 JDim tMin As Currency
8 |& E6 ]1 P4 T- k) xDim tStep As Currency
! F! I4 f. B5 A, T7 z# A3 u! o3 S; \8 c4 O$ S" b9 g
3、运算和绘图部分4 y( R  C7 E. l$ x$ s( i3 h
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
) }1 G1 o( a! g$ V2 @For t = tMin To tMax Step tStep
; {* _. R, V, ?. A    '给定公式
* B) v6 l7 p- q: B) L        x = t
- V" r9 h! [) ?0 `        y = t ^ 3 + 5 + t ^ 2 - 1   
- E) E7 `' w6 s" d$ B9 T        z = 0' I' e6 U4 m: ?: l% q3 [- |. Z" w
'绘图
$ w* U  D; Z8 ]) O# {9 p  y( I* zPart.SketchSpline n, x, y, z; z3 _; q$ d$ C2 V
- _1 {9 ]! u2 B* |9 g) `/ P6 X
'循环计数; u9 e6 t& o5 M( m4 a& M
n = n - 1
0 T' q0 D' @9 {  |/ S- ^' H3 r, t) M" @* {
Next t
; e" `7 ]$ Z, }8 p3 o
% I1 n$ @* S- e' z" H2 [) ]第三步:调试
3 p- @4 r) Q4 \% E- z2 R如果有报错,看看是否在运算过程中出现了分母为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 发表
3 v  e1 e0 x: i- z' C相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~( X  D+ s- L4 U" s
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
: T; |- t5 L# T4 k. s6 L

* N7 _& ^# Q7 {) e! Z* B7 D0 a. T4 h好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,) e. c5 L# t$ I
下来参考一下# `0 R& P, P# \3 _$ V/ B; y
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!# x+ m7 [2 L+ C9 ?) A( G* ^

- z% y1 {9 D, [( Z: }$ J3 E6 h不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
6 [" l* Z. H; r4 z# Z  q: `$ C* E  u- V5 i
[ 本帖最后由 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 发表
- _1 a6 }1 e# ]4 D笨笨大大的教程的确做得很好,受教了,谢谢!
8 B6 Z0 m9 s# i2 R. t7 M# O1 S" ]  I
( L$ U. |8 R8 R0 c1 O5 [( T8 w; ]! w不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

4 T; z% V7 l" w4 Y/ S" b
8 P4 i/ F# K& n- s& H8 T呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:1 G) t: ~/ b& X9 @  p, h
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。4 y" b! U8 R$ j$ A2 y
但是缺点就是:
- c: ]  E% ~3 u( u" P    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。: S1 o) g- h0 t) w* S6 p3 S3 `/ K

8 ~1 U9 `/ D% o. ?& A8 D; T所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。1 d/ h( {# \7 M5 m& j
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表$ o: V; I' K' Q6 T
7 r& ?8 }# T6 {  `& N1 M
% ]' }$ ~7 D) D( C( }# G8 c! o
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:5 Y: ~; o$ Q7 e
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。5 A& ?: @1 v' K7 i0 U3 f$ a
但是缺点就是:$ J' q- X; F/ E1 Z7 }; e  I* v( n7 ^
    1、 ...
9 A2 _0 o( f; }8 r% ^  A; u
! D4 d+ P7 K( o" C
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。% D! R( R! W7 y2 i6 G7 k$ y
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
, _4 w! E: g1 X  D      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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