Hide menu
Loading...
Searching...
No Matches
exploring/drawings/Program.cs

Refer to the Drawing Exploration Example.

// ****************************************************************************
// $Id$
//
// Copyright (C) 2008-2014, Roman Lygin. All rights reserved.
// Copyright (C) 2014-2025, CADEX. All rights reserved.
//
// This file is part of the Manufacturing Toolkit software.
//
// You may use this file under the terms of the BSD license as follows:
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ****************************************************************************
using cadex;
using cadex.Geom;
using System;
namespace drawings
{
class Program
{
// Iterate views
static void ExploreSheet(Sheet theSheet)
{
Sheet.ViewIterator aViewIt = new Sheet.ViewIterator(theSheet);
uint aViewCounter = 0;
while (aViewIt.HasNext())
{
View aView = aViewIt.Next();
Console.WriteLine("---- View <" + aViewCounter + ">");
DrawingElementVisitor aVisitor = new DrawingElementVisitor();
aView.Accept(aVisitor);
aViewCounter++;
}
}
// Iterate sheets
static void ExploreDrawing(Drawing theDrawing)
{
Drawing.SheetIterator aSheetIt = new Drawing.SheetIterator(theDrawing);
uint aSheetCounter = 0;
while(aSheetIt.HasNext())
{
Sheet aSheet = aSheetIt.Next();
Console.WriteLine("-- Sheet <" + aSheetCounter + ">");
ExploreSheet(aSheet);
aSheetCounter++;
}
}
static int Main(string[] args)
{
string aKey = MTKLicenseKey.Value();
// Activate the license (aKey must be defined in mtk_license.cs)
if (!LicenseManager.Activate(aKey))
{
Console.WriteLine("Failed to activate Manufacturing Toolkit license.");
return 1;
}
if (args.Length != 1)
{
Console.WriteLine("Usage: " +
$"{System.Reflection.Assembly.GetExecutingAssembly().Location} <input_file>, where:");
Console.WriteLine($" <input_file> is a name of the file to be read");
Console.WriteLine($"");
return 1;
}
string aSource = args[0];
// Enable drawings reading
ModelReaderParameters aReaderParameters = new ModelReaderParameters();
aReaderParameters.SetReadDrawing(true);
ModelReader aReader = new ModelReader();
aReader.SetParameters(aReaderParameters);
Model aModel = new Model();
if (!aReader.Read(new UTF16String(aSource), aModel))
{
Console.WriteLine("Failed to read the file " + aSource);
return 1;
}
Drawing aDrawing = aModel.Drawing();
if (aDrawing.IsNull())
{
Console.WriteLine("The model doesn't contain a drawing");
return 1;
}
Console.WriteLine("Drawing \"" + aModel.Name() + "\":");
ExploreDrawing(aDrawing);
return 0;
}
}
// Explore view content
class DrawingElementVisitor : ElementVoidVisitor
{
public override void Apply(CurveSet theElement)
{
Console.WriteLine("------- CurveSet <" + myCurveSetCounter + ">");
Console.WriteLine("--------- number of curves: " + theElement.NumberOfCurves());
myCurveSetCounter++;
}
public override void Apply(Hatch theElement)
{
Console.WriteLine("------- Hatch <" + myHatchCounter + ">");
Console.WriteLine("--------- number of contours: " + theElement.NumberOfContours());
uint aNumberOfCurves = 0;
for (uint i = 0; i < theElement.NumberOfContours(); ++i)
{
aNumberOfCurves += theElement.Contour(i).NumberOfCurves();
}
Console.WriteLine("--------- number of curves: " + aNumberOfCurves);
Console.WriteLine("--------- pattern: " + PatternToString (theElement.Pattern()));
Console.WriteLine("--------- angle: " + theElement.Angle());
Console.WriteLine("--------- scale: " + theElement.Scale());
myHatchCounter++;
}
public override void Apply(Text theElement)
{
Console.WriteLine("------- Text <" + myTextCounter + ">");
Console.WriteLine("--------- text: \"" + theElement.GetText() + "\"");
Console.WriteLine("--------- origin: " + PointToString(theElement.TextOrigin()));
Console.WriteLine("--------- rotation: " + theElement.TextProperties().Rotation());
Console.WriteLine("--------- font size: " + theElement.FontSize());
myTextCounter++;
}
private String PointToString(Point2d thePoint)
{
return "(" + thePoint.X() + "; " + thePoint.Y() + ")";
}
public String PatternToString(Hatch.PatternType thePattern)
{
switch (thePattern)
{
case Hatch.PatternType.Solid: return "Solid";
case Hatch.PatternType.ANSI_31: return "ANSI 31";
case Hatch.PatternType.ANSI_32: return "ANSI 32";
case Hatch.PatternType.ANSI_33: return "ANSI 33";
case Hatch.PatternType.ANSI_34: return "ANSI 34";
case Hatch.PatternType.ANSI_35: return "ANSI 35";
case Hatch.PatternType.ANSI_36: return "ANSI 36";
case Hatch.PatternType.ANSI_37: return "ANSI 37";
case Hatch.PatternType.ANSI_38: return "ANSI 38";
case Hatch.PatternType.ISO_02: return "ISO 02";
case Hatch.PatternType.ISO_03: return "ISO 03";
case Hatch.PatternType.ISO_04: return "ISO 04";
case Hatch.PatternType.ISO_05: return "ISO 05";
case Hatch.PatternType.ISO_06: return "ISO 06";
case Hatch.PatternType.ISO_07: return "ISO 07";
case Hatch.PatternType.ISO_08: return "ISO 08";
case Hatch.PatternType.ISO_09: return "ISO 09";
case Hatch.PatternType.ISO_10: return "ISO 10";
case Hatch.PatternType.ISO_11: return "ISO 11";
case Hatch.PatternType.ISO_12: return "ISO 12";
case Hatch.PatternType.ISO_13: return "ISO 13";
case Hatch.PatternType.ISO_14: return "ISO 14";
case Hatch.PatternType.ISO_15: return "ISO 15";
default: return "Other";
}
}
private uint myCurveSetCounter = 0;
private uint myHatchCounter = 0;
private uint myTextCounter = 0;
}
}
Describes drawing elements composed of 2D curves.
Definition CurveSet.cs:20
uint NumberOfCurves()
Returns the number of curves currently composing the element.
Definition CurveSet.cs:67
Iterator over sheets of a drawing.
Definition Drawing.cs:108
Represents a single 2D drawing of a model.
Definition Drawing.cs:33
Defines a visitor for drawing elements with empty implementation.
Definition ElementVoidVisitor.cs:20
Represents an area filled with a pattern.
Definition Hatch.cs:37
PatternType
Definition Hatch.cs:196
cadex.Drawing.Hatch.PatternType Pattern()
Returns the pattern of the hatch.
Definition Hatch.cs:133
double Scale()
Returns the scale of the hatch.
Definition Hatch.cs:144
double Angle()
Returns the angle of the hatch.
Definition Hatch.cs:155
uint NumberOfContours()
Returns the number of hatch contours.
Definition Hatch.cs:93
cadex.Drawing.PiecewiseContour Contour(uint theIndex)
Returns the contour.
Definition Hatch.cs:102
Iterates over views of a drawing sheet.
Definition Sheet.cs:177
Represents a single sheet of a model drawing.
Definition Sheet.cs:33
Defines a text for drawing.
Definition Text.cs:19
cadex.Geom.Point2d TextOrigin()
Returns a position of the text on the 2D plane.
Definition Text.cs:181
float FontSize()
Returns size of the font in points.
Definition Text.cs:193
cadex.UTF16String GetText()
Returns a text.
Definition Text.cs:168
cadex.Drawing.Text.Properties TextProperties()
Returns the properties of dimension text.
Definition Text.cs:205
Represents a view on a drawing sheet.
Definition View.cs:24
Defines a 3D point.
Definition Point2d.cs:17
Activates the license key.
Definition LicenseManager.cs:48
Provides MTK data model.
Definition Model.cs:30
cadex.UTF16String Name()
Returns a model name.
Definition Model.cs:93
Reads supported formats, see Import section.
Definition ModelReader.cs:17
bool Read(cadex.UTF16String theFilePath, cadex.ModelData.Model theModel)
Reads the file at the specified path into the specified model.
Definition ModelReader.cs:86
void SetParameters(cadex.ModelData.ModelReaderParameters theParameters)
Sets reader parameters.
Definition ModelReader.cs:67
Defines parameters of the ModelReader.
Definition ModelReaderParameters.cs:19
void SetReadDrawing(bool theReadDrawing)
Sets whether a drawing should be read from the file.
Definition ModelReaderParameters.cs:98
Defines a Unicode (UTF-16) string wrapping a standard string.
Definition UTF16String.cs:17
Contains classes, types and enums related to drawings.
Definition AngularDimension.cs:12
Contains classes, types, enums, and functions related to geometric entities.
Definition Axis1d.cs:12
Defines classes, types, enums, and functions related to topological entities and scene graph elements...
Definition AngleUnit.cs:12
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.
Definition BaseObject.cs:12