副总经理 发表于 2015-2-16 12:40:44

不规则容器容量刻度UG半参数化建模方法!(转)

很不错的UG造型练习题,大家可以试试,此问题已论坛会员fanrens2977提出:
以下内容转自唐工QQ空间:
题目:在CREO和SW论坛里看到过此种问题的检讨,用UG研究一下,分享一下,大家一起来练练手!因量杯形状的不规则,其刻度不一定均匀的分布,如使用优化设计的计算方法,一次只能求得一个刻度线位置。因量具刻度线比较多,需要探讨更快捷的标注方法。不规则容器,容量刻度建模,误差控制在千分之一以内!
    要求当瓶子形状发生比较大的变更时,更改这个刻度,也不要太麻烦;
具体如下图所示!
这种瓶子刻度问题,我很早就研究过,但一直无法做到全参数化,加上工作中,根本就遇不到,也没有太多兴趣继续下去!我个人的理想参数化是,只要改了瓶子的形状,刻度就自动变更,但目前来说,个人觉得可能NX当前的版本,可能无法实现。(用词可能,是因为本人对软件的认知也是有限的)   既然,很多网友对此题感觉兴趣,我可以把曾经想的一些东西简单的分享一下。   这类型题目,如果瓶子是一个标准的回转零件,且侧面的曲线轮廓,是可以用曲线方程来表示的,那么它就会变得很简单,可以利用高数中的“古尔丁定理”即:以平面图形绕同一平面上的任何一条与该图形不相交的直线旋转一周所产生的体积,等于图形的面积乘以其重心相应半径所画的圆周长。还要利用形心公式,进行求解,以上这个方法是理论,本人从小不喜欢读书,所以这些高深的东西,表示无能为力。   对于瓶子不是一个标准的回转体,就比较麻烦了,但解决思路,基本上类似,油箱油的体积与高度关系的研究。   通俗点说,如果能找到瓶子内液体体积与液体的高度函数图像,就可以利用这图像反求到,具体刻度时,液面的高度,再阵列就可以了。接下来,本人简单的举一个例子说明一下建模思路!1、如下,我通过两个草图与两个样条,随意构建了一个瓶子的外轮廓曲线;
2、进行构面,加厚,就会得到瓶子,而里面最先做的曲面,缝合起来,就可以形成“液体”
3、创建一个高度表达式h=1.5 (具体数字自己定义)接下来修剪体,修剪体时,要使用新建基准平面,而平面偏置的高度,就是刚创建的h尺寸;这样操作是方便,等一下做灵敏度研究时,可以利用这个高度来求它与体积的关系图。 4、进行灵敏度研究,下图的尺寸,自己根据自己的图像进行设置。
设置观察值;设置观察值时,可以利用几何体参数进行选择到“液体”的体积;
       勾上“显示灵敏度研究图表”再点“运行灵敏度研究”就可以打开一个电子表格数据。
打开电子表格数据如下:(在这个电子表格里面,同时还存在函数图像。)
   5、将电子表格另存到本地电脑上,比如我另存的名字叫 20150215    6、在NX的表达式中,创建高度与体积列表,所用到的函数是:ug_red_fixed_list 该函数的作用,就是将灵敏度研究得到的电子表格数据中的,高度与体积那一列,分别读取到NX的表达式来;
    7、创建一条直线,直线长度为1;我的电脑上,这个直接长度的表达式为P59    8、创建一个点表达式,P=point(nth(p59,b),0,nth(p59,a)),同时,在NX里面创建一个点,创建点的方式,采用从表达式创建,表达式选这个P。
9、选中,创建的直线与点,进行阵列,就可以一次性阵列出,利用灵敏度分析得到的高度与对应体积的点坐标,如下:
10、利用拟合曲线命令,拟合这些点;(提示,拟合前,可以考虑对这些点创建一个组,这样选点方便一些,就可以一次性选中所有的点,不用去慢慢的框选。)   拟合得到的曲线,就是液体的高度与体积的函数图像;(拟合时,尽时阶数稍高一点,默认是3阶,我设了10阶,这样拟合出来的曲线,与这些点的误差小些)   接下来就要在这个图像上去反求,我们想要的体积时,所对应的液体高度就可以了;
   11、接下创建一条直线,直线的横坐标,是体积,纵坐标是液体高度。
   12、建模刻度与刻度文本;(创建时,有一定小技巧,不懂的可以观看前期做过的视频)
   13、接下来是一步阵列,就可以阵列时,体积每加1,所对应的液体刻度,结果如下:    14、最后把这些刻度线投影到瓶子的表面;    以上,就是这个刻度的创建思路,但带来的问题是,以上这个是不完全参数化的,当瓶子的形状发生变更时,比如下图这样:再去分析体积时,就会发现,体积与刻度对不上了。
    如果当瓶子形状发生变更,也要刻度是对的,需要以下操作;①重新利用灵敏度分析,再次得到新的体积与液面高度数据表;将这个数据表,再次另存为20150215;②打开NX的表达式窗口,点刷新来自外部电子表格数据,此时,新的体积与高度数据,就重新回添加到了表达式中。 点确定,三维就自动更新了。
   PS:在NX8.0版里面,我的印象中,有一个单独的命令在工具→更新→更新以获取外部的更改,这样一个命令,理论上是点这个选项,貌似在后期的版本中,没有这个更新命令;这个可以手动创建一个就行了。这个命令对应的按钮为: UG_ASSY_UPDATE_EXT_CHG
如下:
这样,结果就满足了。个人觉得,这只是一个半参数化的建模思路,谁有全参数化的思路?



请叫我老师头 发表于 2015-2-16 14:53:32

论坛里高手如云啊! {:hug:}

smx5920 发表于 2015-11-26 09:14:25

牛波依~~~~~~~~!!!!!!!!!!!

老黃 发表于 2015-12-8 00:20:15

相互学习,共同进步!

xinyuhan 发表于 2016-7-14 20:23:39

太厉害了,膜拜啊

P-plus 发表于 2016-7-15 11:08:31

受教了 真是高手如云 UG所用到的功能估计我学会的还木有三分之一

xiaoguan_020 发表于 2016-7-16 13:54:45


受教了 真是高手如云 UG所用到的功能估计我学会的还木有三分之一

mwg* 发表于 2016-12-26 11:19:54

本帖最后由 mwg 于 2016-12-26 11:29 编辑

谢谢楼主,这个主题是不错,是一种很好的思路,如果要全参数必需引入积分运算或是一些展开公式,因为先要把形体的轮廓曲线参数化,轮廓曲线旋转或是沿轮廓线扫掠过程中形成体积,这个体积用表达式,就可以全参了。

lmjams 发表于 2017-7-8 07:28:04

高手啊,能加入UG爱好者论坛是学UG者的一大幸事。

lmjams 发表于 2017-7-8 11:43:08

好东西,赶紧来收藏,在这里我也提一问题,相信好多都会编程或者操机,我们晓得西门子840d如果要加工非汉字类的文本机床可以直接把那指令调出来就可以了,那么我现在想搞个法拉克系统也要有这功能,该怎样思考呢?首先得晓得26个字母和10个数字的长宽关系,然后用宏程序把他们编在一个子程序里,然后每次主程序里用G65宏程序调用并且赋值应该就可以了,有喜欢的朋友,一起想想这个要怎样做呢?如果要不同的字体就多编几个。现在我这希望高手们能告诉我这字母和数字的关系,谢谢!
页: [1] 2
查看完整版本: 不规则容器容量刻度UG半参数化建模方法!(转)