QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
教程来源
8 }6 L3 s+ V7 A2 `$ ~从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
! y* H# U" X: W6 R1 h本教程下载:http://www.3dportal.cn/discuz/thread-102121-1-1.html0 J2 T' c* o. c8 J0 F" J# j
教程目的:
$ p9 t: G+ v1 `8 P9 ?使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
+ B% b1 ^( d9 \0 J' ]. }) m笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
' |4 @9 F2 \( C% N& T& K* Q4 V0 B4 S; \$ q; ^, f, j& Z* \
阅读需求:
- K3 g, c3 w0 g4 I$ T简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。
% K- h" l3 k3 d$ M0 |2 d( h! I4 N" q
[ 本帖最后由 SW笨笨 于 2006-10-1 19:34 编辑 ]
Cap.jpg
 楼主| 发表于 2006-10-1 19:24:29 | 显示全部楼层
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。
; p8 e" d3 Y3 M% ~2 }5 i* n) j6 g( o2 P' t# `8 X5 z: F
!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!7 u5 o; A: }$ X2 L1 n8 R
1 I; _9 p3 `2 I: G( V
这是修改过单位的,单位为mm
- O  m1 a6 g; {

7 F5 m; y' x3 c8 v" c8 w[ 本帖最后由 SW笨笨 于 2006-10-1 20:35 编辑 ]

笨笨曲线宏 For SW2007.rar

8.09 KB, 下载次数: 281

 楼主| 发表于 2006-10-1 19:26:44 | 显示全部楼层
用法:" a  G0 y( U! o. q8 m
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
Cap2.jpg
 楼主| 发表于 2006-10-1 19:28:21 | 显示全部楼层
举例:二次变距的八字截面螺旋函数曲线
& Q: V  S! L6 P4 @! d5 f' v0 M解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
" ?$ V8 C2 u" C        x = 10 * Sin(2 * t)
# E5 S, F' V+ w5 v        y = 16 * Cos(t)
7 u, e+ d" x+ ^        z = 0.1 * t ^ 2 + 1* P& |- @# ^+ `4 W" Y% H/ n
将参数方程写入宏,参数t的范围取0-10,精度0.3。* f9 {# L; S6 ?. }/ ^) f, h
* \3 q# y# k, H8 P
[ 本帖最后由 SW笨笨 于 2006-10-4 11:29 编辑 ]
Cap4.jpg
 楼主| 发表于 2006-10-1 19:29:54 | 显示全部楼层
下面来讲编写过程
) Q( G. F+ a. C( [$ t第一步:取得应用函数及用法3 q4 `+ _+ t% _, B. j, o
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
Cap3.jpg
 楼主| 发表于 2006-10-1 19:31:58 | 显示全部楼层
第二步:更改宏- k$ u- y. c2 H/ A4 b# t. {
1、新建零件7 [* [+ \$ H; \- p' d- h
这是从别人那里学来的方法,比自动生成的用起来更方便。
9 M' P* H7 m& F; R+ T+ p  S
7 u# T8 R$ [  f+ {- O/ x'建立新零件
7 o# U  h0 T% O" M2 O    Set swApp = Application.SldWorks; i$ D$ ?7 u0 |2 U, R; g& y
    Set Part = swApp.NewPart
2 v. p% \8 }2 ~2 ^9 n; U% R    Set Part = swApp.ActiveDoc) }* o/ H9 S% F6 F& R0 P" _

6 Q2 A- ?, Y$ q- ]( [6 H4 h- }2、声明部分$ [1 z( ~9 a& X  h, l6 J4 r
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用
4 n! T+ D( N2 D" x# R
; W7 j; S, `9 {4 r'程序需要的变量声明/ L3 j6 o; o. a/ u/ [' s
Dim n As Long 'SW曲线点的计数器: G- I+ r- v. z5 T2 C# u. y
; a. M7 Z" u" z2 J5 E. r
Dim x As Currency7 D1 t2 |1 ]6 B2 U" H
Dim y As Currency9 }5 ~2 c8 X" V- T8 Z# b* J
Dim z As Currency
2 `+ V+ p' Q8 \5 I5 g/ S
0 w3 [5 e3 a+ HDim t As Currency '简化计算所用的参数变量( @4 ?; {7 P+ |8 k) n1 v" w4 x- g) ?
Dim tMax As Currency. G6 O/ J2 e2 I( Z- B+ {
Dim tMin As Currency5 ~8 k: U( [! d6 R# d7 x
Dim tStep As Currency
, X) e* y" |5 T4 J7 X5 n1 Q+ F$ t" M/ a% R
3、运算和绘图部分7 H" U$ Z! a8 x! e: S
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。$ H0 t' q% W- s: n8 g9 V+ @* q+ o% |
For t = tMin To tMax Step tStep) P! K4 S/ f" [* s! T
    '给定公式
6 l* v9 _6 j& A* q6 @        x = t
4 D2 w6 h9 }9 S& ^8 i        y = t ^ 3 + 5 + t ^ 2 - 1   
! S; t! o, Y" K% e6 R        z = 0
3 p, F2 @8 V2 m'绘图, I4 D; ~6 Z- T) y" d
Part.SketchSpline n, x, y, z
- ~3 ^! q3 t; p! e$ U! y! Z2 n! M) C* G
'循环计数
/ n  _$ K: Q) _n = n - 10 G: M3 r9 Q- c* H
2 r# k; I0 [3 s+ s. X! u+ d  F
Next t  b1 U& T4 w! I0 g2 C$ J0 X& E

: l' b% Y/ w/ m1 `  h% x) E第三步:调试( Y' F1 g4 U3 @! a6 L- Q. n
如果有报错,看看是否在运算过程中出现了分母为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 发表! c3 k: c' P. r/ n0 F2 q# ]! B) v
相当精辟的贴,以后这类问题应该不是问题了,楼主在这方面研究得非常到位了~~~~
* ^8 H& d3 S8 ?; e. |# a/ `: y但依个人浅见,这句Part.SketchSpline n, x, y, z如果写为Part.SketchSpline n, 0.001*x,0.001* y,0.001* z要好些,因为Part.SketchS ...

; v! _* ^& `& C& D7 o$ A: i& H0 r- H0 H
好主意,修改后重新传
发表于 2006-10-3 10:41:42 | 显示全部楼层
好呀,今天终于开眼了,以前没有碰到边这类问题,顶。
发表于 2006-10-3 14:21:45 | 显示全部楼层
这个有点意思,
6 [% ?4 d- \! `0 S  Y下来参考一下
# S- M( P5 `8 e4 D. m感谢楼主
发表于 2006-10-3 17:13:45 | 显示全部楼层
笨笨大大的教程的确做得很好,受教了,谢谢!5 D5 @. r* B$ Q" X# \% v: B
. u6 b3 z6 r. r+ z
不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。* k$ c# r- t' Q* j5 U) C

; {+ L4 y& Y' c; T[ 本帖最后由 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 发表, o; @4 @0 ^+ E$ m. y0 r1 B7 Q: i
笨笨大大的教程的确做得很好,受教了,谢谢!
2 f4 q# L! v. B- }3 V+ ?, b
! d  @3 J( N/ ?, ?不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过 ...
' S4 \% y. @4 _

. J- U# i, y* M0 f# A: Y9 M% A: h呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:( z7 H) _% H9 g" C, s. M
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
8 [' H, A1 s% ]$ E- y但是缺点就是:
" Q) w1 R8 u# u    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。" }/ z: G3 K0 Y/ c
9 r3 l; c2 K# S. n: q" S
所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。- X2 r! P6 M0 A4 q4 J) `4 c" M. A6 }
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。
发表于 2006-10-4 12:19:49 | 显示全部楼层
原帖由 SW笨笨 于 2006-10-4 11:17 发表8 Q7 A9 K& l. F

* A  g% ~( }+ A' k0 Q
+ z# i) t' L' D. ?3 |呵呵,螺旋曲面和外形曲面交线法做的,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
/ Y3 [  I  t2 r, o) |- F# m5 V  R    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。. i0 i/ N! J7 z2 k9 S* W
但是缺点就是:, u! R* E- ?% D3 z8 W; W/ o6 N
    1、 ...

2 K$ c$ L5 V: d4 ^% b* \5 m& l - y/ k% z7 q/ Y2 A' [2 l
      完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
- X. N9 Y2 ^' A7 q      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。' P" E9 S# E, Y( L+ p* 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 )

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