Proe Creo 二次開發之計算兩個模型之間的干涉信息

計算兩個模型的干涉情況,

(1)通過promdlInit初始化得到兩個模型

(2)根據兩個模型在裝備樹中的位置得到 proselection

(3)通過干涉接口計算干涉信息

(4)高亮干涉信息 

    ProSelection p_sel1;
	ProSelection p_sel2;
	ProMdl p_mdl1, p_mdl2,p_CurMdl;
	ProModelitem p_mdlItem1, p_mdlItem2;
	ProMdlCurrentGet(&p_CurMdl);

	ProError status = ProMdlInit(_T("Gear_out"),PRO_MDL_PART, &p_mdl1);
	status = ProMdlInit(_T("ROTATE_ROD"),PRO_MDL_PART, &p_mdl2);
	status = ProMdlToModelitem(p_mdl1, &p_mdlItem1);
	status = ProMdlToModelitem(p_mdl2, &p_mdlItem2);
	ProAsmcomppath pcompath1, pcompath2;
	pcompath1.owner = (ProSolid)p_CurMdl;
	pcompath2.owner = (ProSolid)p_CurMdl;
	pcompath1.table_num = 1;
	pcompath2.table_num = 1;

	pcompath1.comp_id_table[0] = 49;
	pcompath1.comp_id_table[1] = -1;
	pcompath2.comp_id_table[0] = 44;
	pcompath2.comp_id_table[1] = -1;

	status = ProSelectionAlloc(&pcompath1, &p_mdlItem1, &p_sel1);
	status = ProSelectionAlloc(&pcompath2, &p_mdlItem2, &p_sel2);
	

	ProInterferenceData m_interf_data;
	// 計算干涉信息
	status = ProFitInterferenceCompute(p_sel1, p_sel2, PRO_B_FALSE, PRO_B_FALSE, &m_interf_data);
	ASSERT_PRINT_ERRORREPORT ("ProFitInterferenceCompute()","CGlbInterfCheckShowdlg::HighLightInterfVolume", 
		status);

	//// 判斷:干涉信息不爲空
	//if (NULL != m_interf_data)
	//{
	//	status = ProFitInterferencevolumeDisplay(m_interf_data, PRO_COLOR_HIGHLITE);
	//	ASSERT_PRINT_ERRORREPORT ("ProFitInterferencevolumeDisplay()","CGlbInterfCheckShowdlg::HighLightInterfVolume", 
	//		status);
	//}
	//return 0;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章