找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10064|回复: 5

[已解决] 关于创建尺寸函数ProDimensionCreate的问题

[复制链接]

7

主题

14

回帖

0

威望

实习生

积分
25
发表于 2021-7-1 15:34 | 显示全部楼层 |阅读模式
想用它来创建两条直线之间的距离,但是怎么弄都会报错,返回PRO_TK_BAD_DIM_ATTACH,各位大佬帮忙看看


ProMdl model_dis ;               
        ProSelection *p_sel_dis ;
        ProSelection *p_sel_ann;
        int n_sel_dis ;
        int n_sel_ann;
        ProFileName msg_file ;  
        ProDimAttachment p_dim_attach;
        ProDimSense *p_dim_sense;
        Pro3dPnt P_dim_3dPnt1,P_dim_3dPnt2,P_dim_3dPnt3;
        ProDimension p_dimension_new;
        ProAnnotationPlane p_ann_plane;
        int err ;

        ProArrayAlloc(2, sizeof(ProDimSense), 1, (ProArray*)&p_dim_sense);
        ProArrayAlloc(1, sizeof(ProSelection), 1, (ProArray*)&p_sel_dis);

        p_dim_sense[0].type=PRO_DIM_SNS_TYP_NONE;
        p_dim_sense[0].orient_hint=PRO_DIM_ORNT_NONE;
        p_dim_sense[1].type=PRO_DIM_SNS_TYP_NONE;
        p_dim_sense[1].orient_hint=PRO_DIM_ORNT_NONE;
        ProStringToWstring(msg_file, "msg_ugfund.txt") ;
        //获得当前模型.
        err = ProMdlCurrentGet(&model_dis);//ProDrawing是ProMdl的子对象
        if (err != PRO_TK_NO_ERROR)
        {
                ProMessageDisplay(msg_file, "USER %0s F", "请先打开一个模型.");
                return ;
        }
        ProSolid solid_dis;
        err = ProMdlCurrentGet((ProMdl*)&solid_dis);
        ProMessageDisplay(msg_file, "USER %0s F", "选择注释.");
        err = ProSelect((char*)"surface", 1, NULL, NULL, NULL, NULL, &p_sel_ann, &n_sel_ann) ; //edge,point,curve,surface
        if ( err != PRO_TK_NO_ERROR )
        {
                ProMessageDisplay(msg_file, "USER %0s F", "取消选择特征.") ;
                return ;
        }
        ProModelitem model_of_sel;
        ProGeomitemdata ** geoitem_of_surf;
        ProVector vector_of_surf;
        ProArrayAlloc(1, sizeof(ProGeomitemdata*), 1, (ProArray*)&geoitem_of_surf);
        err=ProSelectionModelitemGet(p_sel_ann[0],&model_of_sel);
        err=ProGeomitemdataGet((ProGeomitem*)&model_of_sel,geoitem_of_surf);
        if(err != PRO_TK_NO_ERROR)
        if ((*geoitem_of_surf)->data.p_surface_data->type==PRO_SRF_PLANE)
        {
                memcpy (vector_of_surf, (*geoitem_of_surf)->data.p_surface_data->srf_shape.plane.e2, sizeof (ProVector));
        }
        err = ProAnnotationplaneCreate(p_sel_ann[0], vector_of_surf,&p_ann_plane);
        ProMessageDisplay(msg_file, "USER %0s F", "选择需要注释的尺寸.");
        for (int i=0;i<2;i++)
        {
                ProMessageDisplay(msg_file, "USER %0s F", "选择需要注释的尺寸.");
                err = ProSelect((char*)"edge", 1, NULL, NULL, NULL, NULL, &p_sel_dis, &n_sel_dis) ; //edge,point,curve,surface
                err=ProSelectionCopy(p_sel_dis[0],&p_dim_attach[i]);
        }
        err = ProSelectionPoint3dGet(p_dim_attach[0],(ProPoint3d)P_dim_3dPnt1);
        err = ProSelectionPoint3dGet(p_dim_attach[1],(ProPoint3d)P_dim_3dPnt2);
        for (int i=0;i<3;i++)
        {
                P_dim_3dPnt3[i]=(P_dim_3dPnt1[i]+P_dim_3dPnt2[i])/2;
        }
        err = ProDimensionCreate((ProSolid)solid_dis, PRO_REF_DIMENSION, &p_ann_plane, &p_dim_attach,
                (ProDimSense*)p_dim_sense, PRO_DIM_ORNT_NONE,P_dim_3dPnt3,&p_dimension_new );
        if(err ==PRO_TK_NO_ERROR)
        {
                AfxMessageBox("d7");
        }
        else if(err == PRO_TK_BAD_INPUTS)
        {
                AfxMessageBox("d8");
        }
        else if(err==PRO_TK_BAD_DIM_ATTACH)
        {
                AfxMessageBox("d9");
        }

        err = ProAnnotationShow((ProAnnotation*)&p_dimension_new,NULL,NULL);

7

主题

14

回帖

0

威望

实习生

积分
25
 楼主| 发表于 2021-7-1 15:48 | 显示全部楼层
补充一下,Creo版本是2.0
回复

使用道具 举报

7

主题

14

回帖

0

威望

实习生

积分
25
 楼主| 发表于 2021-7-2 10:19 | 显示全部楼层
已解决
回复

使用道具 举报

2

主题

279

回帖

1

威望

工程师

积分
321
发表于 2021-7-2 19:04 | 显示全部楼层
没人看的懂!
回复

使用道具 举报

10

主题

185

回帖

6

威望

工程师

积分
282
发表于 2021-8-15 08:42 | 显示全部楼层
这是三维模型里的尺寸吧,不是二维图里的。
回复

使用道具 举报

1

主题

10

回帖

0

威望

实习生

积分
16
发表于 2023-7-26 16:59 | 显示全部楼层

博主怎么解决得,还记得吗,是哪里有问题
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 09:16 , Processed in 0.149344 second(s), 24 queries .

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