青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

Managed ObjectArx 定制autocad的界面(包括menu.toolbar等...)

// ?Copyright?2005-2006?by?Autodesk,?Inc.
//
// Permission?to?use,?copy,?modify,?and?distribute?this?software?in
// object?code?form?for?any?purpose?and?without?fee?is?hereby?granted,?
// provided?that?the?above?copyright?notice?appears?in?all?copies?and?
// that?both?that?copyright?notice?and?the?limited?warranty?and
// restricted?rights?notice?below?appear?in?all?supporting?
// documentation.
//
// AUTODESK?PROVIDES?THIS?PROGRAM?"AS?IS"?AND?WITH?ALL?FAULTS.?
// AUTODESK?SPECIFICALLY?DISCLAIMS?ANY?IMPLIED?WARRANTY?OF
// MERCHANTABILITY?OR?FITNESS?FOR?A?PARTICULAR?USE.??AUTODESK,?INC.?
// DOES?NOT?WARRANT?THAT?THE?OPERATION?OF?THE?PROGRAM?WILL?BE
// UNINTERRUPTED?OR?ERROR?FREE.
//
// Use,?duplication,?or?disclosure?by?the?U.S.?Government?is?subject?to?
// restrictions?set?forth?in?FAR?52.227-19?(Commercial?Computer
// Software?-?Restricted?Rights)?and?DFAR?252.227-7013(c)(1)(ii)
// (Rights?in?Technical?Data?and?Computer?Software),?as?applicable.
using ?System;
using ?System.IO;
using ?Autodesk.AutoCAD.Runtime;
using ?Autodesk.AutoCAD.ApplicationServices;
using ?Autodesk.AutoCAD.EditorInput;
using ?Autodesk.AutoCAD.DatabaseServices;

using ?Autodesk.AutoCAD.Customization;

// ?This?application?implements?several?commands?that?shows?how?to
// ?manipulate?some?of?the?existing?CUI?User?interface?and?components.
// ?The?commands?implemented?here?allow?you?to:
//
// ?1)?Create/Remove?menu?and?its?items?(ADDMENU/REMMENU)
// ?3)?Create/Remove?a?workspace?(ADDWS/REMWS)
// ?2)?Create/Remove?a?toolbar?and?its?items?(ADDTOOLBAR/REMTOOLBAR)
// ?4)?Create?a?keyboard?shortcut?(CUISHORTCUT)
// ?5)?Create?a?temporary?override?(TEMPKEY)
// ?6)?Change?position?and?docking?of?"Info?Palette"?
// ????window?(DOCKR,?DOCKL,?DOCKF)
// ?7)?Add?a?double-click?action?(DBLCLICK)
// ?8)?A?command?that?performs?the?tasks?of?ADDMENU,ADDTOOLBAR,
// ????DOCKL?and?CUISHORTCUT?(CUIALL)
// ?9)?Save?a?CUI?after?its?modifications?and?reload?it?(SAVECUI)

// ?Apart?from?the?above?commands,?lisp?wrappers?have?also?been?
// ?implemented?to?make?the?commands?callable?from?windows.

// ?To?use?CuiSamp.dll:
// ?1)?Start?AutoCAD?and?open?a?new?drawing.
// ?2)?Type?netload?and?select?CuiSamp.dll.
// ?3)?Execute?the?CUIALL?command,?if?you?want?the?UI?related?
// ????modifications.

// ?Please?add?the?References?acdbmgd.dll,acmgd.dll,
// ?AcCui.dll?and?AcCustomize.dll?before?trying?to?
// ?build?this?project.

