iCAx开思网

标题: 笨笨教新手之十——35行代码!解决公式曲线输入 [打印本页]

作者: SW笨笨    时间: 2006-10-1 19:18
标题: 笨笨教新手之十——35行代码!解决公式曲线输入
教程来源
        从见到SW2001到学习2003一直到现在的2007,骚窝好像对公式曲线的输入一直不屑一顾。自己甚至为SW2005编写过一个小的插件——笨笨曲线,来进行这个工作。但是编写过程中发现90%的工作量都来自对用户输入的判读和安全运算,因此中途停止了开发工作。而且到了SW2006中发现API并不是全部兼容的,这样的工作量实在不是笨笨这个业余爱好者所能承受的。这次又见到这个问题,干脆把程序中最精华的代码写成宏,由有使用者自行直接更改代码来运行,一个三百多行代码的插件转眼间变成了一个只有35行代码的宏文件。虽然没有人机交互界面,但是功能却比原来强大了许多。
        本教程下载:https://www.3dportal.cn/discuz/thread-102121-1-1.html
教程目的:
        使用最简单的方法解决Solidworks的公式曲线绘制问题,包括二维曲线、三维曲线,支持加减乘除、乘方、级数、对数、三角函数……所有数学运算。但是对于分段函数,由用户自己解决。
        笨教程分为两个部分,前面讲述这个宏的使用方法,后面讲述宏的编写过程。
       
阅读需求:
简单的Solidworks2007应用基础,会用宏的基本操作,简单的VB6应用基础。这些都在笨笨的另一篇教程《笨笨教新手之八——最简单二次开发步骤》里面有所提到。

[ 本帖最后由 SW笨笨 于 2006-10-1 19:29 编辑 ]
作者: SW笨笨    时间: 2006-10-1 19:20
废话少说,先来实惠的。这是宏文件下载。笨笨写的宏文件,已经写了很详细的注释,大家下载后可以编辑成自己喜欢的公式然后运行得到曲线。

!!!注意不适合分段函数,比如Y=1/X,这样的函数请分段分别求解!!!

这是修改单位为mm的宏


[ 本帖最后由 SW笨笨 于 2006-10-1 20:32 编辑 ]
作者: SW笨笨    时间: 2006-10-1 19:24
用法:
在图中两处代码中,=后面输入相应的代码或方程式。凡是VB中支持的函数运算的表达方法都可以使用,包括加减乘除,乘方,三角函数,对数,甚至逻辑运算……使用方法用VB帮助来搜索就行了。需要高中的代数方程知识:
作者: SW笨笨    时间: 2006-10-1 19:26
举例:二次变距的八字截面螺旋函数曲线

解:设XY为横截面,Z方向为螺距,使用曲线XY截面投影点与X轴夹角为参数t,
        x = 10 * Sin(2 * t)
        y = 16 * Cos(t)
        z = 0.1 * t ^ 2 + 1
将参数方程写入宏,参数t的范围取0-10,精度0.3。

[ 本帖最后由 SW笨笨 于 2006-10-4 11:23 编辑 ]
作者: SW笨笨    时间: 2006-10-1 19:27
下面来讲编写过程
第一步:取得应用函数及用法
打开Solidworks2007,首先打开宏的录制,对新建零件、插入3D草图、画三维样条曲线、退出草图的动作进行录制。完成后关闭宏的录制,打开编辑这个宏。这些请参考《笨笨教新手之八——最简单二次开发步骤》,使用编辑宏,打开刚刚录制的宏,找到画曲线的函数以及用法。不啰嗦了,那个教程里面已经很详细了。
作者: SW笨笨    时间: 2006-10-1 19:28
第二步:更改宏
1、新建零件
这是从别人那里学来的方法,比自动生成的用起来更方便。

'建立新零件
    Set swApp = Application.SldWorks
    Set Part = swApp.NewPart
    Set Part = swApp.ActiveDoc

2、声明部分
添加所需要的参数t及其范围和精度,计数器n,函数变量x,y,z的声明,注意数据类型的使用

'程序需要的变量声明
Dim n As Long 'SW曲线点的计数器

Dim x As Currency
Dim y As Currency
Dim z As Currency

