Insert Embedded Object Example (VB.NET)
This example shows how to embed a file object in a DraftSight drawing.
'--------------------------------------------------------------
' Preconditions:
' 1. Create a VB.NET Windows console project.
' 2. Copy and paste this example into the VB.NET 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.
'----------------------------------------------------------------
Imports
System.Collections.Generic
Imports
System.Text
Imports
DraftSight.Interop.dsAutomation
Imports
System.Windows.Forms
Imports
System.Runtime.InteropServices
Imports
System.Diagnostics
Imports
System.IO
Imports
System.Reflection
Module
Module1
Sub
Main()
'Connect to DraftSight application
Dim
dsApp As
DraftSight.Interop.dsAutomation.Application = ConnectToDraftSight()
If
dsApp Is
Nothing
Then
Return
End
If
dsApp.AbortRunningCommand()
' abort any command currently running in
DraftSight to avoid nested commands
'Get
active document
Dim
dsDoc As
Document = dsApp.GetActiveDocument()
If
dsDoc Is
Nothing
Then
MessageBox.Show("There
are no open documents in DraftSight.")
Return
End
If
'Get
model space
Dim
dsModel As
Model = dsDoc.GetModel()
'Get sketch manager
Dim
dsSketchMgr As
SketchManager = dsModel.GetSketchManager()
'Embedded object parameters
Dim
filePath As
String =
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"SampleDoc.docx")
Dim
link As
Boolean =
True
Dim
displayAsIcon As
Boolean =
False
'Insert
embedded object
Dim
dsEmbeddedObject As
EmbeddedObject = dsSketchMgr.InsertEmbeddedObjectFromFile(filePath, link,
displayAsIcon)
If
dsEmbeddedObject IsNot
Nothing
Then
PrintParameters(dsEmbeddedObject)
Else
MessageBox.Show("Embedded
object entity was not added to the current drawing.")
End
If
End
Sub
Sub
PrintParameters(ByVal
dsEmbeddedObject As
EmbeddedObject)
Debug.Print(Environment.NewLine &
"Embedded object parameters...")
'Print common entity parameters
Debug.Print("Handle
= " &
Convert.ToString(dsEmbeddedObject.Handle))
Debug.Print("Color = "
& dsEmbeddedObject.Color.GetNamedColor())
Debug.Print("Erased = "
& Convert.ToString(dsEmbeddedObject.Erased))
Debug.Print("Layer = "
& Convert.ToString(dsEmbeddedObject.Layer))
Debug.Print("LineScale = "
& Convert.ToString(dsEmbeddedObject.LineScale))
Debug.Print("LineStyle = "
& Convert.ToString(dsEmbeddedObject.LineStyle))
Debug.Print("LineWeight = "
& Convert.ToString(dsEmbeddedObject.LineWeight))
Debug.Print("Visible = "
& Convert.ToString(dsEmbeddedObject.Visible))
Dim
x1 As
Double, y1
As
Double, z1
As
Double
Dim
x2 As
Double, y2
As
Double, z2
As
Double
dsEmbeddedObject.GetBoundingBox(x1,
y1, z1, x2, y2, 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
= " &
Convert.ToString(dsEmbeddedObject.Height))
Debug.Print("Width = "
& Convert.ToString(dsEmbeddedObject.Width))
Debug.Print("PrintQuality = "
& Convert.ToString(dsEmbeddedObject.PrintQuality))
Debug.Print("LinkPath = "
& dsEmbeddedObject.GetLinkPath())
Debug.Print("SourceApplication =
" & dsEmbeddedObject.GetSourceApplication())
Debug.Print("Type = "
& dsEmbeddedObject.[GetType]())
'Get position of embedded object
Dim
x As
Double, y
As
Double, z
As
Double
dsEmbeddedObject.GetPosition(x, y,
z)
Debug.Print(String.Format("Position
= ({0},{1},{2})", x, y, z))
End
Sub
Function
ConnectToDraftSight() As
DraftSight.Interop.dsAutomation.Application
Dim
dsApp As
DraftSight.Interop.dsAutomation.Application =
Nothing
Try
'Connect
to DraftSight
dsApp =
DirectCast(Marshal.GetActiveObject("DraftSight.Application"),
DraftSight.Interop.dsAutomation.Application)
Catch
ex As
Exception
MessageBox.Show("Failed to
connect to DraftSight. Cause: " &
ex.Message)
dsApp = Nothing
End
Try
Return
dsApp
End
Function
End Module