AutoLisp 加载菜单
;; 主要为加载菜单
(setq MenuGroupName "菜单名")
(defun LoadMenu (/)
(setq MenuFileName "菜单名")
(setq MenuPath (findfile (strcat MenuFileName ".cuix")))
(if (= nil MenuPath)
(progn
(setq MenuPath (findfile (strcat MenuFileName ".mnu")))
(if (= nil MenuPath)
(setq MenuPath (findfile (strcat MenuFileName ".mns")))
)
)
)
(if (not (= nil MenuPath))
(command ".menuload" MenuPath)
)
)
;; 如果菜单未加载,则加载。
(if (null(menugroup MenuGroupName))
(LoadMenu)
)
ObjectArx加载菜单
使用ObjectArx函数
// acedLoadPartialMenu(const wchar_t* pszMenuFile); 加载菜单
// acedIsMenuGroupLoaded(const ACHAR * pszGroupName); 判断该菜单是否已加载
//加载菜单
void CLoadMenu(CString sName /*= _T("菜单名")*/)
{
//如果菜单未加载,则加载。
if (!acedIsMenuGroupLoaded(sName))
{
CString str;
CFileFind ff;
// 判断工作目录是否存在文件
str = _T("菜单文件路径\\") + sName;
if (ff.FindFile(str + _T(".cuix")))
{
acedLoadPartialMenu(str + _T(".cuix"));
}
else if(ff.FindFile(str + _T(".mnu")))
{
acedLoadPartialMenu(str + _T(".mnu"));
}
else if(ff.FindFile(str + _T(".mns")))
{
acedLoadPartialMenu(str + _T(".mns"));
}
}
}
//卸载菜单
void CUnLoadMenu(CString sName)
{
if (acedIsMenuGroupLoaded(sName))
{
acedUnloadPartialMenu(sName);
}
}
利用AutoLisp
//执行Lisp命令函数
void RunLisp(LPCTSTR szCmd)
{
CString strCmd(szCmd);
strCmd.Replace(_T("\\"), _T("\\\\"));
strCmd += _T("\n");
ads_queueexpr(strCmd);
}
//加载菜单
void CLoadMenu()
{
CString str, strCmd;
CFileFind ff;
// 判断工作目录是否存在文件
str = _T("菜单文件路径\\菜单名");
if (ff.FindFile(str + _T(".cuix")))
{
strCmd.Format(_T("(command \".menuload\" \"%s\")"), str);
RunLisp(strCmd);
}
else if(ff.FindFile(str + _T(".mnu")))
{
strCmd.Format(_T("(command \".menuload\" \"%s\")"), str);
RunLisp(strCmd);
}
else if(ff.FindFile(str + _T(".mns")))
{
strCmd.Format(_T("(command \".menuload\" \"%s\")"), str);
RunLisp(strCmd);
}
}
// acedIsMenuGroupLoaded :判断该菜单是否已加载
//如果菜单未加载,则加载。
if (!acedIsMenuGroupLoaded(_T("菜单名")))
{
CLoadMenu();
}