wfcStatus OnInitMultiBodyDlg()
{
//获得当前进程
CurrSession = pfcGetProESession();
wfcWSession_ptr wSession = wfcWSession::cast(CurrSession);
//判断当前只能为工程图模式
pfcModel_ptr pMdlPtr = CurrSession->GetCurrentModel();
pfcModelType pMdlType = pMdlPtr->GetType();
//如果不是组件就返回
if (pMdlType != pfcMDL_ASSEMBLY )
{
CurrSession->UIShowMessageDialog(xstring(L"只能在组件模式下使用"), NULL);
return wfcTK_GENERAL_ERROR;
}
pfcAssembly_ptr AsmPtr = pfcAssembly::cast(pMdlPtr);
//判断当前组件下是否有组件
try
{
pfcSolid_ptr SkelenPtr = AsmPtr->GetSkeleton();
}
xcatchbegin
xcatch(pfcXToolkitNotFound ,x)
{
CurrSession->UIShowMessageDialog(xstring(L"当前组件下没有骨架模型\n请先建立骨架!"), NULL);
return wfcTK_GENERAL_ERROR;
}
xcatchend;
uifcCreateDialog(m_MultiBody.DlgName, m_MultiBody.DlgName);
//将相关数据插入到表格中
if (OnInitMultBodyTableData() == wfcTK_NO_ERROR)
{
//遍历组件下所有的元件,过滤掉骨架模型,判断指定元件参数名是否和顶级骨架中的发布几何名称相同
//若相同,则将表格中相关的行设置为不可访问(灰色状态)。全局数量增加++。
ListMultiSameComp(m_MultiBody.DlgName, m_MultiBody.TableName);
//表格的单选动作函数
uifcTable_ptr TablePtr = uifcTableFind(m_MultiBody.DlgName, m_MultiBody.TableName);
TablePtr->AddActionListener(new OTKClickTableAction(ClickMultiTableCellCsysAction));
//设置下拉栏的动作函数
//获取表格对象句柄
TablePtr = uifcTableFind(m_MultiBody.DlgName, m_MultiBody.TableName);
//获取当前鼠标点击的单元格行、列名称
/*xstring selRowName = TablePtr->GetFocusCellName()->GetRow();
xstring selColName = TablePtr->GetFocusCellName()->GetColumn();
uifcTableCell_ptr TableCellPtr = uifcTableCellFind(m_MultiBody.DlgName, m_MultiBody.TableName, selRowName, selColName);*/
//uifcOptionMenu_ptr OpMenuPtr = uifcOptionMenuFind(m_MultiBody.DlgName, m_MultiBody.CsysOpMenu);
//选择坐标系下拉栏内容的动作函数
int bsdfdjj = m_MultiBody.CsysOpMenuPtr->GetItemNameArray()->getarraysize();
m_MultiBody.CsysOpMenuPtr->AddActionListener(new OTKOptionMenuListener(MultiSelectCsysOpMenuAction));
//选择材质下拉栏内容的动作函数
int bsdfd = (int)m_MultiBody.MTOpMenuPtr->GetItemNameArray()->getarraysize();
m_MultiBody.MTOpMenuPtr->AddActionListener(new OTKMultilMTOptionMenuListener(MultiSelectMTOpMenuAction));
//创建多实体按钮
uifcPushButtonFind(m_MultiBody.DlgName, m_MultiBody.CreatBtn)->
AddActionListener(new OTKPushbuttonListener(MultiBodyCreatBtnAction));
//定义关闭对话框按钮
uifcPushButton_ptr DrawBtnColsePtr = uifcPushButtonFind(m_MultiBody.DlgName, m_MultiBody.ClosBtn);
DrawBtnColsePtr->AddActionListener(new OTKCancelListener(m_MultiBody.DlgName));
uifcActivateDialog(m_MultiBody.DlgName);
}
uifcDestroyDialog(m_MultiBody.DlgName);
//清楚静态变量内容
m_MultiBody.CsysFeatArray->BaseClear();
m_MultiBody.FaBuFeatArray->BaseClear();
m_MultiBody.MdlMaterArray->BaseClear();
m_MultiBody.iCompentNums = 0;
return wfcStatus();
}
extern "C" wfcStatus OnInitMultBodyTableData()
{
ofstream _exception_info;
pfcSession_ptr sess = pfcGetProESession();
wfcWSession_ptr wSession = wfcWSession::cast(sess);
pfcModel_ptr pMdlPtr;
/*pfcSelectionOptions_ptr SelOpPtr = pfcSelectionOptions::Create("feature");
pfcSelections_ptr selArray = sess->Select(SelOpPtr,NULL);
pfcFeatureType FeatType = pfcFeature::cast( selArray->get(0)->GetSelItem())->GetFeatType();
xstring FeatName = pfcFeature::cast(selArray->get(0)->GetSelItem())->GetFeatTypeName();*/
//发布几何类型::FeatType pfcFEATTYPE_GEOM_COPY (167) pfcFeatureType
//发布几何特征类型名称::已发布几何
try
{
pMdlPtr = sess->GetCurrentModel();
pfcAssembly_ptr AsmPtr = pfcAssembly::cast(pMdlPtr);
pfcSolid_ptr SkelPtr = AsmPtr->GetSkeleton();
//获取发布几何特征
m_MultiBody.FaBuFeatArray = SkelPtr->ListFeaturesByType(xfalse, pfcFEATTYPE_GEOM_COPY);
//获取坐标系特征数组
m_MultiBody.CsysFeatArray = SkelPtr->ListFeaturesByType(xfalse, pfcFEATTYPE_COORD_SYS);
}
OTK_EXCEPTION_HANDLER(_exception_info);
//定义坐标系下拉栏
m_MultiBody.CsysOpMenuPtr = uifcOptionMenuFind(m_MultiBody.DlgName, m_MultiBody.CsysOpMenu);
m_MultiBody.CsysOpMenuPtr->SetValueType(uifcINPUT_TYPE_WIDESTRING);
//m_MultiBody.CsysOpMenuPtr->AddActionListener(new OTKOptionMenuAction(m_MultiBody.DlgName, m_MultiBody.TableName));
xstringsequence_ptr OpNameArray = xstringsequence::create();
xstringsequence_ptr OpTextArray = xstringsequence::create();
for (int i = 0; i < m_MultiBody.CsysFeatArray->getarraysize(); i++)
{
pfcModelItem_ptr CsysItemPtr = pfcModelItem::cast(m_MultiBody.CsysFeatArray->get(i));
//项目名
OpNameArray->append(xstring::Printf("%d", i + 1));
//项目标签名
OpTextArray->append(CsysItemPtr->GetName());
}
uifcOptionMenuItem_ptr MenuItemPtr = uifcOptionMenuItemDefine("A");
m_MultiBody.CsysOpMenuPtr->SetItemNameArray(OpNameArray);
m_MultiBody.CsysOpMenuPtr->SetItemTextArray(OpNameArray);
//过滤非发布几何特征
for (int i = 0; i < m_MultiBody.FaBuFeatArray->getarraysize() - 1; i++)
{
xstring featTypeName = m_MultiBody.FaBuFeatArray->get(i)->GetFeatTypeName();
if (L"已发布几何" != featTypeName)
{
m_MultiBody.FaBuFeatArray->removerange(i, i + 1);
}
}
uifcTable_ptr TablePtr = uifcTableFind(m_MultiBody.DlgName, m_MultiBody.TableName);
TablePtr->SetGridVisible(xtrue);
//先清空行数
xint nRows = TablePtr->GetRowNameArray()->getarraysize();
if (nRows > 0)
{
TablePtr->DeleteRowsByName(TablePtr->GetRowNameArray());
}
/*===========================*\
//插入表格内容
\*===========================*/
//根据发布几何数量插入多行
strC.IsertTableNameRows(m_MultiBody.DlgName, m_MultiBody.TableName, m_MultiBody.FaBuFeatArray->getarraysize());
//获得表格行数名称数组
xstringsequence_ptr nRowArrayName = TablePtr->GetRowNameArray();
for (int i = 0; i < m_MultiBody.FaBuFeatArray->getarraysize(); i++)
{
/*===========================*\
//插入发布几何特征名称C1
\*===========================*/
uifcTableCell_ptr GemoNameTableCell = uifcTableCellFind(m_MultiBody.DlgName, m_MultiBody.TableName, nRowArrayName->get(i), "C1");
pfcModelItem_ptr MdlItemPtr = pfcModelItem::cast(m_MultiBody.FaBuFeatArray->get(i));
//获得几何特征的名称
xstring strComGemo = MdlItemPtr->GetName();
//如果名称为空的话,就提示
if (strComGemo.GetLength()<=0)
{
sess->UIShowMessageDialog(xstring(L"请给当前顶级中的发布几何特征重命名!\n命名方式为“TO-XXXX"), 0);
return wfcTK_BAD_INPUTS;
}
else
{ //将发布几何的名称插入到单元格中
GemoNameTableCell->SetText(strComGemo);
}
/*===========================*\
//插入新的实体名称C2
\*===========================*/
uifcTableCell_ptr NewBodyNameTableCell = uifcTableCellFind(m_MultiBody.DlgName, m_MultiBody.TableName, nRowArrayName->get(i), "C2");
//pfcModelItem_ptr MdlItemPtr = pfcModelItem::cast(m_MultiBody.FaBuFeatArray->get(i));
NewBodyNameTableCell->SetText(pMdlPtr->GetFullName() + xstring::Printf("-%d", i + 1));
/*===========================*\
//插入坐标系下拉栏C3
\*===========================*/
uifcTableCell_ptr CsysNameTableCell = uifcTableCellFind(m_MultiBody.DlgName, m_MultiBody.TableName, nRowArrayName->get(i), "C3");
//根据发布几何的名称,来判断骨架中的对应坐标系,如果没有相应的坐标系就使用默认的坐标系
//截断标准符号
xstring cutName = "TO_";
//开始截断
xstring newStrComGemo = xstring (strComGemo.Substring((int)cutName.GetLength(), strComGemo.GetLength()));
//用发布几何的名称去和所有的坐标系进行对比
//进行判断循环,查找是否有相等的对应坐标系(遍历骨架中所有坐标系的名称)
for (int i = 0; i < m_MultiBody.CsysFeatArray->getarraysize();i++)
{
int fsdf = (int)m_MultiBody.CsysFeatArray->get(i)->GetName().Pos(newStrComGemo);
if (m_MultiBody.CsysFeatArray->get(i)->GetName().Pos(newStrComGemo) >=0)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
CreoBoxV3.1 (212个子文件)
a3_asm_h.frm.1 1.22MB
a4_prt_h.frm.1 824KB
pcb铆柱_gp.prt.1 463KB
pcb铆柱.gph.1 42KB
copy_pub_geom.gph.1 38KB
csys_ref_plane.gph.1 33KB
bom.tbl.1 31KB
mmkgs_part_bulk.prt.1 29KB
point_ref_2_edge.gph.1 28KB
mmkgs_part_sheetmetal.neu.1 22KB
a3_asm_v.frm.10 1.08MB
a3_prt_v.frm.12 609KB
mmkgs_part_sheetmetal.prt.18 196KB
mmkgs_part_sheetmetal.prt.18 196KB
a3_asm_h.drw.2 907KB
a4_asm_v.drw.2 853KB
a4_asm_h.drw.2 837KB
a4_prt_h.drw.2 747KB
a3_prt_h.frm.21 702KB
a4_asm_h.frm.23 1.18MB
mmkgs_asm_design.asm.23 151KB
mmkgs_asm_design.asm.24 165KB
a4_asm_v.frm.25 1.22MB
a3_asm_h.frm.44 1.15MB
a4_prt_h.frm.49 793KB
a1_asm_h.frm.5 805KB
a4_prt_h.drw.5 719KB
a4_prt_v.frm.56 790KB
mmkgs_part_solid.prt.59 229KB
a3_asm_h.drw.6 973KB
a2_asm_h.frm.6 946KB
a0_asm_h.frm.6 915KB
mmkgs_part_solid.prt.60 236KB
a4_prt_v.drw.7 734KB
a1_prt_h.frm.7 532KB
a0_prt_h.frm.7 516KB
mmkgs_part_skel.prt.7 217KB
mmkgs_part_skel.prt.8 224KB
a2_prt_h.frm.9 592KB
biaozhu.bmp 1.01MB
biaozhu1.bmp 132KB
1.bmp 98KB
CenterLine2.bmp 3KB
bitmap2.bmp 1KB
bitmap4.bmp 1KB
bitmap5.bmp 1KB
bitmap3.bmp 1KB
bitmap6.bmp 1KB
bitmap1.bmp 1KB
ch.bmp 822B
bitmap7.bmp 690B
bitmap8.bmp 690B
bitmapar.bmp 690B
CircleLine.bmp 614B
DrawManagerDlg.cxx 23KB
AddComponentDlg.cxx 20KB
Compoencolormanager.cxx 15KB
TemplateDialog1.cxx 5KB
creotk.dat 181B
OTKDEMO.dll 13.71MB
材质库类别.docx 145KB
GB-DrawConfig.dtl 6KB
12.dtl 202B
机械爪.gif 2.37MB
creoTouralLink.gif 57KB
creoToural.gif 5KB
AFXCustom.gif 1KB
add.gif 936B
myCreo.html 34KB
ooopic_1531789444.ico 5KB
RGB_B.ico 4KB
share.ico 4KB
RGB_BLUE.ico 4KB
piliang.ico 4KB
RGB_YELLOW.ico 2KB
RGB_PURPLE.ico 2KB
RGB_ZI.ico 2KB
RGB_GREEN.ico 2KB
RGB_G.ico 2KB
RGB_RED.ico 2KB
RGB_R.ico 2KB
piliang(1).ico 630B
pubgeoms20x20.ico 471B
assembly32x32.ico 445B
part32x32.ico 306B
CenterLine.jpg 34KB
Dlg_Back.jpg 24KB
Personal.jpg 4KB
CreoLink.jpg 2KB
CreoBoxKey.lic 19B
CenterLine - 副本.png 197KB
0.png 57KB
ooopic_1532505847.png 15KB
CreoLink.png 7KB
weixinlink.png 6KB
share.png 6KB
1.png 5KB
4.png 5KB
5.png 5KB
2.png 5KB
共 212 条
- 1
- 2
- 3
资源评论
hy_arick
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功