Hide Table of Contents

Get and Set Document Settings Example (C#)

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 + ".");
        }
    }
}


Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Get and Set Document Settings Example (C#)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:



x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2019 SP04

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.