QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
系统
[系统通知] 平台第一个项目外包——项目拼多;正式上线,欢迎各单位个人有外包、设计、采购、加工需求的,在此寻找更牛的解决方案
2021-07-01
查看: 8282|回复: 36
收起左侧

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

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

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

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

x
教程来源
/ ^: [$ Z9 {& G6 v& p从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
4 {0 [+ I3 c0 }) s) @& T4 M本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html( L9 A; l  O( w+ Z
教程目的:, {/ d3 {- G: {. Q. Q$ {" \( T
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。9 o6 ~: T8 x+ r% |/ `3 G. S
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。% |; Q/ x% s* x9 r3 Z; i/ B; }
, I( @( N' t+ p1 E2 {
阅读需求:
& P) }- Y, J$ a0 F3 y- `+ }简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。8 q' d$ y% J! ^3 ?# e
. R' c) V6 o( o5 e3 T! \, h
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。# |: c4 s+ b) C

1 o; j; u. V2 K8 \# `& U!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
! a2 \+ K- i+ C3 o
5 ~) i, }5 c, U$ ~这是修改过单位的,单位为mm
) H6 W5 l& G8 i

( @0 |" b' M5 G" A  B5 q9 ^[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层
用法:8 B4 i( |+ p: w4 W/ l
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层
举例:二次变距的八字截面螺旋函数曲线5 |5 [6 g! a( |/ T2 u; Z! {# u
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,/ f' S+ m8 u1 G7 z
        x = 10 * Sin(2 * t)
$ o' K0 e+ ^' i5 T' ]        y = 16 * Cos(t)
: a% m0 T2 Y- o: I# o: M        z = 0.1 * t ^ 2 + 1& a* o9 i  Z- g( L
将参数方程写入宏,参数t的范围取0-10,精度0.3。. S( d: I6 J; p3 G: |4 T7 P

2 j% Z2 o. z  q" G. U/ r1 R[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层
下面来讲编写过程
' F- K+ q/ ]; h, S) x, ^. X# I第一步:取得应用函数及用法4 @( p9 T5 y8 o( f2 k- n0 I+ ?4 C
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层
第二步:更改宏5 P# h! J$ K) Q3 m* @/ `+ x7 B
1、新建零件; t& c; S! ^2 }; a7 S( D& @
这是从别人那里学来的方法,比自动生成的用起来更方便。2 d9 P: ^8 y( I6 _& P* h
/ Y" Z$ w- d& O; g8 J
'建立新零件) {6 k/ z. u$ q
    Set swApp = Application.SldWorks9 O+ G& ~% `9 V  O! K0 V* \
    Set Part = swApp.NewPart
- m1 f: _9 V1 |' K% B) C' ?    Set Part = swApp.ActiveDoc
0 X+ S# ^! B# x' I# Z- e& m& B- V$ v) M
2、声明部分
+ a3 e& l8 W, H: D0 e0 G- h添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
5 L# Q2 ^! v% T. ^& h  f3 j0 b' H: I
% W( E) ?% n6 x: n% Y7 s: N'程序需要的变量声明
) [1 l. i* |- W5 bDim n As Long 'SW曲线点的计数器9 \6 \# W" W+ K

0 `# H* q1 F' ]7 m8 ~; FDim x As Currency' P+ M) Q- |( U: f2 d5 t
Dim y As Currency' d3 u- t: v0 k. F* P- [
Dim z As Currency
. c2 W8 [: J/ U9 i! `7 N
1 G* a" P: |* ~( r; G! HDim t As Currency '简化计算所用的参数变量' ~3 Q5 ?/ B  K
Dim tMax As Currency" ~( s3 e' a  F! ]
Dim tMin As Currency
" e6 g+ t' k) X" x! YDim tStep As Currency
- d$ v/ e& E* `! H$ N/ ?; o; x3 y$ w5 Z+ j7 C2 i5 C
3、运算和绘图部分7 l. s$ z4 o1 e- a# s8 ]0 \' |
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
& X- A3 z+ X2 O. o! _" ~$ t9 ?For t = tMin To tMax Step tStep' b/ ^. O/ S0 z6 r/ h0 a
    '给定公式6 @" ]  p$ c/ h) r+ M
        x = t2 ~3 l3 x; F2 U* ]0 J
        y = t ^ 3 + 5 + t ^ 2 - 1    8 s& b. s8 _5 U# S6 @, G
        z = 0
3 h% M# F$ _% G0 B7 q. H  S'绘图
% s# ]$ Q4 `; @3 x. s* pPart.SketchSpline n, x, y, z3 d- v. j; ?7 i! N7 X- M
  x( l! ?/ U1 A
'循环计数8 T9 A: L" W1 w/ ^
n = n - 1
) i- F! e3 C, j
! F$ E6 S  X" B) X7 A' iNext t3 T3 M; C& ]% q) X5 k0 [- z

0 Q6 j  @* n, ~' ^第三步:调试
# L" V% G" [3 H! A8 v如果有报错,看看是否在运算过程中出现了分母为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+ E) x0 a7 o" f% f* H2 b
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
) t6 @. k- n) n" k; X# |但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

" ]% R  ^3 I. L1 m/ t
* }2 x4 K1 C0 @  j6 }6 d) [好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层
这个有点意思,; U6 P5 h$ ]7 J$ {
下来参考一下
: n# Y1 _) G' k- P" V; |感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层
笨笨大大的教程的确做得很好,受教了,谢谢!
  B9 F1 ?9 F* G. D" G
$ L& g6 L) t" s6 }( F( Z: S( q不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。$ f! ^) E7 J* J2 p; G1 X
) F$ [! E3 m% B6 ?
[ 本帖最后由 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 w3 Y! L* l( I! A* B. i
笨笨大大的教程的确做得很好,受教了,谢谢!4 p$ s: Y+ [  _6 [3 b/ {

3 h/ }& e4 N, b不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
/ b" g! ]+ z& D; J2 r1 D& C, W
/ m; m! F; h% o) v' Z
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
7 Q4 v+ y; j9 O2 l9 ?4 Q# N0 G- k    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
1 `7 \/ e1 k# {但是缺点就是:
! Z% Q$ o  k; ^  @    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。9 D$ a0 S* h& V- g0 Y4 A- Z

0 `+ a8 i9 m+ ~; P/ m所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。" D3 ^/ r7 Z1 |2 R; ]. W$ T
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层
原帖由 SW笨笨 于 2006-10-4 11:17 发表
7 R6 Y5 v8 B* o) e7 f
. p/ r% B2 e: _" U2 D" ^: h' x' m% ~. ]
9 v- V3 ~2 |1 Y呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:( U! A- T5 }. {: G* O2 T( @+ Y- Y
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
& \  p6 B8 q: J2 b1 B但是缺点就是:0 M6 D4 ]1 y( D$ g) {8 ^+ D
    1、 ...

6 i( ^/ i( a3 D # f/ o) A8 {1 W1 b: R7 X
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
" |% S$ k# W* M2 z$ ]3 m+ P      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
% Z& h- p* B1 ]      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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