namespace ?CuiSamp
{
????
/// ? <summary>
????
/// ?Summary?description?for?Class1.
????
/// ? </summary>

???? public ? class ?CuiSamp
????
{
????????
// ?All?Cui?files?(main/partial/enterprise)?have?to?be?loaded?into?an?object?of?class?
????????
// ?CustomizationSection
????????
// ?cs?-?main?AutoCAD?CUI?file
????????CustomizationSection?cs;
????????CustomizationSection?entCs;
????????CustomizationSection[]partials?;
????????
????????
int ?numPartialFiles;

????????YesNoIgnoreToggle?yes?
= ?YesNoIgnoreToggle.yes;
????????YesNoIgnoreToggle?no??
= ?YesNoIgnoreToggle.no;
????????
????????
// ?True?when?enterprise?CUI?file?is?loaded?successfully
???????? bool ?entCsLoaded;

????????
// ?ed?-?access?to?the?AutoCAD?Command?Line
????????
// ?Allows?us?to?write?messages?or?Issue?Commands?in?the?interface
????????Editor?ed? = ?Application.DocumentManager.MdiActiveDocument.Editor;


????????
// Default?Constructor
???????? public ?CuiSamp()
????????
{
????????????
// ?retrieve?the?location?of,?and?open?the?ACAD?Main?CUI?File
???????????? string ?mainCuiFile? = ?( string )Application.GetSystemVariable( " MENUNAME " );
????????????mainCuiFile?
+= ? " .cui " ;
????????????cs?
= ? new ?CustomizationSection(mainCuiFile);
????????????
????????????
string ?entCuiFile? = ?( string )Application.GetSystemVariable( " ENTERPRISEMENU " );
????????????
if (?entCuiFile.Equals( " . " ))
????????????????entCsLoaded?
= ? false ;
????????????
else
????????????
{
????????????????entCs?
= ? new ?CustomizationSection(entCuiFile);
????????????????entCsLoaded?
= ? true ;
????????????}

????????????
????????????
// ?Code?for?loading?all?partial?CUI's?listed?in?the?main?CUI?file
????????????
????????????partials?
= ? new ?CustomizationSection[cs.PartialCuiFiles.Count];
????????????
int ?i = 0 ;
????????????
foreach ( string ?fileName? in ?cs.PartialCuiFiles)
????????????
{????
????????????????
if ?(File.Exists(fileName))
????????????????
{
????????????????????partials[i]?
= ? new ?CustomizationSection(fileName);
????????????????????i
++ ;
????????????????}

????????????}

????????????numPartialFiles?
= ?i;????
????????}



????????
// ?Command:?savecui
????????
// ?This?Command?saves?all?open?CUI?Files?that?have?been?modified
????????[CommandMethod( " savecui " )]
????????
public ? void ?saveCui()
????????
{
????????????
// ?Save?all?Changes?made?to?the?CUI?file?in?this?session.?
????????????
// ?If?changes?were?made?to?the?Main?CUI?file?-?save?it
????????????
// ?If?changes?were?made?to?teh?Partial?CUI?files?need?to?save?them?too
????
????????????
if (cs.IsModified)
????????????????cs.Save();

????????????
for ( int ?i = 0 ;i? < ?numPartialFiles;i ++ )
????????????
{????
????????????????
if (partials[i].IsModified)
????????????????????partials[i].Save();
????????????}

????????????
????????????
if (entCsLoaded? && ?entCs.IsModified)
????????????????entCs.Save();

????????????
// ?Here?we?unload?and?reload?the?main?CUI?file?so?the?changes?to?the?CUI?file?could?take?effect?immediately.
???????????? string ?flName? = ?cs.CUIFileBaseName;
????????????Application.SetSystemVariable(
" FILEDIA " , 0 );
????????????Application.DocumentManager.MdiActiveDocument.SendStringToExecute(
" cuiunload? " ? + ?flName? + ? " ? " , false , false , false );
????????????Application.DocumentManager.MdiActiveDocument.SendStringToExecute(
" cuiload? " ? + ?flName? + ? " ?filedia?1? " , false , false , false );
????????}


????????
// ?Lisp?callable?function:?savecui
????????
// ?Lisp?wrapper?for?savecui?command
????????[LispFunction( " savecui " )]
????????
public ? void ?saveCui(ResultBuffer?args)
????????
{
????????????saveCui();
????????}


????????
// ?Command:?addmenu
????????
// ?This?Command?adds?a?new?menu?to?all?workspaces?called?Custom?Menu,?which?contains?2?sub?items
????????
// ?The?Menu?is?first?added?to?the?Main?CUI?File?and?then?added?to?all?it's?workspaces.?
????????[CommandMethod( " addmenu " )]
????????
public ? void ?addMenu()
????????
{
????????????
if ?(cs.MenuGroup.PopMenus.IsNameFree( " Custom?Menu " ))
????????????
{
????????????????
????????????????System.Collections.Specialized.StringCollection?pmAliases?
= ? new ?System.Collections.Specialized.StringCollection();
????????????????pmAliases.Add(
" POP12 " );
????????????????
????????????????PopMenu?pm?
= ? new ?PopMenu( " Custom?Menu " ,pmAliases, " Custom?Menu " ,cs.MenuGroup);
????????????????
????????????????addItemsToPM(pm);
????????????????addMenu2Workspaces(pm);
????????????}

????????????
else
????????????????ed.WriteMessage(
" Custom?Menu?already?Exists\n " );????
????????}


????????
// ?Lisp?callable?function:?addmenu
????????
// ?Lisp?wrapper?for?addmenu?command
????????[LispFunction( " addmenu " )]
????????
public ? void ?addMenu(ResultBuffer?args)
????????
{
????????????addMenu();
????????}


????????
// ?Add?new?Items?to?a?PopMenu
???????? private ? void ?addItemsToPM(PopMenu?pm)
????????
{
????????????PopMenuItem?pmi?
= ? new ?PopMenuItem(pm, - 1 );
????????????pmi.MacroID?
= ? " ID_AUGI " ;pmi.Name? = ? " Autodesk?User?Group?International " ;
????????????
????????????pmi?
= ? new ?PopMenuItem(pm, - 1 );

????????????pmi?
= ? new ?PopMenuItem(pm, - 1 );
????????????pmi.MacroID?
= ? " ID_CustomSafe " ;pmi.Name? = ? " Online?Developer?Center " ;
????????}


????????
// ?Add?the?menu?to?all?the?workspaces
???????? private ? void ?addMenu2Workspaces(PopMenu?pm)
????????
{
????????????
foreach (Workspace?wk? in ?cs.Workspaces)
????????????
{
????????????????WorkspacePopMenu?wkpm?
= ? new ?WorkspacePopMenu(wk,pm);
????????????????wkpm.Display?
= ? 1 ;
????????????}

????????
????????}

????
????????
// ?Command:?remmenu
????????
// ?This?Command?deletes?the?menu?added?above?from?the?Main?CUI?File?and?any
????????
// ??workspaces?that?it?was?added?to.?
????????[CommandMethod( " remmenu " )]
????????
public ? void ?remMenu()
????????
{
????????????
// ?Find?Index?of?the?desired?MenuItem
????????????
// ?Remove?it?from?all?Workspaces?that?it?exists?in
????????????
// ?Omitting?this?step?leaves?nasty?left-overs?in?the?Workspace?files
????????????
// ?Remove?it?from?the?Cui?files'?Menu?List
????????????
????????????PopMenu????pm?
= ?cs.MenuGroup.PopMenus.FindPopWithAlias( " POP12 " );
????????????
if ?(pm? != ? null ?)
????????????
{
????????????????
foreach (Workspace?wk? in ?cs.Workspaces)
????????????????
{
????????????????????WorkspacePopMenu?wkPm?
= ?wk.WorkspacePopMenus.FindWorkspacePopMenu(pm.ElementID,pm.Parent.Name);
????????????
????????????????????
if (wkPm? != ? null )
????????????????????????wk.WorkspacePopMenus.Remove(wkPm);
????????????????}

????????????????cs.MenuGroup.PopMenus.Remove(pm);????
// ?Deletes?the?Menu?from?ACAD?Menu?Group
????????????}

????????}


????????
// ?Lisp?callable?function:?remmenu
????????
// ?Lisp?wrapper?for?remmenu?command
????????[LispFunction( " remmenu " )]
????????
public ? void ?remMenu(ResultBuffer?args)
????????
{
????????????remMenu();
????????}


????????
// ?Command:?addws
????????
// ?This?command?adds?a?new?workspace.?The?name?of?the?workspace?to?create?is
????????
// ?obtained?from?the?command?line.
????????[CommandMethod( " addws " )]
????????
public ? void ?addws()
????????
{
????????????String?wsName;
????????????PromptResult?prs?
= ?ed.GetString( " Enter?name?of?workspace?to?create:? " );
????????????
if (PromptStatus.OK? == ?prs.Status?)
????????????
{
????????????????wsName?
= ?prs.StringResult;
????????????????
if ( - 1 ? == ?cs.Workspaces.IndexOfWorkspaceName(wsName))? // ?If?the?workspace?doesnot?exist
???????????????? {
????????????????????Workspace?nwWs?
= ? new ?Workspace?(cs,?wsName);? // ?Create?the?workspace
????????????????????saveCui();? // ?Save?and?reload?the?CUI?file
????????????????}

????????????????
else
????????????????
{
????????????????????ed.WriteMessage(
" A?workspace?with?this?name?already?exists " );
????????????????}

????????????}


????????}


????????
// ?Lisp?callable?function:?addws
????????
// ?Lisp?wrapper?for?addws?command
????????[LispFunction( " addws " )]
????????
public ? void ?addws(ResultBuffer?args)
????????
{
????????????addws();
????????}


????????
// ?Command:?remws
????????
// ?This?command?removes?a?workspace.?The?name?of?the?workspace?to?remove?is
????????
// ?obtained?from?the?command?line.
????????[CommandMethod( " remws " )]
????????
public ? void ?remws()
????????
{
????????????String?wsName;
????????????PromptResult?prs?
= ?ed.GetString( " Enter?name?of?workspace?to?remove:? " );
????????????
if (PromptStatus.OK? == ?prs.Status?)
????????????
{
????????????????wsName?
= ?prs.StringResult;
????????????????
if ( - 1 ? != ?cs.Workspaces.IndexOfWorkspaceName(wsName))? // ?If?the?workspace?exist
???????????????? {
????????????????????cs.deleteWorkspace(wsName);?
// ?Remove?the?workspace
????????????????????saveCui();? // ?Save?and?reload?the?CUI?file
????????????????}

????????????????
else
????????????????
{
????????????????????ed.WriteMessage(
" No?workspace?exists?with?this?name " );
????????????????}

????????????}

????????????
????????}

????????
// ?Lisp?callable?function:?remws
????????
// ?Lisp?wrapper?for?remws?command
????????[LispFunction( " remws " )]
????????
public ? void ?remws(ResultBuffer?args)
????????
{
????????????remws();
????????}



????????
// ?Command:?cuishortcut
????????
// ?This?adds?a?Shortcut?key?to?the?CUI?command.
????????
// ?Ctrl+B?is?used?for?Toggling?SNAP.?It?gets?reassigned
????????[CommandMethod( " cuishortcut " )]
????????
public ? void ?shortCut()
????????
{
????????????
// ?In?here?we?will?make?a?shortcut?Key?combination?to?the?Customize..?command
????????????MacroGroup?mg? = ?cs.MenuGroup.MacroGroups[ 0 ];? // ?Search?the?ACAD?Macros
???????????? foreach ?(MenuMacro?mcr? in ?mg.MenuMacros)
????????????
{
????????????????
if (mcr.ElementID.Equals( " MM_1570 " ))
????????????????
{
????????????????????MenuAccelerator?ma?
= ? new ?MenuAccelerator(mcr,cs.MenuGroup);
????????????????????ma.AcceleratorShortcutKey?
= ? " CTRL+B " ;
????????????????}

????????????}

????????}

????????
// ?Lisp?callable?function:?cuishortcut
????????
// ?Lisp?wrapper?for?cuishortcut?command
????????[LispFunction( " cuishortcut " )]
????????
public ? void ?shortCut(ResultBuffer?args)
????????
{
????????????shortCut();
????????}


????????
// ?Command:?dockr
????????
// ?Dock?Info?Palette?to?the?right
????????[CommandMethod( " dockr " )]
????????
public ? void ?dockInfoPalR()
????????
{
????????????dockInfoPalette(DockableWindowOrient.right);
????????}

????????
// ?Lisp?callable?function:?dockr
????????
// ?Lisp?wrapper?for?dockr?command
????????[LispFunction( " dockr " )]
????????
public ? void ?dockInfoPalR(ResultBuffer?args)
????????
{
????????????dockInfoPalR();
????????}


????????
// ?Command:?dockl
????????
// ?Dock?Info?Palette?to?the?left
????????[CommandMethod( " dockl " )]
????????
public ? void ?dockInfoPalL()
????????
{
????????????dockInfoPalette(DockableWindowOrient.left);
????????}


????????
// ?Lisp?callable?function:?dockl
????????
// ?Lisp?wrapper?for?dockl?command
????????[LispFunction( " dockl " )]
????????
public ? void ?dockInfoPalL(ResultBuffer?args)
????????
{
????????????dockInfoPalL();
????????}


????????
// ?Command:?dockf
????????
// ?Set?Info?Palette?to?float
????????[CommandMethod( " dockf " )]
????????
public ? void ?dockInfoPalF()
????????
{
????????????dockInfoPalette(DockableWindowOrient.floating);
????????}

????????
// ?Lisp?callable?function:?dockf
????????
// ?Lisp?wrapper?for?dockf?command
????????[LispFunction( " dockf " )]
????????
public ? void ?dockInfoPalF(ResultBuffer?args)
????????
{
????????????dockInfoPalF();
????????}



????????
// ?Method?to?implement?the?positiioning/docking?of?the?"Info?Palette"?window
???????? private ? void ?dockInfoPalette(DockableWindowOrient?orientation)
????????
{
????????????
int ?wkB? = ?cs.Workspaces.IndexOfWorkspaceName( " AutoCAD?Default " );
????????????
// ?check?to?see?if?it?exists
???????????? if ?(wkB? == ? - 1 )
????????????
{
????????????????
// ?if?not,?then?see?if?it?is?called?simply?AutoCAD
????????????????wkB? = ?cs.Workspaces.IndexOfWorkspaceName( " AutoCAD " );
????????????????
if ?(wkB? == ? - 1 )
????????????????
{
????????????????????
// ?if?not,?then?ok?-?it's?something?else
????????????????????Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage( " Workspace?not?found. " );
????????????????????
return ;
????????????????}

????????????}

????????????Workspace?wk?
= ?cs.Workspaces[wkB];
????????????
????????????
foreach (WorkspaceDockableWindow?dockableWindow? in ?wk.DockableWindows)
????????????
{
????????????????
if (dockableWindow.Name.Equals( " Info?Palette " ))
????????????????
{????
????????????????????
if (orientation.Equals(DockableWindowOrient.floating))
????????????????????????dockableWindow.DockFloat?
= ?DockedFloatingIgnoreToggle.floating;
????????????????????
else ????
????????????????????????dockableWindow.DockFloat?
= ?DockedFloatingIgnoreToggle.docked;

????????????????????dockableWindow.Display?
= ?yes;
????????????????????dockableWindow.Orientation?
= ?orientation;
????????????????????dockableWindow.AutoHide?
= ?OnOffIgnoreToggle.off;
????????????????????dockableWindow.UseTransparency?
= ?no;
????????????????????
break ;
????????????????}

????????????}

????????}


????????
// ?Command:?addtoolbar
????????
// ?Creates?a?new?toolbar?called?"New?Toolbar",?and?adds?it?to?all?workspaces.?
????????
// ?This?toolbar?contains?a?Toolbar?control?for?named?view,?button?for?drawing?
????????
// ?a?pline,?and?a?flyout?that?uses?the?"Draw"?tool?bar.
????????[CommandMethod( " addtoolbar " )]
????????
public ? void ?addToolbar()
????????
{
????????????Toolbar?newTb?
= ? new ?Toolbar( " New?Toolbar " ,cs.MenuGroup);
????????????newTb.ToolbarOrient?
= ?ToolbarOrient.floating;
????????????newTb.ToolbarVisible?
= ?ToolbarVisible.show;
????????????
????????????ToolbarControl?tbCtrl?
= ? new ?ToolbarControl(ControlType.NamedViewControl,newTb, - 1 );
????????????????????????
????????????ToolbarButton?tbBtn?
= ? new ?ToolbarButton(newTb, - 1 );
????????????tbBtn.Name?
= ? " PolyLine " ;
????????????tbBtn.MacroID?
= ? " ID_Pline " ;

????????????ToolbarFlyout?tbFlyout?
= ? new ?ToolbarFlyout(newTb, - 1 );
????????????tbFlyout.ToolbarReference?
= ? " DRAW " ;

????????????
foreach (?Workspace?wk? in ?cs.Workspaces)
????????????
{
????????????????WorkspaceToolbar?wkTb?
= ? new ?WorkspaceToolbar(wk,newTb);
????????????????wk.WorkspaceToolbars.Add(wkTb);
????????????????wkTb.Display?
= ? 1 ;
????????????}

????????}

????????
// ?Lisp?callable?function:?addtoolbar
????????
// ?Lisp?wrapper?for?addtoolbar?command
????????[LispFunction( " addtoolbar " )]
????????
public ? void ?addToolbar(ResultBuffer?args)
????????
{
????????????addToolbar();
????????}


????????
// ?Command:?remtoolbar
????????
// ?This?Command?removes?the?toolbar?added?above?from?the?Main?CUI?File?and?any
????????
// ?workspaces?that?it?was?added?to.?
????????[CommandMethod( " remtoolbar " )]
????????
public ? void ?remToolbar()
????????
{
????????????Toolbar?tbr?
= ?cs.MenuGroup.Toolbars.FindToolbarWithName( " New?Toolbar " );
????????????
if ?(tbr? != ? null ?)
????????????
{
????????????????
foreach (Workspace?wk? in ?cs.Workspaces)
????????????????
{
????????????????????WorkspaceToolbar?wkTb?
= ?wk.WorkspaceToolbars.FindWorkspaceToolbar(tbr.ElementID,tbr.Parent.Name);
????????????
????????????????????
if (wkTb? != ? null )
????????????????????????wk.WorkspaceToolbars.Remove(wkTb);
????????????????}

????????????????cs.MenuGroup.Toolbars.Remove(tbr);????
// ?Deletes?the?toolbar?from?ACAD?Menu?Group
????????????}

????????}


????????
// ?Lisp?callable?function:?remtoolbar
????????
// ?Lisp?wrapper?for?remtoolbar?command
????????[LispFunction( " remtoolbar " )]
????????
public ? void ?remToolbar(ResultBuffer?args)
????????
{
????????????remToolbar();
????????}


????????
// ?Command:?tempkey
????????
// ?This?command?will?install?a?temporary?override?key.?Temporary?override?keys?are?keys?that?temporarily?
????????
// ?turn?on?or?turn?off?one?of?the?drawing?aids?that?are?set?in?the?Drafting?Settings?dialog?box?
????????
// ?(for?example,?Ortho?mode,?object?snaps,?or?Polar?mode).
????????[CommandMethod( " tempkey " )]
????????
public ? void ?tempOverride()
????????
{
????????????TemporaryOverride?newTempOverride?
= ? new ?TemporaryOverride(cs.MenuGroup);????
????????????newTempOverride.OverrideShortcutKey?
= ? " SHIFT+Y " ;? // ?Scan?code?for?Y
????????????newTempOverride.Name? = ? " Customization?Override " ;
????????????newTempOverride.Description?
= ? " Customization?Override " ;
????????????newTempOverride.ElementID?
= " EID_CUITEMPOVERRIDE " ;
????????????
// ?Creating?a?override?for?Shift+Y?(Key?down)?that?will?behave?as?temporary?override?for?OSnap?to?endpoint?(MM_1629)
????????????OverrideItem?newOverrideItem? = ? new ?OverrideItem( " MM_1629 " ,OverrideKeyState.Down,newTempOverride);
????????????newTempOverride.DownOverride?
= ?newOverrideItem;????????????
????????}

????????
// ?Lisp?callable?function:?tempkey
????????
// ?Lisp?wrapper?for?tempkey?command
????????[LispFunction( " tempkey " )]
????????
public ? void ?tempOverride(ResultBuffer?args)
????????
{
????????????tempOverride();
????????}


????????
// ?Command:?dblclick
????????
// ?This?command?adds?a?double?click?action?for?polylines?(Non-LWpolylines?like?2D?polylines).
????????
// ?After?running?this?command,?When?we?double?click?a?polyline?(i.e.,?a?non-light?weight?polyline),?
????????
// ?the?"Properties"?window?is?launched.?This?replaces?the?original?behaviour?where?"pedit"?was?launched.
????????[CommandMethod( " dblclick " )]
????????
public ? void ?doubleClick()
????????
{
????????????DoubleClickAction?dblClickAction?
= ? new ?DoubleClickAction(cs.MenuGroup, " My?Double?click " , - 1 );
????????????dblClickAction.Description?
= ? " Double?Click?Customization " ;
????????????dblClickAction.ElementID?
= ? " EID_mydblclick " ;
????????????dblClickAction.DxfName?
= ? " Polyline " ;
????????????DoubleClickCmd?dblClickCmd?
= ? new ?DoubleClickCmd(dblClickAction);
????????????dblClickCmd.MacroID?
= ? " ID_Ai_propch " ;
????????????dblClickAction.DoubleClickCmd?
= ?dblClickCmd;
????????}

????????
// ?Lisp?callable?function:?dblclick
????????
// ?Lisp?wrapper?for?dblclick?command
????????[LispFunction( " dblclick " )]
????????
public ? void ?doubleClick(ResultBuffer?args)
????????
{
????????????doubleClick();
????????}


????????
????????
// ?Command:?cuiall
????????
// ?Issuing?this?command?will?run?the?methods?to?make?all?changes?to?the?UI
????????
// ?This?will?add?the?custom?menu,?toolbar,?and?shortcut,?as?well?as?
????????
// ?dock?the?info?palette?on?the?right?side.
????????[CommandMethod( " cuiall " )]
????????
public ? void ?callForAllChanges()
????????
{
????????????addMenu();
????????????shortCut();
????????????addToolbar();
????????????dockInfoPalR();
????????????saveCui();
????????}

????????
// ?Lisp?callable?function:?cuiall
????????
// ?Lisp?wrapper?for?cuiall?command
????????[LispFunction( " cuiall " )]
????????
public ? void ?callForAllChanges(ResultBuffer?args)
????????
{
????????????callForAllChanges();
????????}


????}

}