Dim t As Currency '简化计算所用的参数变量
Dim tMax As Currency
Dim tMin As Currency
Dim tStep As Currency

3、运算和绘图部分
绘图部分只有一个函数,就是曲线的创建函数,通过运算得到各个点数值,并进行运算和绘图。整体采用最简单的循环语句,参数从小到大按照精度依次变化。
For t = tMin To tMax Step tStep
    '给定公式
        x = t
        y = t ^ 3 + 5 + t ^ 2 - 1   
        z = 0
'绘图
Part.SketchSpline n, x, y, z

'循环计数
n = n - 1

Next t

第三步:调试
如果有报错,看看是否在运算过程中出现了分母为0的情况,也就是出现了函数的分段情况,适当更改函数的范围就可以了。
作者: 菜豆    时间: 2006-10-1 20:26
不错,还有注释。。。
作者: SW笨笨    时间: 2006-10-1 20:34
原帖由 菜豆 于 2006-10-1 20:26 发表
不错,还有注释。。。


没注释不方便别人用啦,嘻嘻。也方便自己改程序呦
作者: 剑魔3k    时间: 2006-10-1 21:14
顶!
作者: mccjx    时间: 2006-10-1 21:18
国庆大礼,谢笨笨兄!
作者: doshelp    时间: 2006-10-1 23:58
多谢,学习学习。
作者: zdb2003    时间: 2006-10-2 08:34

厉害!
作者: ltq59    时间: 2006-10-3 12:57
不懂二次开发.但这确实是个好东西,强顶
作者: tigerapzhao    时间: 2006-10-3 16:16
学习
作者: w_hs    时间: 2006-10-3 17:18
笨笨大大的教程的确做得很好,受教了,谢谢!

不过大大在4楼的一句话:“二次变距的八字截面螺旋函数曲线(这个恐怕没有软件能够建模的,嘻嘻)”却未必见得。请看我按你的方程建模所作的图,而且精度完全超过你的要求。

[ 本帖最后由 w_hs 于 2006-10-3 17:21 编辑 ]
作者: 冰大    时间: 2006-10-3 17:52
SW笨笨先生的教程很好,以简单方法解释如何善用SW的 二次开发。

但是,偶还是比较欣赏w_hs先生的扫描方式,得到曲线的精度高。

SW笨笨先生以离散数据绘画样条曲线,只能像而不能准,
以这样的曲线作为基础继续建立模型的话,可能会带来隐患,
因此在实际用途上,还是w_hs先生的方法比较好,既灵活又准确。
作者: w_hs    时间: 2006-10-3 20:18
原帖由 冰大 于 2006-10-3 17:52 发表
SW笨笨先生的教程很好,以简单方法解释如何善用SW的 二次开发。

但是,偶还是比较欣赏w_hs先生的扫描方式,得到曲线的精度高。

SW笨笨先生以离散数据绘画样条曲线,只能像而不能准,
以这样的曲线作为基础 ...


还是笨笨大大的办法好,他的办法具有普遍性。我的做法只能对每一种曲线专门做模型,自然不够方便。我的做法只是想说明用模型来做虽然不太方便但也还是可以的罢了。老实说,我还正在学习和品味笨笨大大的办法呢。
作者: asencwx    时间: 2006-10-3 22:10
两种方法都应该有自己的应用范围吧。
苯苯老大的应该比价方便应用,
而不老叔的,并不是一般人都可以用的,每个不同的方程都要重新思考的。
作者: SW笨笨    时间: 2006-10-4 11:19
原帖由 asencwx 于 2006-10-3 22:10 发表
两种方法都应该有自己的应用范围吧。
苯苯老大的应该比价方便应用,
而不老叔的,并不是一般人都可以用的,每个不同的方程都要重新思考的。


这个跟笨笨想的一样谢谢,还是把那句话改了吧,是有一点味道……


螺旋曲面和外形曲面交线法,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
    1、精度高,拥有理论准确性。2、适合各种线型、非线性截面的螺旋曲线。
但是缺点就是:
    1、操作比较复杂,建模时间和操作步骤要多得多。2、针对某些特定情况,比如有中心交叉或者是自相交的公式曲线,那将是很难作出来的或者操作非常繁琐。3、只能用于这类螺旋曲线,方法的应用范围比较小。

