Example #1
0
// 释出所有对话框
void DestroyAllDialog()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	if (g_pDlgThick != NULL)
	{
		if (g_pDlgThick->GetSafeHwnd() != NULL)
			g_pDlgThick->DestroyWindow();

		SAFE_DELETE_POINTER(g_pDlgThick);
	}
}
Example #2
0
RawData::~RawData(){
    Log("Delete RawData");
    SAFE_DELETE_POINTER(this->data);
    Log("Delete Safely");
}
Example #3
0
// 生成包覆体
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;
}
Example #5
0
	void PhysicsWorld::DeleteInstance()
	{
		SAFE_DELETE_POINTER(m_pInstance);
	}
Example #6
0
Game::~Game()
{
    SAFE_DELETE_POINTER(character);
    SAFE_DELETE_POINTER(enemy);
}