QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 9349|回复: 36
收起左侧

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

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

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

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

x
教程来源
& \9 H$ X3 L) ~+ {从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
% M9 d3 ~2 C+ p: h% o6 ]. T) G6 M本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
+ ~2 j2 I1 A+ b; \( e; a教程目的:5 I. N) s8 j$ W& r. j: E+ u& n
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。1 i2 Z, a  Z0 N( z4 P# T
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。) X8 R& V8 \( E1 y6 u3 s& E1 U
' r( T# P1 c' U. |. w
阅读需求:
- a! X* {) W" X* l) w0 {6 {) m- B9 g简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。9 t4 L2 G; Q( N, _( E
! q: s3 l, L% h% R3 y& `
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层 来自: 中国北京
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
1 D; C7 k" K# z. J9 D" ^  H1 e2 z3 Q- p
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
# n" a+ X- V  a5 f, K* [; C# R- o9 I5 o8 o/ Y- Z/ W
这是修改过单位的,单位为mm
* ?+ M  {1 @  l' u* J/ {# [, b$ Q
7 m+ B/ g. g6 H. o8 [. s5 P
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层 来自: 中国北京
用法:
& ~# f" f5 X) r: b/ G! O7 c/ H在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层 来自: 中国北京
举例:二次变距的八字截面螺旋函数曲线
! b% X, ~7 Y: B1 P& T$ ]! \2 r% V解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,& M' E% @- [/ u( `6 O9 Q" s
        x = 10 * Sin(2 * t)2 v: y- m/ S2 C$ v) W5 L+ E
        y = 16 * Cos(t)
, Q' p+ z5 W/ k8 a2 c        z = 0.1 * t ^ 2 + 15 m1 c5 v$ S0 l1 O2 {7 T& c: }, }' E/ M+ f
将参数方程写入宏,参数t的范围取0-10,精度0.3。- b0 x# @; q  w5 ^" D$ `

% e; {9 K. m5 v: S) q" y[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层 来自: 中国北京
下面来讲编写过程
, a' `& z* E5 ~: x) N( v" p第一步:取得应用函数及用法
; E! E# @4 `. e5 E打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层 来自: 中国北京
第二步:更改宏
& L7 _6 t/ ^6 _; G6 V& q; B7 ?+ L8 w1、新建零件% n: J" q3 a$ o4 }+ n
这是从别人那里学来的方法,比自动生成的用起来更方便。
8 ?& |% m+ ?8 _. h4 s+ i+ {% Y7 R
# Q' E. U; e! M1 N% P'建立新零件  q$ c7 [: m( B1 ^; m6 L
    Set swApp = Application.SldWorks" w; t% H  ], q/ _% G
    Set Part = swApp.NewPart
( k- j+ f+ Y% {8 H2 @% I    Set Part = swApp.ActiveDoc
; ?: \, `3 x( k; p: \* i6 Y. P8 U9 K$ F& C) X! h8 D
2、声明部分
7 n+ S5 R2 S8 F添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
" }# W5 R  q( a  ^1 w1 z
8 M! j% X+ ?7 j% \; s' m. t'程序需要的变量声明: L6 P! @  {- N% o; M
Dim n As Long 'SW曲线点的计数器
2 ^! \4 ]3 C0 w' @8 H1 ^' c4 K5 L
Dim x As Currency) w; S  ?8 W! q$ x
Dim y As Currency1 p- Z, x* j8 m% |8 |: r
Dim z As Currency7 G6 Z& e# l% D. [9 ?8 O. x

$ C  e: v3 \% l& k# P3 D, z  J# ]Dim t As Currency '简化计算所用的参数变量
' X2 D8 R' a( S' J- W7 }# Y( k* UDim tMax As Currency% f; I5 c2 Y/ _8 M0 l; |9 o6 ]
Dim tMin As Currency4 w' _5 }) R( P4 t7 u# ]. \
Dim tStep As Currency
% @; ~6 H$ r/ \% Q
) A! u& z/ R0 p0 o9 |  r$ s3、运算和绘图部分
" h) U: N+ \% [/ Y1 b/ O绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。2 B; {2 y) h, E8 \7 x1 n
For t = tMin To tMax Step tStep
5 K" u" p" ^- w    '给定公式
  b& @$ s# _2 c. N% b8 ~5 ]7 a; {        x = t
- g; }& S$ n, D1 p. @" @2 }        y = t ^ 3 + 5 + t ^ 2 - 1    1 D8 t5 |0 m1 f3 j1 s" ?% P
        z = 0
+ [" W4 l) G7 Q8 K: U'绘图
% m5 l9 @/ W, A: R5 q; x* zPart.SketchSpline n, x, y, z
) ~* \: l0 F7 u3 r, {+ ]( I) `  A2 R! k8 H, k. f0 o9 D  a. o! X
'循环计数
; P4 Y# x; q) z2 H5 ]* G6 Un = n - 1
) _$ R8 a- \& c% F' x' {% S( Y& V3 Y2 Z  U8 x9 ]
Next t
/ B  r4 N, `8 C# |; m/ e4 p" L9 W, G" o7 W! {, `: G0 u
第三步:调试
* A' V6 g0 h* D  X# L# ~; k如果有报错,看看是否在运算过程中出现了分母为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 发表) J9 U9 h1 M" q
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~% o; W1 k2 Y& M/ m) R
但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
. V$ p# x& K$ I* y5 I
; U% X' F, o& [8 C* \% c
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层 来自: 中国浙江嘉兴
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层 来自: 中国重庆
这个有点意思,
, y( Q7 P! K  M下来参考一下
2 e, a, X+ Q; H3 z4 V0 Y4 F( e感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层 来自: 中国上海
笨笨大大的教程的确做得很好,受教了,谢谢!, N6 f, t4 j$ S( }" x( P1 s
, ?1 ~9 a; l- w9 Z
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
, c  a3 I) |( ?  a$ b1 m/ ?0 k) 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 发表
5 e2 i) y# r6 d4 v( S; k笨笨大大的教程的确做得很好,受教了,谢谢!
: \" Q" u( [* A! k0 }* x5 T8 |) a& P# j8 A; x3 J* ]2 a2 q
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

: c( t2 f- D, R$ ]! B6 y4 a" q9 n
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
1 }2 N9 n: n4 v3 Z    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。' E# j3 ?7 O/ H* y! M
但是缺点就是:
  _0 k  ]) U- u+ ?$ a    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
+ f5 \! E5 Y7 ~7 ~
, d* D' h# P3 J5 J所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
: C1 N3 f1 K6 l0 v" ~另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层 来自: 中国上海
原帖由 SW笨笨 于 2006-10-4 11:17 发表
/ [4 _5 h! q4 Q: [. J; @1 d0 f) w" x( q" n6 a' D

3 c2 W; z7 |* H6 v" d- ~3 v呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
, Q9 ~$ l2 B$ r, I3 ?    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
! Y" X6 [' g3 `- u+ w但是缺点就是:
( A0 z0 F8 A$ @+ Y    1、 ...

" R, M: Y( @! U5 r% N7 O
9 n: O2 L8 q" }& n! V4 w      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
1 O+ ]1 Y  O* _+ d: T      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
9 U( T  R! n  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 )

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