需要ref dlls:accui.dll(在cad的安裝目錄)?, acmgd.dll? ,acdbmgd.dll

Lisp命令需要的attribute.

posted on 2006-07-03 14:22 夢在天涯 閱讀(3868) 評論(1)  編輯 收藏 引用 所屬分類: ARX/DBX

評論

# re: Managed ObjectArx 定制autocad的界面(包括menu.toolbar等...) 2009-11-02 10:10 jdmei520

果然高手,是autodesk公司內部程序嗎?  回復  更多評論   

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812134
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久国产高清| 欧美日韩喷水| 伊人久久成人| 欧美成人性网| 欧美黑人在线观看| 一区二区三区成人精品| 亚洲美女毛片| 欧美午夜不卡在线观看免费| 亚洲欧美另类在线| 亚洲欧美色一区| 亚洲一区二区av电影| 亚洲欧洲一区二区天堂久久 | 在线视频精品一区| 国产精品欧美一区二区三区奶水 | 亚洲国产专区校园欧美| 亚洲欧洲日韩综合二区| 欧美顶级艳妇交换群宴| 亚洲欧美视频| 另类亚洲自拍| 亚洲欧美中文另类| 欧美a级片网| 午夜精品视频一区| 欧美本精品男人aⅴ天堂| 亚洲专区一区| 美女尤物久久精品| 午夜精品久久久久久久| 久久五月激情| 亚洲欧美中日韩| 欧美日本韩国一区| 免费成人黄色| 91久久国产精品91久久性色| 亚洲精品在线视频| 在线观看视频免费一区二区三区| 欧美韩日一区| 国产视频久久久久| 99精品视频免费在线观看| 国产性天天综合网| 一本一本久久a久久精品综合妖精| 狠狠色噜噜狠狠狠狠色吗综合| 久久精品av麻豆的观看方式| 欧美日韩精品一区二区天天拍小说 | 亚洲一区观看| 久久久女女女女999久久| 亚洲一区三区电影在线观看| 老鸭窝毛片一区二区三区| 欧美影院午夜播放| 欧美日韩精品欧美日韩精品一 | 亚洲福利视频二区| 欧美一区二区三区在线看| 亚洲一区在线免费| 欧美精品免费视频| 亚洲国产第一| 亚洲高清网站| 久久男人资源视频| 久久www成人_看片免费不卡| 国产精品黄视频| 999在线观看精品免费不卡网站| 亚洲精品精选| 欧美成ee人免费视频| 久久综合伊人77777| 国产在线精品二区| 午夜精品一区二区三区在线| 性8sex亚洲区入口| 国产伦精品一区二区三区视频黑人| 亚洲天堂网在线观看| 亚洲男女毛片无遮挡| 国产精品hd| 亚洲欧美日韩综合一区| 香蕉久久夜色| 韩国一区二区三区在线观看| 久久国产精品99国产精| 久久一区二区三区四区五区| 一区视频在线播放| 美女尤物久久精品| 日韩系列欧美系列| 亚洲欧美卡通另类91av| 国产精品免费网站| 欧美伊人久久| 欧美大学生性色视频| 亚洲毛片网站| 国产精品久久一区二区三区| 亚洲综合精品一区二区| 久久成人这里只有精品| 韩国一区电影| 欧美理论视频| 午夜国产欧美理论在线播放| 久久久综合免费视频| 欲香欲色天天天综合和网| 免播放器亚洲一区| 亚洲日韩欧美一区二区在线| 亚洲神马久久| 美国成人毛片| 亚洲人成网站777色婷婷| 欧美电影电视剧在线观看| 亚洲免费观看高清完整版在线观看| 亚洲欧美中日韩| 亚洲国产91| 国产精品videosex极品| 欧美在线日韩精品| 亚洲人成在线观看一区二区| 欧美亚洲专区| 亚洲日本电影在线| 国产精品久久久久久模特| 久久久久青草大香线综合精品| 欧美国产日韩亚洲一区| 亚洲一区区二区| 亚洲国产激情| 国产日韩欧美成人| 欧美国产专区| 久久国产主播| 亚洲性感美女99在线| 欧美ab在线视频| 欧美一区影院| 亚洲老板91色精品久久| 国产精品国产三级国产专播品爱网| 久久久99爱| 亚洲午夜久久久久久久久电影网| 欧美国产日本韩| 久久精品国产免费看久久精品| 亚洲精品久久久久久下一站| 黄色精品在线看| 国产精品免费观看视频| 欧美三级乱码| 欧美激情第一页xxx| 欧美一区二区三区在线观看视频| 一区二区动漫| 亚洲裸体视频| 91久久国产综合久久| 麻豆国产精品va在线观看不卡| 欧美在线观看视频一区二区| 日韩视频一区二区三区| 亚洲国产精品va在线看黑人| 国产自产精品| 国产日产欧产精品推荐色 | 欧美精品1区2区| 久久久久久久久一区二区| 亚洲美女尤物影院| 欧美一区二区三区电影在线观看| 亚洲特黄一级片| 日韩视频在线播放| aa级大片欧美三级| 一区二区三区日韩在线观看| 日韩视频在线一区二区三区| 亚洲人体大胆视频| 亚洲免费av电影| 日韩一区二区久久| 亚洲私拍自拍| 一区二区日韩免费看| 亚洲精品影视| 亚洲午夜羞羞片| 亚洲欧美另类中文字幕| 一本色道久久| 亚洲自拍三区| 99国产麻豆精品| 亚洲午夜久久久久久尤物| 亚洲影视在线| 欧美在线你懂的| 麻豆久久久9性大片| 欧美激情在线有限公司| 亚洲激情一区二区三区| 亚洲精品久久7777| 一区二区免费在线播放| 蜜臀99久久精品久久久久久软件| 牛牛国产精品| 亚洲国产欧美久久| 9国产精品视频| 亚洲欧美日韩人成在线播放| 欧美一区三区二区在线观看| 久久亚洲精品欧美| 欧美日韩国产综合视频在线观看| 欧美偷拍一区二区| 国产一区二区在线观看免费播放| 亚洲成色777777在线观看影院| 狠狠色丁香久久婷婷综合丁香| 亚洲韩国日本中文字幕| 9国产精品视频| 亚洲欧美综合一区| 欧美国产日本韩| 一区二区毛片| 麻豆精品视频| 国产精品久久久久久影视| 在线观看欧美视频| 亚洲视频在线观看免费| 欧美一区二区视频在线观看| 亚洲欧美日韩天堂| 欧美jizz19性欧美| 一区二区不卡在线视频 午夜欧美不卡在 | 美女黄毛**国产精品啪啪| 欧美精品综合| 国产情人综合久久777777| 亚洲精品午夜| 麻豆精品视频在线观看| 亚洲免费精品| 欧美18av| 国产精品高清在线观看| 亚洲理论在线观看| 你懂的成人av| 欧美一级久久久| 国产精品jvid在线观看蜜臀| 日韩午夜激情电影|