Practice drawing 116

CAD-drawing-116.png

Define layer names and text size.

private const string 
            DimLayer = "Dimension",
            ThinLayer = "ThinLayer",
            DashDot = "DashDot";

private const double TextHeight = 3.5;

Draw the component and its dimensions.

// Set layers and linetype
model1.Layers[0].LineWeight = 2;
model1.Layers.Add(new Layer(DimLayer, Color.CornflowerBlue ));
model1.Layers.Add(new Layer(ThinLayer));
model1.LineTypes.Add(DashDot, new float[] { 30, -5, 5, -5 });

// Main circles
Circle circleTopCenterInner = new Circle(0, 0, 0, 14);
Circle circleTopCenterOuter = new Circle(0, 0, 0, 19);
Circle circleTopLeft = new Circle(-41, 0, 0, 10);
Circle circleBottomCenter = new Circle(0, -90, 0, 10);

// Outline circles
Circle c1 = new Circle(Plane.XY, new Point2D(0, 0), 40); // Outer circle top right
Circle c2 = new Circle(Plane.XY, new Point2D(0, -90), 20); // Outer circle bottom
Circle c3 = new Circle(Plane.XY, new Point2D(-41, 0), 20); // Outer circle top left 

// Linking arcs
Arc a98 = (Arc) UtilityEx.GetCirclesTangentToTwoCircles(c1, c2, 98, true)[3]; // Radius 98 arc
Arc a20 = (Arc) UtilityEx.GetCirclesTangentToTwoCircles(c1, c2, 20, true)[1]; // Radius 20 arc
Arc a9 = (Arc) UtilityEx.GetCirclesTangentToTwoCircles(c3, c1, 9, true)[0]; // Radius 9 arc

Arc a1 = new Arc(c1.Center, c1.Radius, Math.PI * 2);
a1.TrimBy(a9.EndPoint, false);
a1.TrimBy(a98.StartPoint, true);

Arc a2 = new Arc(c2.Center, c2.Radius, Math.PI * 2);
a2.TrimBy(a98.EndPoint, false);
a2.TrimBy(a20.EndPoint, true);

Arc a3 = new Arc(c3.Center, c3.Radius, Math.PI * 3 / 2);
a3.TrimBy(a9.StartPoint, true);
            
Line l = new Line(a3.EndPoint, new Point3D(0, a3.EndPoint.Y, 0));
l.TrimBy(c1.IntersectWith(l)[0], false);

Arc c1Arc2 = new Arc(c1.Center, c1.Radius, Math.PI * 2);
c1Arc2.TrimBy(l.EndPoint, true);
c1Arc2.TrimBy(a20.StartPoint, false);

// Add shapes
model1.Entities.AddRange(new Entity[] {
    circleTopCenterInner, circleTopCenterOuter, circleTopLeft, circleBottomCenter,
    a98, a20, a9, a1, a2, a3, l, c1Arc2, UtilityEx.GetLinesTangentToTwoCircles(c2, c3)[0]
});

// Add dimensions
Plane left = new Plane(Point3D.Origin, Vector3D.AxisY, -1 * Vector3D.AxisX);

a98.Reverse(); // Fix normals to display text correctly
a20.Reverse();

model1.Entities.AddRange(new Entity[] {

    // Diametric dimensions
    new DiametricDim(circleTopCenterInner, new Point2D(20, 20), TextHeight),
    new DiametricDim(circleTopCenterOuter, new Point2D(20, -20), TextHeight),
    new DiametricDim(circleTopLeft, new Point2D(-22, -22), TextHeight),
    new DiametricDim(circleBottomCenter, new Point2D(20, -20), TextHeight),

    // Linear dimensions
    new LinearDim(Plane.XY, new Point2D(-41, -150), new Point2D(0, -150), new Point2D(-20, -150), TextHeight),
    new LinearDim(left, new Point2D(-90, -80), new Point2D(0, -80), new Point2D(-45, -80), TextHeight),
                
    // Radial dimensions
    new RadialDim(c2, new Point2D(-20, -30), TextHeight)
    {
        ArrowsLocation = elementPositionType.Outside,
        TrimLeader = true
    },
    new RadialDim(c3, new Point2D(-20, 20), TextHeight)
    {
        ArrowsLocation = elementPositionType.Outside,
        TrimLeader = true
    },
    new RadialDim(a9, new Point2D(15, 15), TextHeight)
    {
        ArrowsLocation = elementPositionType.Outside,
        TrimLeader = true,
        ShowCenterMark = false
    },
    new RadialDim(c1, new Point2D(50, 30), TextHeight) { ArrowsLocation = elementPositionType.Outside },
    new RadialDim(c1, new Point2D(-30, -50), TextHeight) { ArrowsLocation = elementPositionType.Outside },
    new RadialDim(a98, new Point2D(82, -82), TextHeight) { 
        ArrowsLocation = elementPositionType.Outside,
        TrimLeader = true,
        ShowCenterMark = false
    },
    new RadialDim(a20, new Point2D(20, -40), TextHeight) {
        ArrowsLocation = elementPositionType.Outside,
        TrimLeader = true,
        ShowCenterMark = false
    },

    // Axes
    new Line(-70, 0, 80, 0) { // Top X axis
        LineTypeMethod = colorMethodType.byEntity,
        LineTypeName = DashDot
    },
    new Line(-30, -90, 80, -90) { // Bottom X axis
        LineTypeMethod = colorMethodType.byEntity,
        LineTypeName = DashDot
    },
    new Line(-41, 30, -41, -150) { // Left Y axis
        LineTypeMethod = colorMethodType.byEntity,
        LineTypeName = DashDot
    },
    new Line(0, 50, 0, -150) { // Right Y axis
        LineTypeMethod = colorMethodType.byEntity,
        LineTypeName = DashDot
    }

}, DimLayer);

