加载cad菜单(.mns .mnu .cuix文件)

加载菜单

bool PhdUtility::LoadCadMenu(const CString& strMenuFileName, const CString& strMenuGroupName)
{
	CString strFilePath = ZYUtils::GetCurArxDir();
	strFilePath += strMenuFileName;

	CFileStatus st;
	if (!CFile::GetStatus(strFilePath, st))
		return false;

	if (strMenuGroupName.GetLength() < 1 || strFilePath.GetLength() < 1)
		return false;

	CString strCmdLoad;
	strFilePath.Replace(_T("\\"), _T("\\\\"));
	if (_T("") != strMenuGroupName && strFilePath.GetLength() > 0)
	{
		//加载有组名的菜单文件
		strCmdLoad.Format(_T("(if (null (menugroup \"%s\")) (command \"menuload\" \"%s\"))"), strMenuGroupName, strFilePath);
	}
	else
	{
		strCmdLoad.Format(_T("(command \"menuload\" \"%s\")"), strFilePath);
	}

	int erStat = ads_queueexpr((LPTSTR)(LPCTSTR)strCmdLoad);//此函数,相当于程序结束后,给CAD发送一个加载菜单的命令

	return true;
}

参数:
strMenuFileName - 输入菜单文件名(.mns .mnu .cuix文件) 因为权限问题最好用cuix文件
strMenuGroupName - 输入菜单组名


只要调用此函数,即可加载上cad菜单;如果菜单文件是.mns或.mnu文件且在c盘下,可能会因为权限原因加载不上,而.cuix文件不会出现这种原因,最好使用.cuix文件。

mns文件编写

// 插件菜单文件
//

***MENUGROUP=CNPEPlugin

***POP16
**CNPEPlugin
ID_CNPE_PLUGIN            [插件]

ID_TKK                    [图框]^C^CTKK
ID_TKMAN                   [图库]^C^CTKMAN

                [--]

ID_TYST                [生成投影视图]^C^CTYST    
ID_HFBS                [焊缝标识]^C^CHFBS
ID_XHBZ                [序号标注]^C^CXHBZ    
ID_MXB                [明细表]^C^CMXB    
                [->坐标点]
ID_SCZBD                [生成坐标点]^C^CSCZBD    
ID_TJZBD                [<-统计坐标点]^C^CTJZBD    

                [--]
                
                [->绘制]
ID_Hzqt                [墙体]^C^CHzqt    
ID_Hzdb                [底板]^C^CHzdb
ID_Hzgb                [钢板]^C^CHzgb    
ID_Hzymb                [预埋板]^C^CHzymb    
                [->绘制型钢]
ID_HZDBJG            [等边角钢]^C^CHZDBJG    
ID_HZBDBJG            [不等边角钢]^C^CHZBDBJG    
ID_HZGZG            [工字钢]^C^CHZGZG
ID_HZCG                [<-<-槽钢]^C^CHZCG    
ID_HZGK                [<-管卡]^C^CHZGK    


***TOOLBARS
**TB_CNPEPLUGIN
**插件
ID_TB_ZCPlugin            [_Toolbar("插件", _Floating, _Show, 0, 0, 1)]

ID_TKK                  [_Button("图框", "", "")]^C^CTKK
ID_TKMAN             [_Button("图库", "", "")]^C^CTKMAN
                [--]
ID_TYST                [_Button("生成投影视图", "", "")]^C^CTYST
ID_HFBS                [_Button("焊缝标识", "", "")]^C^CHFBS
                [--]
ID_XHBZ                [_Button("序号标注", "", "")]^C^CXHBZ
ID_MXB                [_Button("明细表", "", "")]^C^CMXB    
                [--]
ID_SCZBD                [_Button("生成坐标点", "", "")]^C^CSCZBD    
ID_TJZBD                [_Button("统计坐标点", "", "")]^C^CTJZBD
                [--]
ID_Hzqt                [_Button("绘制墙体", "", "")]^C^CHzqt
ID_Hzdb                [_Button("绘制底板", "", "")]^C^CHzdb    
ID_Hzgb                [_Button("绘制钢板", "", "")]^C^CHzgb    
ID_Hzymb                [_Button("绘制预埋板", "", "")]^C^CHzymb    
                [--]
ID_HZDBJG            [_Button("绘制等边角钢", "", "")]^C^CHZDBJG    
ID_HZBDBJG            [_Button("绘制不等边角钢", "", "")]^C^CHZBDBJG    
ID_HZGZG            [_Button("绘制工字钢", "", "")]^C^CHZGZG    
ID_HZCG                [_Button("绘制槽钢", "", "")]^C^CHZCG    
                [--]
ID_HZGK                [_Button("绘制管卡", "", "")]^C^CHZGK    

//
// 插件菜单文件 结束
//

卸载菜单

bool PhdUtility::UnloadCadMenu(const CString& strMenuGroupName)
{
	CString strCmdLoad;
	strCmdLoad.Format(_T("(command \"menuunload\" \"%s\")"), strMenuGroupName);
	int erStat = ads_queueexpr((LPTSTR)(LPCTSTR)strCmdLoad);
	return true;
}

参数:
strMenuGroupName - 输入菜单组名


直接调用此函数,输入菜单组名就可以卸载该组菜单。

你可能感兴趣的:(ObjectARX)