天天看點

加載CAD菜單

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 str;
	CFileFind ff;

	// 判斷工作目錄是否存在檔案
	str = _T("菜單檔案路徑\\菜單名");
	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"));
	}
}

//如果菜單未加載,則加載。
if (!acedIsMenuGroupLoaded(_T("菜單名")))
{
	CLoadMenu();
}
           

利用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();
}
           

繼續閱讀