This example shows how to get and set document settings.
//-------------------------------------------------------------- //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. Start DraftSight and open a drawing. // 5. Add references to System and System.Windows.Forms. // 6. Start debugging the project. // //Postconditions: Message boxes pop up verifying that //document properties are reset. Read the text in each //message box before clicking OK to close it. //----------------------------------------------------------------
using System; using DraftSight.Interop.dsAutomation; using System.Windows.Forms; using System.Runtime.InteropServices;
static class Module1 {
static DraftSight.Interop.dsAutomation.Application dsApp; static Document dsDoc;
static string dsDocName; public static void Main() { //Connect to DraftSight dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application"); dsApp.AbortRunningCommand(); // abort any command currently running in DraftSight to avoid nested commands
//Get active document dsDoc = dsApp.GetActiveDocument();
if (dsDoc != null) { //Get and set document settings GetSetDocSettings(dsDoc);
} else { MessageBox.Show("There are no open documents in DraftSight."); }
}
public static void GetSetDocSettings(Document dsDoc) { //Set and get dimension scale property of document TestDimensionScale(dsDoc);
//Set and get angle unit expression for document TestAngleUnitExpression(dsDoc);
//Set and get base angle for document TestBaseAngle(dsDoc);
//Set and get length unit expression for document TestLengthUnitExpression(dsDoc);
//Set and get scale unit of the document TestScaleUnit(dsDoc);
//Check if document is active if (dsDoc.IsActive()) { MessageBox.Show(dsDoc.GetPathName() + " document is currently active in DraftSight."); } else { MessageBox.Show(dsDoc.GetPathName() + " document is not currently active in DraftSight."); }
//Check if document is dirty if (dsDoc.IsDirty()) { MessageBox.Show(dsDoc.GetPathName() + " document was modified since opened."); } else { MessageBox.Show(dsDoc.GetPathName() + " document was not modified since opened."); }
} public static void TestDimensionScale(Document dsDoc) { double dimScale = 0; double precision = 0;
precision = 1E-09;
//Set IDocument.DimensionScale property dimScale = 0.1; dsDoc.DimensionScale = dimScale;
if (Math.Abs(dimScale - dsDoc.DimensionScale) > precision) { MessageBox.Show("Failed to set dimension scale property of document to " + dimScale); } }
public static void TestAngleUnitExpression(Document dsDoc) { dsAngleType_e newAngType = default(dsAngleType_e); dsAngleType_e getAngType = default(dsAngleType_e); dsUnitPrecision_e newUnitPrecision = default(dsUnitPrecision_e); dsUnitPrecision_e getUnitPrecision = default(dsUnitPrecision_e);
//Set IDocument.SetAngleUnitExpression for document newAngType = dsAngleType_e.dsAngleType_Radians; newUnitPrecision = dsUnitPrecision_e.dsUnitPrecision_8;
dsDoc.SetAngleUnitExpression(newAngType, newUnitPrecision);
//Get IDocument.GetAngleUnitExpression for document dsDoc.GetAngleUnitExpression(out getAngType, out getUnitPrecision);
if (getAngType == newAngType) { MessageBox.Show("Set angle type property of document to " + newAngType + "."); }
if (getUnitPrecision == newUnitPrecision) { MessageBox.Show("Set unit precision property of document to " + newUnitPrecision + "."); }
} public static void TestBaseAngle(Document dsDoc) { double newBaseAngle = 0; bool newClockwise = false; double baseAngle = 0; bool clockwise = false; double precision = 0;
precision = 1E-09;
//Set IDocument.SetBaseAngle property for document newBaseAngle = 0.0; newClockwise = true;
dsDoc.SetBaseAngle(newBaseAngle, newClockwise);
//Get IDocument.GetBaseAngle for document dsDoc.GetBaseAngle(out baseAngle, out clockwise);
if (Math.Abs(newBaseAngle - baseAngle) < precision) { MessageBox.Show("Set base angle property of document to " + newBaseAngle + "."); }
if (newClockwise == clockwise) { MessageBox.Show("Set clockwise property of document."); }
} public static void TestLengthUnitExpression(Document dsDoc) { dsLengthType_e newLengthType = default(dsLengthType_e); dsUnitPrecision_e newUnitPrecision = default(dsUnitPrecision_e); dsLengthType_e lengthType = default(dsLengthType_e); dsUnitPrecision_e unitPrecision = default(dsUnitPrecision_e);
//Set IDocument.SetLengthUnitExpression for document newLengthType = dsLengthType_e.dsLengthType_Engineering; newUnitPrecision = dsUnitPrecision_e.dsUnitPrecision_5; dsDoc.SetLengthUnitExpression(newLengthType, newUnitPrecision);
//Get IDocument.GetLengthUnitExpression for document and //verify if a value is correct dsDoc.GetLengthUnitExpression(out lengthType, out unitPrecision);
if (newLengthType == lengthType) { MessageBox.Show("Set length type property of document to " + newLengthType + "."); }
if (newUnitPrecision == unitPrecision) { MessageBox.Show("Set unit precision property of document to " + newUnitPrecision + "."); } }
public static void TestScaleUnit(Document dsDoc) { dsScaleUnit_e newScaleUnit = default(dsScaleUnit_e); dsScaleUnit_e scaleUnit = default(dsScaleUnit_e);
//Set IDocument.ScaleUnit property for document newScaleUnit = dsScaleUnit_e.dsScaleUnit_Yards; dsDoc.ScaleUnit = newScaleUnit;
//Get IDocument.ScaleUnit property for document and verify if a value is correct scaleUnit = dsDoc.ScaleUnit;
if (scaleUnit == newScaleUnit) { MessageBox.Show("Set scale unit property of document to " + newScaleUnit + "."); } }
}