所以一般对于新手,笨笨不推荐螺旋曲面方法。而对于商业应用,精度上当然优于宏,关键看应用的目标性质如何。
另:这个宏的方法与使用EXCEL的方法是一样的道理,大家参考。

[ 本帖最后由 SW笨笨 于 2006-10-4 11:20 编辑 ]
作者: w_hs    时间: 2006-10-4 12:26
原帖由 SW笨笨 于 2006-10-4 11:19 发表


这个跟笨笨想的一样谢谢,还是把那句话改了吧,是有一点味道……


螺旋曲面和外形曲面交线法,这是对于螺旋类曲线的通用做法,以前用过也讲许多次了,优点是:
    1、精度高,拥有理论准确性。2、适合各 ...


完全没有用到螺旋曲面或外形曲面啊,前面两个螺旋线只是用来生成一条正弦曲线和一条余弦曲线,第三个螺旋线是为了改善扫描精度而设置的引导线。
      同意笨笨大大的说法,此法我一般只用于做练习题和考验软件的适应性而已,这次拿出来也仅仅是说明建模并非不可解罢了,别无他意。我的此法由于对不同方程要分别建模(虽然也没有用曲面交线等复杂方法),自然不如笨笨大大的方法通用性比较好,故此我也在学习和品味笨笨之法呢。
      再次谢谢笨笨大大的教程。
作者: SW笨笨    时间: 2006-10-4 12:51

作者: w_hs    时间: 2006-10-4 13:36

作者: firmhand    时间: 2006-10-4 14:31
有点儿晕!实在是高人!
作者: wangzonghe    时间: 2006-10-4 21:51
笨笨的系列教程还是很实用的,在此谢谢啦!
作者: rutstyle    时间: 2006-10-5 15:50
见识了,高手呀
作者: swz0121117    时间: 2006-10-5 18:18
支持
作者: SW笨笨    时间: 2006-10-23 09:39
下载的朋友们,有没有发现什么问题啊??
作者: dzfun    时间: 2006-10-24 16:32
非常感谢老大,希望多一些
sw插件
作者: stary    时间: 2006-10-24 17:16
偶也想学二次开发,可我不会VB,可以用别的不,请指教.
作者: abc8    时间: 2006-10-26 15:46
xiexie !
作者: paradise222    时间: 2006-10-26 19:04
支持,学习
作者: myy_cat    时间: 2006-10-26 23:32
谢谢哦!
作者: yf2369    时间: 2006-11-11 14:19
谢谢提供。很好!
作者: proemanman    时间: 2006-11-20 17:01
=.=
作者: bingshui117    时间: 2006-11-22 13:25
顶!
作者: swtech    时间: 2006-12-7 15:08
此贴有价值。不过论坛里有几个懂VB的,怀疑啊,即使是初级VB。
作者: jason00000    时间: 2007-1-29 12:24
仔细研究了一下,还真的有价值。
作者: lan11    时间: 2007-1-29 18:05

作者: hzlhm    时间: 2007-3-4 21:22
不错,正好可以用学习学习
作者: ac007    时间: 2007-3-16 13:30
我、我太感谢楼主了
作者: 默涵    时间: 2007-3-16 20:37
好厉害,好教程,谢谢
作者: wzp751228    时间: 2007-4-14 01:34
谢谢了,顶一下
作者: sw3d    时间: 2007-4-15 17:33
謝謝你
作者: libilljie    时间: 2007-4-16 10:39
dddddddddddddddddddddddddddddd
作者: seaseasea    时间: 2007-4-16 16:09
顶顶顶顶不错
作者: munters    时间: 2007-8-9 12:43
谢谢楼主了
作者: xpypony    时间: 2007-9-2 22:10
太高深了
作者: h2sliu    时间: 2009-2-18 20:08
刨坑,向笨笨致敬!:)
[attach]883548[/attach]

[ 本帖最后由 h2sliu 于 2009-2-18 22:35 编辑 ]
作者: suxuhui    时间: 2009-8-4 13:20
谢谢讨论,很有收获。。。
作者: tanyifei100520    时间: 2009-8-4 15:53
唉,数学没有学好.......麻烦了.
作者: laohe212    时间: 2011-6-10 20:19
顶一个先!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3