Insert Embedded Object Example (C#)

This example shows how to embed a file object in a DraftSight drawing.

//--------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this example into the C# IDE.
// 3. Add a reference to:
//    install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
// 4. Add references to System and System.Windows.Forms.
// 5. Place the document to embed in the project assembly folder.
// 6. Right-click the project and select Add > Existing Item.
// 7. Select the document to embed and click Add.
// 8. Right-click the file in Solution Explorer and select Properties.
// 9. For the Copy to Output property select Copy Always.
//10. Modify the document name referenced in the code.
//11. Start DraftSight and open a drawing document.
//12. Start debugging the project.
//
// Postconditions:
// 1. The file object is embedded in the drawing.
// 2. Inspect the Immediate window for its position and parameters.
//----------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using DraftSight;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;
using System.Reflection;

namespace InsertEmbeddedObject
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
//Connect to DraftSight application
            DraftSight.Application dsApp = ConnectToDraftSight();
            
if (null == dsApp)
            {
                
return;
            }

            dsApp.AbortRunningCommand();
// abort any command currently running in DraftSight to avoid nested commands

            
//Get active document
            Document dsDoc = dsApp.GetActiveDocument();
            
if (null == dsDoc)
            {
                
MessageBox.Show("There are no open documents in DraftSight.");
                
return;
            }

            
//Get model space
            Model dsModel = dsDoc.GetModel();

            
//Get sketch manager
            SketchManager dsSketchMgr = dsModel.GetSketchManager();

            
//Embedded object parameters
            string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "SampleDoc.docx");
            
bool link = true;
            
bool displayAsIcon = false;

            
//Insert embedded object
            EmbeddedObject dsEmbeddedObject = dsSketchMgr.InsertEmbeddedObjectFromFile(filePath, link, displayAsIcon);
            
if (null != dsEmbeddedObject)
            {
                PrintParameters(dsEmbeddedObject);
            }
            
else
            {
                
MessageBox.Show("Embedded object entity was not added to the current drawing.");
            }
        }

        
private static void PrintParameters(EmbeddedObject dsEmbeddedObject)
        {
            
Debug.Print(Environment.NewLine + "Embedded object parameters...");

            
//Print common entity parameters
            Debug.Print("Handle = " + dsEmbeddedObject.Handle);
            
Debug.Print("Color = " + dsEmbeddedObject.Color.GetNamedColor());
            
Debug.Print("Erased = " + dsEmbeddedObject.Erased);
            
Debug.Print("Layer = " + dsEmbeddedObject.Layer);
            
Debug.Print("LineScale = " + dsEmbeddedObject.LineScale);
            
Debug.Print("LineStyle = " + dsEmbeddedObject.LineStyle);
            
Debug.Print("LineWeight = " + dsEmbeddedObject.LineWeight);
            
Debug.Print("Visible = " + dsEmbeddedObject.Visible);

            
double x1, y1, z1;
            
double x2, y2, z2;
            dsEmbeddedObject.GetBoundingBox(
out x1, out y1, out z1, out x2, out y2, out z2);
            
Debug.Print(string.Format("BoundingBox: ({0},{1},{2}) and ({3},{4},{5})", x1, y1, z1, x2, y2, z2));

            
//Print embedded object parameters
            Debug.Print("Height = " + dsEmbeddedObject.Height);
            
Debug.Print("Width = " + dsEmbeddedObject.Width);
            
Debug.Print("PrintQuality = " + dsEmbeddedObject.PrintQuality);
            
Debug.Print("LinkPath = " + dsEmbeddedObject.GetLinkPath());
            
Debug.Print("SourceApplication = " + dsEmbeddedObject.GetSourceApplication());
            
Debug.Print("Type = " + dsEmbeddedObject.GetType());

            
//Get position of embedded object
            double x, y, z;
            dsEmbeddedObject.GetPosition(
out x, out y, out z);
            
Debug.Print(string.Format("Position = ({0},{1},{2})", x, y, z));
        }

        
private static DraftSight.Application ConnectToDraftSight()
        {
            DraftSight.
Application dsApp = null;

            
try
            {
                
//Connect to DraftSight
                dsApp = (DraftSight.Application)Marshal.GetActiveObject("DraftSight.Application");
            }
            
catch (Exception ex)
            {
                
MessageBox.Show("Failed to connect to DraftSight. Cause: " + ex.Message);
                dsApp =
null;
            }

            
return dsApp;
        }
    }
}