This example shows how to create default, command, and object context-sensitive menu items.
//-------------------------------------------------------------- // Preconditions: // 1. Create a C# Windows console project. // 2. Copy and paste this code into the C# project. // 3. Add a reference to // install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll. // 4. Add a reference to System.Windows.Forms. // 5. Start DraftSight. // 6. Press F5. // // Postconditions: // 1. Connects to DraftSight. // 2. Gets the active document. // 3. Creates three user commands. // 4. Adds a default context-sensitive menu item for the first user command. // 5. Adds a command context-sensitive menu item for the second user command. // 6. Adds an object context-sensitive menu item for the third user command. // 7. Displays a message box informing you to perform steps 7a - 7f. Click OK // to close the message box before performing these steps. // a. Right-click anywhere in the the graphics area and // select Execute line command in the context-sensitive menu. // The crosshair pointer is displayed. // b. Right-click anywhere in the graphics area and select Open Help // in the context-sensitive menu. The user-interface DraftSight // Help system opens and displays the Constructing Lines Help topic. // c. Read the Help topic and close the Help. // d. Construct a line and select the line. // e. Right-click anywhere in the graphics area and // select Do pattern in the context-sensitive menu. // A pattern of the selected Line is constructed. // f. Press the Enter key and exit DraftSight. //---------------------------------------------------------------- using System; using DraftSight.Interop.dsAutomation; using System.Runtime.InteropServices; using System.Windows.Forms; namespace ContextMenuItemCSharp { class Program { public static void Main() { DraftSight.Interop.dsAutomation.Application dsApp; //Connect to DraftSight application dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application"); if (null == dsApp) { return; }
//Abort any command currently running in DraftSight to avoid nested commands dsApp.AbortRunningCommand(); //Get active document Document dsDoc = dsApp.GetActiveDocument(); if (null == dsDoc) { MessageBox.Show("There are no open documents in DraftSight."); return; } //Create three user commands for context-sensitive menus dsCreateCommandError_e error; UserCommand lineUserCmd = dsApp.CreateUserCommand("APIUUID", "TEST_LINE", "^C^C_LINE\n", "Line", string.Empty, string.Empty, dsUIState_e.dsUIState_Document, out error); UserCommand helpUserCmd = dsApp.CreateUserCommand("APIUUID", "TEST_HELP", "'_HELP\n", "Help", string.Empty, string.Empty, dsUIState_e.dsUIState_Document, out error); UserCommand patternUserCmd = dsApp.CreateUserCommand("APIUUID", "TEST_PATTERN", "_-PATTERN _L 3 3 5 5\n\n", "Pattern", string.Empty, string.Empty, dsUIState_e.dsUIState_Document, out error); dsMenuItemType_e menuItemType = dsMenuItemType_e.dsMenuItemType_UserCommand; //Add default context-sensitive menu item for first user command ContextMenuItem dsDefaultContextMenuItem = dsApp.AddDefaultContextMenu("APIUUID", menuItemType, "Execute line command", lineUserCmd.GetID()); //Add command context-sensitive menu item for second user command ContextMenuItem dsCommandContextMenuItem = dsApp.AddCommandContextMenu("APIUUID", menuItemType, "Open Help", helpUserCmd.GetID(), "_LINE"); //Add object context-sensitive menu item for third user command ContextMenuItem dsObjectContextMenuItem = dsApp.AddObjectContextMenu("APIUUID", menuItemType, "Do pattern", patternUserCmd.GetID(), dsObjectType_e.dsLineType); MessageBox.Show("Perform steps 7a - 7f."); } } }