QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源5 d4 T' b5 m7 e0 N5 w3 [2 g
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。+ m* l# K, v1 ]
本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html
/ J/ j3 a: C  W- r教程目的:
$ w# e2 A5 ]* ]" u使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
; k: x+ z) |% ~: H笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
: y% n2 J0 W  i5 h% `  \; _4 W9 R% p
  S+ c( B. ^* N2 {& {. I阅读需求:
5 b; j4 m# w& ~7 L: S0 j5 [7 p简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。; C4 K; E- F8 w5 R9 {5 l
6 a8 T0 Z' z0 t: z
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
% C4 t- b3 u6 R$ ~9 v6 V) [- C4 a) x' q( e1 G
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!: y( I" V) |% y: C- y
# m5 R1 R& ]6 E! {$ a! W9 X1 f
这是修改过单位的,单位为mm

" _; \5 B6 s2 _6 t1 O$ W3 u) ~. \9 M
[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层
用法:
, T# y3 F6 l% X4 w5 e: R: {在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层
举例:二次变距的八字截面螺旋函数曲线. O0 ~$ J0 c  p7 j; c/ D/ V
解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,9 p! V+ A. S2 `; ~7 E* `# X0 H
        x = 10 * Sin(2 * t)& l5 ^% E& [; O7 h) h
        y = 16 * Cos(t)
; B/ h  [1 p( z0 _% {# @7 `; A        z = 0.1 * t ^ 2 + 1
6 f/ F( U- T3 ?) y! i% E7 x将参数方程写入宏,参数t的范围取0-10,精度0.3。
7 I/ M; p5 P* i4 g  r  B
' ]. |6 A. y& F$ ]1 Y+ x4 f; d$ H6 }[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层
下面来讲编写过程
6 Y5 H/ Z5 L4 y) A8 H: ]第一步:取得应用函数及用法
( G) c7 I0 w5 M; g* X打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层
第二步:更改宏
4 E8 a8 m3 S; n1 w1、新建零件9 Y" I4 M" ^0 P5 W# \2 H! L3 I
这是从别人那里学来的方法,比自动生成的用起来更方便。
$ w1 `8 ^1 K, \2 {8 N' B& d
7 k( ^% V$ K4 _# f0 o& e3 v4 p'建立新零件
8 H' l1 x9 K( y( D- i6 T    Set swApp = Application.SldWorks
7 D9 u) l4 M. j* u, [+ Y% Z% V5 x* k' g    Set Part = swApp.NewPart
2 K5 @# J/ _* X6 i+ u9 c9 Q    Set Part = swApp.ActiveDoc
" g$ A- L* a- u6 m( o  F/ Q$ F4 Q/ `. T% }$ }' w- H
2、声明部分
7 B% P( L! h/ Q7 A* T添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用1 `: X: E& }% J0 |
! J( w$ @) q: Y9 \9 U
'程序需要的变量声明
, [& O8 r3 \6 U* ?& i% _5 i7 ]Dim n As Long 'SW曲线点的计数器- {$ ?3 Y/ F' h8 {6 G, V4 t, ~

% V6 x, }: |( m9 c+ mDim x As Currency
+ w! R( P4 h. ^- X7 T' s% Q. dDim y As Currency
+ Z; T" b5 W; T4 w1 v& iDim z As Currency
/ X7 L2 W$ Z% h8 O1 r# s& p  h
Dim t As Currency '简化计算所用的参数变量
2 U  g# U) ^. W1 vDim tMax As Currency
4 Q/ k0 \$ ^# W7 ZDim tMin As Currency
: B3 ~( A2 Z; v) O; N0 u( SDim tStep As Currency
0 P& K& u: G( w$ L7 l, d( z: q$ R7 t5 L
3、运算和绘图部分2 |6 R% @% v5 F6 o8 ~# x! a7 L* [
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
- A- Y( U" H& C- E) NFor t = tMin To tMax Step tStep
$ w, T  i! Z0 r    '给定公式- O- l; M- X- j) {2 H7 a) d
        x = t
: h/ k3 l2 A/ z( h. _$ I! s        y = t ^ 3 + 5 + t ^ 2 - 1   
3 d5 L. X0 R% k( b" s, l        z = 0
6 X& Z* X2 C7 N- M/ |4 G; U8 z'绘图
" `& X; q. ]2 K) v9 APart.SketchSpline n, x, y, z
3 t/ B8 r) Q) z# F& H, K% [- D, I
'循环计数9 a1 S' M8 {7 w% y
n = n - 1
! y! S( Z& V3 h+ F& ]* v- q4 ]: B9 ~5 n9 c/ v. h
Next t
7 }$ D! {8 l5 L% x$ W( L: G+ B# w8 M' n1 Y% L" B  r# u, {, I
第三步:调试- H# ^7 u2 i- L  w# E, O8 J& c
如果有报错,看看是否在运算过程中出现了分母为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 发表0 n, r8 R7 h; k6 u9 Z! J
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
( a5 q# o/ R. l4 ]但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...
& d, Q) C9 j! B' J1 n5 R7 ~
- U1 s( o8 D8 J0 h6 T
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层
这个有点意思,7 e- ^8 h5 Y! \: Z& r
下来参考一下
/ d0 a4 e# S; f! i% D感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层
笨笨大大的教程的确做得很好,受教了,谢谢!
' r+ ?# r' a6 A7 d
& M6 G* t- ]% Y5 [7 F6 e不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
: _% R- Y& [) x) w, A5 W, Y& z9 j
[ 本帖最后由 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 发表
' B& I/ t6 c/ Q. @( U2 F. O5 M笨笨大大的教程的确做得很好,受教了,谢谢!2 S+ V- k$ Z: T6 s* \

  S! v- i1 r1 c: r+ T6 x" n" d不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
+ z* J$ u* o5 u- q: t

- H: R# D  y8 h呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:: m! k& ^8 ?5 F: ?7 k2 t
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。5 P' h) [! E3 k  J
但是缺点就是:" m2 X8 z7 o3 k" W! V2 _7 n
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。, u7 ?: @- C# t' Q8 p
! y% g) T/ K  R% M( B
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
! Y4 @+ U8 `% a1 c$ a* ]3 ~另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层
原帖由 SW笨笨 于 2006-10-4 11:17 发表
" j( z$ e1 A8 b( v3 J8 ~+ g- ?8 a8 @$ E2 d/ W

# C$ j0 I" s, ^# \呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:; a9 C+ T" K7 I4 T
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。( |7 W) O/ {, T
但是缺点就是:# D* u/ H" M( |
    1、 ...
8 ?% X  ?( w# s( J  r6 o

% E& E7 P* \& m4 G4 \- {3 l. z      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。6 @! F" h2 l# C- Y3 ?8 ]3 x9 T
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
( Z1 J5 t, ~' ]! I" g( r      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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