// 释出所有对话框 void DestroyAllDialog() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (g_pDlgThick != NULL) { if (g_pDlgThick->GetSafeHwnd() != NULL) g_pDlgThick->DestroyWindow(); SAFE_DELETE_POINTER(g_pDlgThick); } }
RawData::~RawData(){ Log("Delete RawData"); SAFE_DELETE_POINTER(this->data); Log("Delete Safely"); }
// 生成包覆体 void OnCreateBodyActFn() { /*if (!QuickCheckValidLicense(SMART_PROFESSIONAL)) return;*/ AFX_MANAGE_STATE(AfxGetStaticModuleState()); DestroyAllDialog(); CancelSelectDialog(); Sleep(50); // 检查当前模型环境 ProMdl pMdl = GetCurrentMdl(); if (pMdl == NULL) { MessageBox(NULL, L"当前环境未发现模型!", L"提示", MB_OK|MB_ICONWARNING); return; } ProMdlType typeMdl; ProMdlTypeGet(pMdl, &typeMdl); if (typeMdl != PRO_MDL_ASSEMBLY) { MessageBox(NULL, L"该功能仅在装配环境下有效!", L"提示", MB_OK|MB_ICONWARNING); return; } //ExportElemTreeXML(); // 选择一个面组 vector<ProSelection> arrSelQlt; ShowMessageTip(L"Tips.选择要加厚的包覆面..."); if (SelectObject(arrSelQlt, "dtmqlt")) { // 输入整体加厚值 double dThickValue; ShowMessageTip(L"指定厚度值,不能为0,负值表示向内加厚:"); if (ProMessageDoubleRead(NULL, &dThickValue) == PRO_TK_NO_ERROR) { // 创建发布几何 int nPubFeatID = CreatePublishGeom(pMdl, arrSelQlt[0]); ProName nameAsm; ProMdlNameGet(pMdl, nameAsm); CString strNamePart = nameAsm; ProName namePart; for (int i=101; ;i++) { CString strTemp; strTemp.Format(L"%s_%d", nameAsm, i); wcsncpy_s(namePart, PRO_NAME_SIZE, strTemp, _TRUNCATE); ProMdl pMdlTemp; if (ProMdlInit(namePart, PRO_MDL_PART, &pMdlTemp) == PRO_TK_E_NOT_FOUND) break; } // 新建一个零件 ProAsmcomp compPart; ProAsmcompCreateCopy(ProMdlToAssembly(pMdl), namePart, PRO_MDL_PART, NULL, PRO_B_FALSE, &compPart); //ProSolidRegenerate(pMdl); ProMdl pMdlPart; ProAsmcompMdlGet(&compPart, &pMdlPart); ProModelitem itemAsm; ProMdlToModelitem(pMdl, &itemAsm); ProSelection selAsm; ProSelectionAlloc(NULL, &itemAsm, &selAsm); ProFeature featPub; featPub.id = nPubFeatID; featPub.owner = pMdl; featPub.type = PRO_FEATURE; ProSelection selPubFeat; ProSelectionAlloc(NULL, &featPub, &selPubFeat); // 创建复制几何 ProModelitem itemCopyQuilt; CreateCopyGeom(pMdlPart, selAsm, selPubFeat, itemCopyQuilt); ProSelection selCopyQuilt; ProSelectionAlloc(NULL, &itemCopyQuilt, &selCopyQuilt); // 弹出提示:是否要对单个面设置厚度 if (MessageBox(NULL, L"是否要对单个面设置厚度", L"提示", MB_YESNO|MB_ICONQUESTION) == IDYES) { ProMdlDisplay(pMdlPart); int nWndIDPart; ProMdlWindowGet(pMdlPart, &nWndIDPart); ProWindowActivate(nWndIDPart); // 弹出对话框 if (g_pDlgThick != NULL) { if (g_pDlgThick->GetSafeHwnd() != NULL) g_pDlgThick->DestroyWindow(); SAFE_DELETE_POINTER(g_pDlgThick); } g_pDlgThick = new CDlgSetThick(); g_pDlgThick->InitSurfData(pMdl, selCopyQuilt, dThickValue); g_pDlgThick->Create(IDD_DLG_SETTHICK); g_pDlgThick->ShowWindow(SW_SHOW); } else { ThickQuilt(pMdlPart, selCopyQuilt, dThickValue); } } } InvalidateDrawing(); ProMessageClear(); }
// 检查开始,传出检查结果 int CSDMdl505SingleEquipFeatCheck::CheckAction(void *pData, const CheckRule &checkRule, CheckResult &checkResult) { checkRule; ProMdl pAsmMdl = (ProMdl)pData; // 模型有效性 if (NULL == pAsmMdl) { checkResult.nResultType = CHECK_RESULT_INVALID_MODEL; return checkResult.nResultType; } // 模型类型有效性 if (!IsMdlTypeValid(pAsmMdl, checkRule.dwMdlFilter)) { checkResult.nResultType = CHECK_RESULT_INVALID_MODEL; return checkResult.nResultType; } // 检查模型是否为单机设备 ProMdl pMdl = NULL; if (!SingleEquipCheck(pAsmMdl, pMdl)) { checkResult.nResultType = CHECK_RESULT_INVALID_MODEL; return CHECK_RESULT_INVALID_MODEL; } checkResult.arrErrorItems.RemoveAll(); CSDCheck* pCheck = NULL; CheckResult res; CStringArray arrResult; CheckRule rule; // 检查点特征 pCheck = new CSDMdl505PointFeatureCheck; rule.arrRuleContent.SetSize(0); rule.dwMdlFilter = MODELFILTER_ASM; pCheck->CheckAction(pAsmMdl, rule, res); if (res.nResultType != CHECK_RESULT_NO_ERROR) { arrResult.Add(L"点特征"); } SAFE_DELETE_POINTER(pCheck); // 检查特征序列 pCheck = new CSDMdlAttrFeaSystemCheck; rule.arrRuleContent.SetSize(1); rule.dwMdlFilter = MODELFILTER_PRT; rule.arrRuleContent[0] = L"坐标系(CSYS) 坐标系(RSYS) 坐标系(CS_质心)"; pCheck->CheckAction(pMdl, rule, res); if (res.nResultType != CHECK_RESULT_NO_ERROR) { arrResult.Add(L"特征序列"); } SAFE_DELETE_POINTER(pCheck); // 检查发布几何 pCheck = new CSDMdl505PubGeomCheck; rule.arrRuleContent.SetSize(0); rule.dwMdlFilter = MODELFILTER_ASM; pCheck->CheckAction(pAsmMdl, rule, res); if (res.nResultType != CHECK_RESULT_NO_ERROR) { arrResult.Add(L"发布几何"); } SAFE_DELETE_POINTER(pCheck); if (arrResult.GetCount() > 0) { ErrorItem errItem; CStringArrayToCString(arrResult, errItem.strItemName, L"、"); errItem.strItemName = CString(L"单机设备的") + errItem.strItemName + CString(L"不符合要求"); checkResult.arrErrorItems.Add(errItem); checkResult.nResultType = CHECK_RESULT_INVALID_VALUE; } return checkResult.nResultType; }
void PhysicsWorld::DeleteInstance() { SAFE_DELETE_POINTER(m_pInstance); }
Game::~Game() { SAFE_DELETE_POINTER(character); SAFE_DELETE_POINTER(enemy); }