How to create a hatch on the basis of an existing entity?
- Add the
using
directive with theCADImport
andCADImport.FaceModule
namespaces.
using CADImport;
using CADImport.FaceModule;
More information about CADPictureBox
- Use the control element of the
CADPictureBox
class:- Set the
Location
property asnew Point(10, 30)
. - Set the
BackColor
property asColor.Black
. - Set the
Size
property asnew Size(995, 500)
. - Finally, add it to the form.
- Set the
...
CADPictureBox pictureBox1 = new CADPictureBox(){
Location = new Point(10, 30),
BackColor = Color.Black,
Size = new Size(995, 500),
}
public Form1()
{
Controls.Add(pictureBox1);
InitializeComponent();
}
- Add a new button. Name it
AddAHatch
. Then create theAddAHatch_Click
function to create a hatch on the basis of an existing entity by click.
private void AddAHatch_Click(object sender, EventArgs e)
- Create a new instance of the
CADImage
class:- Call
InitializeSection
to create theCAD
object manually. - Set the
Background
property asColor.Azure
. - Set the
CurrentLayout
property asvDrawing.Layouts[0]
.
- Call
CADImage vDrawing = new CADImage();
vDrawing.Converter.InitializeSections();
vDrawing.BackgroundColor = Color.Azure;
vDrawing.CurrentLayout = vDrawing.Layouts[0];
- Create an instance of the
CADEllipse
class:- Add this entity to the drawing with the
AddEntity
method. - Set the
Point
property asnew DPoint(10, 10, 0)
. - Set the
Radius
property as10
. - Set the
Ratio
property as1.5
. - Set the
RadPt
property asnew DPoint(25, 25, 0)
. - Set the
Color
property asColor.Maroon
. - Set the
LineWeight
property as5
. - Use the
Loads
method to fill the internal data of the entity to prepare it for drawing.
- Add this entity to the drawing with the
CADEllipse vEllipse = new CADEllipse();
vDrawing.CurrentLayout.AddEntity(vEllipse);
vEllipse.Point = new DPoint(10, 10, 0);
vEllipse.Radius = 10;
vEllipse.Ratio = 1.5;
vEllipse.RadPt = new DPoint(25, 25, 0);
vEllipse.Color = Color.Maroon;
vEllipse.LineWeight = 5;
vDrawing.Converter.Loads(vEllipse);
The following picture illustrates the ellipse without a hatch.
- Create an instance of the
CAD2DEllipse
class that repeats thevEllipse
outline:
CAD2DEllipse v2dEllipse = new CAD2DEllipse();
v2dEllipse.CenterPoint = vEllipse.Point;
v2dEllipse.MajorPoint = vEllipse.RadPt;
v2dEllipse.Radius = vEllipse.Ratio;
- Create an instance of the
CAD2DBoundary
class. Addv2dEllipse
to the boundary list.
CAD2DBoundaryList vBoundaryList = new CAD2DBoundaryList();
vBoundaryList.Add(v2dEllipse);
- Create an instance of the
CADCurvePolygon
class:- Add this entity to the current layout of
vDrawing
using theAddEntity
method. - Add
vBoundaryList
toBoundaryData
. - Set the
Color
property asColor.Green
. - Use the
Loads
method to fill the internal data of the entity to prepare it for drawing.
- Add this entity to the current layout of
CADCurvePolygon vHatch = new CADCurvePolygon();
vDrawing.CurrentLayout.AddEntity(vHatch);
vHatch.BoundaryData.Add(vBoundaryList);
vHatch.Color = Color.Green;
vDrawing.Converter.Loads(vHatch);
- Use the
GetExtents
method to recalculate drawing extents.
vDrawing.GetExtents();
- Declare the local variable
vRect
and specifyRectangleF
as its type. This variable stores four floating values that represent the location and size of a CAD file. Use the following code to fit the CAD file topictureBox1
. Finally, render the result with theDraw
method.
RectangleF vRect;
double vRatio = (double)(vDrawing.AbsHeight * pictureBox1.ClientSize.Width)/ (vDrawing.AbsWidth * pictureBox1.ClientSize.Height);
if (vRatio > 1)
vRect = new RectangleF(0, 0, (float)(pictureBox1.ClientSize.Width / vRatio), (float)pictureBox1.ClientSize.Height);
else
vRect = new RectangleF(0, 0, (float)pictureBox1.ClientSize.Width, (float)(pictureBox1.ClientSize.Height * vRatio));
vDrawing.Draw(pictureBox1.CreateGraphics(), vRect);
The following picture illustrates the result.
You have created the function to create a hatch on the basis of an existing entity.
The full code listing:
...
using CADImport;
using CADImport.FaceModule;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
CADPictureBox pictureBox1 = new CADPictureBox()
{
Location = new Point(10, 30),
TabIndex = 10,
BackColor = Color.Black,
Size = new Size(995, 500)
};
public Form1()
{
Controls.Add(pictureBox1);
InitializeComponent();
}
private void AddAHatch_Click(object sender, EventArgs e)
{
CADImage vDrawing = new CADImage();
vDrawing.Converter.InitializeSections();
vDrawing.BackgroundColor = Color.Azure;
vDrawing.CurrentLayout = vDrawing.Layouts[0];
// Creating an ellipse
CADEllipse vEllipse = new CADEllipse();
vDrawing.CurrentLayout.AddEntity(vEllipse);
vEllipse.Point = new DPoint(10, 10, 0);
vEllipse.Radius = 10;
vEllipse.Ratio = 1.5;
vEllipse.RadPt = new DPoint(25, 25, 0);
vEllipse.Color = Color.Maroon;
vEllipse.LineWeight = 5;
vDrawing.Converter.Loads(vEllipse);
//Creating v2dEllipse that repeats the vEllipse outline. .
CAD2DEllipse v2dEllipse = new CAD2DEllipse();
v2dEllipse.CenterPoint = vEllipse.Point;
v2dEllipse.MajorPoint = vEllipse.RadPt;
v2dEllipse.Radius = vEllipse.Ratio;
// Adding v2dEllipse to the Boundary list
CAD2DBoundaryList vBoundaryList = new CAD2DBoundaryList();
vBoundaryList.Add(v2dEllipse);
vBoundaryList.BoundaryType = 1;
// Creating a hatch
CADCurvePolygon vHatch = new CADCurvePolygon();
vDrawing.CurrentLayout.AddEntity(vHatch);
vHatch.BoundaryData.Add(vBoundaryList);
vHatch.Color = Color.Green;
vDrawing.Converter.Loads(vHatch);
vDrawing.GetExtents();
// adjusting visualization sizes to the control area:
RectangleF vRect;
double vRatio = (double)(vDrawing.AbsHeight * pictureBox1.ClientSize.Width) / (vDrawing.AbsWidth * pictureBox1.ClientSize.Height);
if (vRatio > 1)
vRect = new RectangleF(0, 0, (float)(pictureBox1.ClientSize.Width / vRatio), (float)pictureBox1.ClientSize.Height);
else
vRect = new RectangleF(0, 0, (float)pictureBox1.ClientSize.Width, (float)(pictureBox1.ClientSize.Height * vRatio));
vDrawing.Draw(pictureBox1.CreateGraphics(), vRect);
}
}
}