// Scale and translate component
double scale = 2;

model1.Entities.Scale(scale);

foreach (Entity en in model1.Entities)
    if (en is Dimension)
        // Restore original measure
        ((Dimension) en).LinearScale = 1 / scale;

model1.Entities.Translate(-12, 100);
model1.Entities.Regen();

// Draw frame
DrawFrame();

// Viewport setup
model1.SetView(viewType.Top, true, false);
model1.ActiveViewport.Grid.Visible = false; // Hide grid
model1.ActiveViewport.OriginSymbol.Visible = false; // Hide origin

// Print
Print();

Utility function to draw the outline frame.

void DrawFrame()
{
    string frameID = "116";
    string frameTitle = "CAD Practice Drawing " + frameID;
    int halfWidth = 200;
    int halfHeight = 287;

    model1.Entities.AddRange(new Entity[] {

        new LinearPath(-halfWidth, -halfHeight, 2 * halfWidth, 2 * halfHeight),

        new Line(-halfWidth / 4, -halfHeight + 30, halfWidth, -halfHeight + 30),
        new Line(-halfWidth / 4, -halfHeight + 30, -halfWidth / 4, -halfHeight),

        new Text(25, -halfHeight + 25, 0, "Title", 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),
        new Text(25, -halfHeight + 10, 0, frameTitle, 8, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),
        new Text(115, -halfHeight + 25, 0, "Date", 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),
        new Text(115, -halfHeight + 15, 0, "Design", 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),
        new Text(115, -halfHeight + 5, 0, "Check", 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),
        new Text(180, -halfHeight + 25, 0, "Approve", 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter),

        new Line(halfWidth - 30, halfHeight - 15, halfWidth, halfHeight - 15),
        new Line(halfWidth - 30, halfHeight - 15, halfWidth - 30, halfHeight),
        new Text(halfWidth - 15, halfHeight - 7.5, 0, frameID, 8, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter)

    });

    // Add thin lines
    model1.Entities.AddRange(new Entity[] {

        new Line(-halfWidth / 4, -halfHeight + 20, halfWidth, -halfHeight + 20),
        new Line(100, -halfHeight + 30, 100, -halfHeight),
        new Line(130, -halfHeight + 30, 130, -halfHeight),
        new Line(160, -halfHeight + 30, 160, -halfHeight),
        new Line(100, -halfHeight + 10, 160, -halfHeight + 10)

    }, ThinLayer);
}

Utility function to adjust and print the viewport.

private void Print()
{
    model1.PageSetup();

    //Save current view Camera
    model1.SaveView(out Camera cameraSaved);

    model1.Camera.ProjectionMode = devDept.Graphics.projectionType.Orthographic;

    //Creates printing setting object and customize it
    HiddenLinesViewSettings hdlS = new HiddenLinesViewSettings(model1);
    hdlS.KeepEntityLineWeight = true;

    //Creates paper preview
    HiddenLinesViewOnPaperPreview hdl = new HiddenLinesViewOnPaperPreview(hdlS, new Size(800, 600), 0.5);
    model1.StartWork(hdl);

    //Restore saved view
    model1.RestoreView(cameraSaved);
}

Don't forget to add the following using statements:

using devDept.Eyeshot.Entities;
using devDept.Eyeshot;
using devDept.Geometry;
Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.