野火论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始


查看: 5279|回复: 7

[求助] 如何提取模型标注尺寸的关联几何(面)?

[复制链接]

9

主题

29

回帖

1

威望

实习生

Rank: 1

积分
48
发表于 2018-3-16 16:12 | 显示全部楼层 |阅读模式
本帖最后由 ghjnwk@163.com 于 2018-3-16 16:14 编辑

如图所示 模型尺寸.PNG
我画了一个模型,并且标注了尺寸(包括从动尺寸和几何公差)。我现在通过ProSelect()和ProSelectionModelitemGet()手动选取尺寸获得了尺寸对象的指针ProDimension,并且通过ProDimensionOwnerfeatureGet()获得了尺寸对象关联的feature,但是访问feature无法精确获得与手选尺寸关联的几何,比如与底座长度100±0.2这个尺寸关联的左右两个平面。。。 如果通过访问feature的所有平面并求出平行平面的距离,与底座长度这个尺寸对比来确定当前平面是否是与手选尺寸关联的几何平面,则由于底座长度这个尺寸值可能不唯一,将导致尺寸关联几何量提取不唯一。而且这个思路多少有点太绕了。。。

我现在想唯一提取与模型标注尺寸关联的几何量(ProGeomitem),求助各位大佬有没有什么好的办法呀?  

59

主题

2272

回帖

341

威望

教授

Rank: 8Rank: 8

积分
3197

热心助人勋章优秀会员勋章希望之星勋章

发表于 2018-3-16 18:15 | 显示全部楼层
这个真心不懂啊
回复 支持 反对

使用道具 举报

9

主题

29

回帖

1

威望

实习生

Rank: 1

积分
48
 楼主| 发表于 2018-3-17 12:56 | 显示全部楼层

我在网上搜了一下,似乎UG二次开发有比较简单的解决思路,不知道论坛里边有没有大佬会用Pro/E做的。。。 提供一个思路就好  
回复 支持 反对

使用道具 举报

0

主题

16

回帖

0

威望

实习生

Rank: 1

积分
18
发表于 2019-2-28 08:59 | 显示全部楼层
求解决
回复 支持 反对

使用道具 举报

9

主题

29

回帖

1

威望

实习生

Rank: 1

积分
48
 楼主| 发表于 2019-4-8 22:11 | 显示全部楼层
我后来自个儿发现,当标注尺寸类型为 GTOL,也就是几何公差(比如平面度,圆柱度)时,访问其参考几何,可得尺寸关联几何  但是当尺寸为普通线性尺寸时,似乎没法得到尺寸关联几何  
回复 支持 反对

使用道具 举报

0

主题

6

回帖

0

威望

实习生

Rank: 1

积分
7
发表于 2019-4-12 13:37 | 显示全部楼层
ProDimensionAttachmentsGet就可以获取的 呵呵
回复 支持 反对

使用道具 举报

9

主题

29

回帖

1

威望

实习生

Rank: 1

积分
48
 楼主| 发表于 2019-4-24 20:54 | 显示全部楼层
firescript 发表于 2019-4-12 13:37
ProDimensionAttachmentsGet就可以获取的 呵呵

您好,ProDimensionAttachmentsGet这个函数我试了,但是报错,我可能用得不地道,我的代码是这样的
  1. void GetDimeAttachedSurface() {
  2.         ProError err;
  3.         ProMdl pSldMdl;
  4.         err = ProMdlCurrentGet(&pSldMdl);
  5.         /* 选择尺寸 */
  6.         ProSelection *dims;
  7.         int nDim = 0;
  8.         err = ProSelect("annot_elem", 1, NULL, NULL, NULL, NULL, &dims, &nDim);   // gtol为 Geometric tolerance
  9.         if (PRO_TK_NO_ERROR != err || 1 != nDim)
  10.         {
  11.                 AfxMessageBox(_T("errors occured in ProSelect()"));
  12.                 return;
  13.         }
  14.         ProAnnotationElem annotationElem;
  15.         err = ProSelectionModelitemGet(dims[0], &annotationElem);
  16.         if (PRO_TK_NO_ERROR != err || 1 != nDim)
  17.         {
  18.                 AfxMessageBox(_T("errors occured in ProSelectionModelitemGet()"));
  19.                 return;
  20.         }

  21.         // 提取尺寸关联几何
  22.         ProAnnotationPlane* annotation_plane;
  23.         err = ProArrayAlloc(0, sizeof(ProAnnotationPlane), 1, (ProArray*)&annotation_plane);
  24.         if (err != PRO_TK_NO_ERROR)
  25.                 return;
  26.         ProDimAttachment** attachments_arr;
  27.         err = ProArrayAlloc(0, sizeof(ProDimAttachment*), 1, (ProArray*)&attachments_arr);
  28.         if (err != PRO_TK_NO_ERROR)
  29.                 return;

  30.         //ProDimSense** dsense_arr;
  31.         //ProDimOrient* orient_hint;
  32.         err = ProDimensionAttachmentsGet(&annotationElem, annotation_plane, attachments_arr, NULL, NULL);
  33.         if (PRO_TK_BAD_INPUTS == err)
  34.         {
  35.                 AfxMessageBox(_T("errors occured in ProDimensionAttachmentsGet(), PRO_TK_BAD_INPUTS"));
  36.                 return;
  37.         }
  38.         else if (PRO_TK_INVALID_ITEM == err) {
  39.                 AfxMessageBox(_T("errors occured in ProDimensionAttachmentsGet(), PRO_TK_INVALID_ITEM"));
  40.                 return;
  41.         }


  42.         ProArrayFree((ProArray*)&annotation_plane);
  43.         ProDimattachmentarrayFree(*attachments_arr);
  44. }
复制代码



报错信息是: PRO_TK_BAD_INPUTS    # One or more of the input arguments are invalid.
可以帮我看看吗?谢谢
回复 支持 反对

使用道具 举报

0

主题

6

回帖

0

威望

实习生

Rank: 1

积分
7
发表于 2019-4-26 13:48 | 显示全部楼层
  1. ProAnnotationPlane annotation_plane;
  2. ProDimAttachment * attachments_arr = NULL;
  3. ProDimSense * dsense_arr = NULL;
  4. ProDimOrient orient_hint;
  5. ProDimensionAttachmentsGet(item,&annotation_plane,&attachments_arr,&dsense_arr,&orient_hint);
  6. ProGeomitem reference;
  7. ProSelectionModelitemGet(*attachments_arr[0], (ProModelitem*)&reference);
复制代码

下面是标注的关联几何,可能1个,也可能2个:
2个如下:
attachments_arr[0]   
attachments_arr[1]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号

GMT+8, 2024-4-24 07:19 , Processed in 0.107137 second(s), 30 queries .

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