QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源  W" |) [3 L; N2 Z# r
从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
! K6 A$ v. r1 A: @- D本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html1 M: X5 L! Z  n8 I; g) |
教程目的:& t! s2 E/ e, l
使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。6 p) b% R" k4 v. V* q0 P2 Q
笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。, a" a3 c6 Y1 A1 F/ \& V
+ T9 F; d; w1 J8 M
阅读需求:* _3 R6 t3 K+ t' {' V' F
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。* ~9 }# y0 L) U. U/ x9 z

# X- c" E( S; A5 o( L9 F[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
6 }& |& Z  }4 H; {1 m) a1 {5 a
* O/ t/ A( w+ a+ O6 o- i; @!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!
/ Y6 @! @" x3 X$ G) g# ?
1 i2 f5 }$ [: v" b1 Q5 J- d8 ?# J这是修改过单位的,单位为mm

3 y% a2 p+ B* M1 [' y& V- e
# s3 j) B1 `3 Z- ?7 l. W% p[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层
用法:
2 R* c7 F0 L0 H8 ]' `在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层
举例:二次变距的八字截面螺旋函数曲线
0 ~7 _1 i) O( G1 t  J解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
$ Q2 |; F4 n6 k, M        x = 10 * Sin(2 * t)
) m$ ^' b! Q$ Z$ X  R        y = 16 * Cos(t)) V9 R! b* a  K% t
        z = 0.1 * t ^ 2 + 1
: m4 j7 O* N0 P  O7 d将参数方程写入宏,参数t的范围取0-10,精度0.3。
, m9 P: U0 x& ]! _" l6 x: z9 l% m/ b5 h* T6 }9 a9 @9 P
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层
下面来讲编写过程8 a( F2 e6 I% Z8 i- _; G# @
第一步:取得应用函数及用法
9 ]! k7 @) l# \3 O; V% {- ]打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层
第二步:更改宏1 K, n. s. I$ }. J3 B
1、新建零件9 f; m. j% g, k- g
这是从别人那里学来的方法,比自动生成的用起来更方便。' U# n) O( R. o7 r# G
- r7 U+ D. A+ b( p: [
'建立新零件4 o4 r4 u9 s) R+ n. z8 ]
    Set swApp = Application.SldWorks
& z7 v! X" y, o+ T    Set Part = swApp.NewPart
" \. _! z  ?2 V. g( a5 B1 K/ B    Set Part = swApp.ActiveDoc
; F( i9 j* B3 h9 ~" y& B. M& x
8 M* w, c! d& B9 L( w2、声明部分
- z; q1 ?" G  z- e, o& u添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用4 {# c3 b$ C, E+ u# A

- M- |: o/ v( E* V/ l+ _; L1 b'程序需要的变量声明9 ^. {& O( g8 f" Z% \1 O" P6 f
Dim n As Long 'SW曲线点的计数器4 _! B5 p1 H) Z
/ E. ?$ p2 h! b: Z- @, t: A8 b9 `
Dim x As Currency: k5 I/ X) O8 i: |1 ]/ `
Dim y As Currency5 X" }6 K# L; ~' s( ~
Dim z As Currency' V9 ^; |- E3 Q) T8 O$ Z  ?& e
$ x5 f9 U+ l: [, w
Dim t As Currency '简化计算所用的参数变量% ]* G, o# @, h$ \4 f9 T; B
Dim tMax As Currency2 d" F0 f4 b2 O9 T; l/ H
Dim tMin As Currency
' r% M6 V! m% ]: n7 kDim tStep As Currency) A. w" g) O% x3 i
0 q  f" p  r* Y" i5 x; i( R
3、运算和绘图部分
- m2 T( A/ w1 v; h& h绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。' a* A" `( [  {) v+ V# G, w
For t = tMin To tMax Step tStep
; h& U0 d0 }& q+ Z: F    '给定公式* S% W, J' J/ o4 J5 o  `& B8 ?( F# A
        x = t& X" X0 {) e6 S% y0 Y6 S
        y = t ^ 3 + 5 + t ^ 2 - 1   
8 j& z3 \5 s6 w/ T: [        z = 0
8 v9 U+ j+ y8 x% m) k3 V'绘图
" n/ B& U# ^4 Z0 Z2 U+ `6 }8 M8 TPart.SketchSpline n, x, y, z
$ l- ]+ c( Y( x  B
# ?: g9 `5 B; y$ i8 q'循环计数  m) Z$ p* z& Q7 S! E* C& M
n = n - 1
( `  `& K' m& e9 Y+ v9 ]
0 c( B( ?' v# ^3 q6 {# bNext t' a9 J% @% g/ e, \, l5 }& R
, }, p! ?# e& p$ m
第三步:调试
( y' Y4 s# O! s) _3 S% v4 e如果有报错,看看是否在运算过程中出现了分母为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 i, a* H" l% \/ ~; C: D+ M+ p相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
6 E1 v; v  B3 F# f, _% j. [( S/ k但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

: R- l6 ?5 m, v6 r6 n2 G5 i+ |+ W6 {  P; q2 F: s2 Y0 V
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层
这个有点意思,
4 y" S: W) ~0 B: _下来参考一下: ]- D+ c8 h% C% i' }
感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层
笨笨大大的教程的确做得很好,受教了,谢谢!
$ s8 n; @, s/ m$ |/ Q
- G  C. Q: ?% i, x不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。
5 X& @2 b/ z& I) N0 X/ r
0 j1 p+ H8 ]) \3 r[ 本帖最后由 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 发表" N. f6 v2 h  S
笨笨大大的教程的确做得很好,受教了,谢谢!$ Y; J& _) T: a/ T
, @7 g( f  P. O% s
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...

" J9 i7 @# s" R# j2 g6 u/ S& b( x' ~  w2 q& ~
呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
- Y- b/ {2 d# J# E    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
# e8 O+ `  @: Q  m1 e但是缺点就是:
1 D6 `0 u. H" @4 M2 w* L5 g    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。
2 [, t6 P* r" p. }" q
' S2 u: d1 W: P4 O& q+ I所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。5 m8 n7 l1 Q$ o( m3 P& R
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层
原帖由 SW笨笨 于 2006-10-4 11:17 发表+ q% u& I" _/ h: D: i2 q+ O& W1 K1 }

/ f: W4 Y+ w2 H, R  j
, t8 I* r- v5 c$ ]( c/ D呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:2 Y- ^5 Y* [$ B9 k* [
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
& f3 b( o" [. x5 z, g. n  Q# p+ ^( r0 W( d/ {但是缺点就是:2 m+ C8 `! g% u! j: T9 `7 W9 H: u
    1、 ...
. @7 l3 J  i# }

; o( a  o- B* `/ K) P      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
/ e7 z1 J' A( U* _6 \' B0 Y( i      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。4 `5 ~; j  X2 p1 p* e* B
      再次谢谢笨笨大大的教程。
 楼主| 发表于 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 )

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