iCAx开思工具箱
标题:
也来说个实例,大家可以借鉴
[打印本页]
作者:
有偿帮助
时间:
2010-7-27 09:27
标题:
也来说个实例,大家可以借鉴
前几天来论坛找个油水活干干,网友zjs同志说手头很多小活自己做不过来给我一个做,我说这周做做看不保证做出来,结果昨天晚上做到10点做完了发现zjs给我发了一封邮件说自己做出来了,让我自己去研究吧,哎。
既然这样我留着也没用就当个实例来讲讲吧。
大体要求:
功能要求:测量附件: L0, L1,L2 及 D1, D2 。及头上形状大小 X size, Y size.
图形如下:
(, 下载次数: 3)
上传
点击文件名下载附件
下载积分: 贡献 -2
[localimg=180,109]2[/localimg]
作者:
有偿帮助
时间:
2010-7-27 09:35
上图是个二维图,说明了要对这个三维图形所求的几个参数,我的做法如下,考虑到这个模型可能存在旋转的情况,zjs推荐使用UF_MODL_ask_bounding_box_exact求包络立方体大小,鉴于本人对矩阵转化不是很熟悉,所以避开了矩阵使用采取下面的方法:
1、if(UF_MODL_CYLINDRICAL_FACE == faceType)获取圆柱面对象。
2、UF_MODL_ask_face_edges(CylindFaces[i], &edges_list);获取每个圆柱面的两条圆边edge。
3、UF_MODL_ask_minimum_dist(cylindFaceEdges[p][0],cylindFaceEdges[p][1],1,guess[0],1,guess[1],&min_dist,pt_on_obj1,pt_on_obj2);最小距离就是圆柱的高度了,至于圆柱半径在第一步的时候就可以用UF_MODL_ask_face_data(CylindFaces[i], &typeData, pointData, dirData, boxData, &radiusData, &radData, &norm_dirData);可计算出来了。
4、遍历所有面获取法线方向与圆柱轴向相同的面,用函数UF_MODL_ask_face_edges(CylindFaces[i], &edges_list);找出edge个数为4的面既是最上面的举行,求出线段长度就是长和宽了。
5,对法线平行于圆柱轴线的面两两就距离UF_MODL_ask_minimum_dist最大的就是L0了。
这个方法就避免了用矩阵旋转的问题了。
欢迎有二次开发小活的兄弟以后多多关照。在此多谢了
作者:
yl.fu
时间:
2010-7-27 12:06
在此多谢了
作者:
tangxu12
时间:
2010-7-27 19:34
不能通过特征求的?
作者:
yanjin
时间:
2010-7-29 12:01
楼主是个高手,可以多奉献一下
作者:
357357
时间:
2010-8-31 01:08
学习学习..................
作者:
zhangguangyang
时间:
2011-7-15 10:14
楼主是个高手,学习
作者:
ssy871120
时间:
2011-8-18 14:25
谢谢分享
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3