Creo二次开发:查找文件件下具有某种几何特征的模型

原创 2016年08月16日 13:34:37
vector<ProGeomitem> Geomitem;
ProSrftype type;
ProError UserGeomitemVisitAct(ProGeomitem* geomitem,ProError status,ProAppData data)
{
    ProSurface surface;
    ProSrftype surf_type;
    status=ProGeomitemToSurface(geomitem,&surface);
    status=ProSurfaceTypeGet(surface,&surf_type);
    if (type==surf_type)
    {
        vector<ProGeomitem>* pf=(vector<ProGeomitem>*)data;
        pf->push_back(*geomitem);
    }
    return PRO_TK_NO_ERROR;
}
ProError UserFeatureVisitAct(ProFeature* p_feature,ProError status,ProAppData data)
{
    //遍历特征下的几何项
    status=ProFeatureGeomitemVisit(p_feature,PRO_TYPE_UNUSED,(ProGeomitemAction)UserGeomitemVisitAct,NULL,&Geomitem);
    if (PRO_TK_NO_ERROR!=status)
    {
        return status;
    }
    return PRO_TK_NO_ERROR;
}

void CSearchMdl::OnBnClickedBtnSearchMdlByGeomItem()
{
    // TODO: 在此添加控件通知处理程序代码
    ProError status;
    ProName name;
    ProStringToWstring(name,"D:\\demo\\test");
    ProPath *file_list,*dir_list;
    status=ProArrayAlloc(0,sizeof(ProPath),1,(ProArray*)&file_list);
    status=ProArrayAlloc(0,sizeof(ProPath),1,(ProArray*)&dir_list);
    status=ProFilesList(name,L"*.prt",PRO_FILE_LIST_LATEST,&file_list,&dir_list);
    if (PRO_TK_NO_ERROR!=status)
    {
        return;
    }
    int size=0;
    status=ProArraySizeGet((ProArray)file_list,&size);
    
    CString strWeb;
    int nSel;
    //获取组合框控件的列表中选项索引
    nSel=m_comboWeb.GetCurSel();
    //根据选中项索引获取该字符串
    m_comboWeb.GetLBText(nSel,strWeb);
    if (_T("圆柱面")==strWeb)
        type=PRO_SRF_CYL;
    else if(_T("旋转面")==strWeb)
        type=PRO_SRF_SPL;
    else
        type=PRO_SRF_PLANE;
    //清空列表控件
    m_GeomMdlList.DeleteAllItems();

    ProMdl mdl;
    ProName mdl_name;
    vector<ProFeature> p_feat;
    for (int i=0;i<size;i++)
    {
        //清空向量
        Geomitem.clear();
        ProMdlLoad(file_list[i],PRO_MDL_PART,PRO_B_FALSE,&mdl);
        ProMdlDisplay(mdl);     
        //遍历指定实体的所有特征
        status=ProSolidFeatVisit((ProSolid)mdl,(ProFeatureVisitAction)UserFeatureVisitAct,NULL,(ProAppData)&p_feat);
        if (Geomitem.size()!=0)
        {
            status=ProMdlNameGet(mdl,mdl_name);
            m_GeomMdlList.InsertItem(0,mdl_name);
        }
    }

}

运行结果:

     

版权声明:本文为博主原创文章,未经博主允许不得转载。

Pro/TOOLKIT示例程序(二)遍历模型下的所有特征

特征的基本概念 Pro/E是基于特征的参数化造型系统,在模型树上的每个项目都是特征。如下图所示: 该档案有3个基准面、1个坐标系、1个拉伸、1个孔共6个特征。 我们可以通过配置【树列】选项来...
  • wangyao1052
  • wangyao1052
  • 2018年01月14日 13:44
  • 52

Pro/TOOLKIT示例程序(十一)获取组立档的层次结构

在Pro/TOOLKIT中,类型ProAssembly表示组立档,而组立档下的元件,则用ProAsmcomp表示。 typedef struct pro_model_item { ProTy...
  • wangyao1052
  • wangyao1052
  • 2018年01月21日 15:04
  • 26

Creo二次开发—内存处理

#include ProError ProDisplistInvalidate(ProMdl model) Invalidates the two- or three-dimensional d...
  • jh2005
  • jh2005
  • 2015年07月22日 06:08
  • 835

CREO二次开发之隐含

pfcls.IpfcSolid solidComponent = (pfcls.IpfcSolid)assembly; pfcls.IpfcFeatures featureCo...
  • jhzhang1983
  • jhzhang1983
  • 2016年10月20日 16:52
  • 379

Creo二次开发:查找文件件下具有某种几何特征的模型

vector Geomitem; ProSrftype type; ProError UserGeomitemVisitAct(ProGeomitem* geomitem,ProError statu...
  • u013776238
  • u013776238
  • 2016年08月16日 13:34
  • 641

VS2010 Creo2.0 删除零件

构造要删除零件的特征del_feat ProSelection *p_sel = NULL; int n_sel; ProMdl mdl; ProModelitem sel_item; Pr...
  • remington2
  • remington2
  • 2015年06月23日 14:56
  • 503

Creo二次开发:导出模型清单,包含序号、模型名称

头文件中添加如下变量声明:     HTREEITEM hRoot;     HTREEITEM hPrt;     HTREEITEM hFea; //动作函数 ProError Us...
  • u013776238
  • u013776238
  • 2016年08月16日 15:01
  • 712

Creo二次开发——文件操作

#include ProMdl.h> ProError ProMdlRename (   ProMdl handle     /* (In)   The model handle ...
  • jh2005
  • jh2005
  • 2015年07月25日 14:10
  • 1723

检查drawing中草绘线,是否与零件中截面上的线一致

// 根据零件上截面构成的点,在工程图中画线,对比 .h文件 std::vector csyslist; struct Note note[50]; ProGeomitem pntsco...
  • remington2
  • remington2
  • 2015年03月26日 15:28
  • 287

Replace Famtable Instance In The Creo Assembly

nothing to display
  • remington2
  • remington2
  • 2015年10月20日 23:08
  • 737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Creo二次开发:查找文件件下具有某种几何特征的模型
举报原因:
原因补充:

(最多只允许输入30个字)