Drill Shape

SMAPI Drill shape provides an easy-to-use interface for building a complete laser drilling operation. A successful laser drilling operation requires careful control of laser power and beam steering patterns to interact in a strict time window. The complete control of the laser power and synchronization of the galvo movements are precisely handled by the CTI controllers while defining and fine-tuning the required parameters for the operation are managed using the SMAPI drill shape object.

DrillShape()
DrillShape(ControlledDrillPattern pattern)
DrillShape(JumpAndFireDrillShapePattern pattern)
DrillShape(IEnumerable<JumpAndFireDrillShapePattern> patterns)
DrillShape(JumpAndDrillShapePattern pattern)
DrillShape(IEnumerable<JumpAndDrillShapePattern> patterns)
DrillShape(IEnumerable<ControlledDrillPattern> patterns, DrillPatternExecuteMode mode)

Properties

PatternExecutionMode Gets how the patterns will be applied during laser drilling. ( Read Only)
ShapeType Gets the shape type of the Drill shape.

Methods

AddCirclePoint Add a circle drill point.
AddJumpAndDrillPoint Adds a Jump and drill point to the drill shape
AddPointAndShootPoint Adds a Point and Shoot point to the drill shape.
AddSpiralPoint Adds a Spiral Point to the drill shape.
Clone Creates a new object that is an exact copy of the current instance
DrillShapeBounday Compute the minimum bounding rectangle covering all the drill points
MoveShape Moves the drill shape by given displacement in X and Y direction.
RotateShape Rotates the drill shape by a given angle with respect to the reference point.
ScaleShape Scales the drill shape by specified scaling factors in X and Y directions.
SetPattern Sets a drill pattern to this drill shape.

 

A Drill point should be defined with a pattern associated with it. SMAPI supports four drilling patterns. These patterns are further divided into two groups depending on how the hardware controls the galvo movements for each jump of the drill pattern.

Unstructured jump patterns

JumpAndDrillShapePattern Optimized for high throughput with laser power control

 

Structured jump patterns

Point and shoot Velocity controlled jumps with adjustable pulse parameters
Circle Velocity controlled jumps with circular scanning pattern
Spiral Velocity controlled jumps with spiral scanning pattern

To create a drill shape, first define the drill pattern and then add the points to the shape. There is no upper limit for the number of points a drill shape can handle, but it is always a best practice to use different Drill shapes for different drill patterns.

Copy
DistanceUnit drillUnits = DistanceUnit.Millimeters;

scanDocument = scanDeviceManager.CreateScanDocument("Cntrl_1", drillUnits, false);

if (scanDocument != null)
{
    VectorImage vectorImage = GetNewVectorImage();

    int markdelayInUsec = 200;
    int polydelayInUsec = 75;
    int JumpDelay = 10;
    int JumpSpeed = 10;
    int LaserOnDelay = 5;
    int LaserOffDelay = 5;

    vectorImage.SetJumpDelay(JumpDelay);
    vectorImage.SetMarkDelay(markdelayInUsec);
    vectorImage.SetPolyDelay(polydelayInUsec);
    vectorImage.SetJumpSpeed(JumpSpeed);

    //Set Laser Delays
    vectorImage.SetLaserOnDelay(LaserOnDelay);
    vectorImage.SetLaserOffDelay(LaserOffDelay);


    bool pulsemode = false;
    PointAndShootDrillShapePattern pointandShootPattern = new PointAndShootDrillShapePattern();
    pointandShootPattern.UsePulseBurstMode = pulsemode;

    // Create a Drill Pulse
    DrillPulse pulse1 = new DrillPulse(2.5f, 2.5f, 5);

    pointandShootPattern.AddDrillPulse(pulse1);

    //Create a drill shape.
    DrillShape drillShape = new DrillShape();
    drillShape.SetPattern(pointandShootPattern);

    //Add drill Points to the drill shape
    drillShape.AddPointAndShootPoint(0, 0, 0);
    drillShape.AddPointAndShootPoint(10, 10, 0);
    drillShape.AddPointAndShootPoint(20, 20, 0);

    // Add the Drill shape to vector image
    vectorImage.AddDrill(drillShape);

    // Enable Lightning II galvo error checking in case of a fault -- single head system
    string CLM_Drilling = "Laser.GalvoErrorCheckEnable(0x0022, 0x0022)";

    // Alternatively, a dual head system instead
    // string CLM_Drilling = Laser.GalvoErrorCheckEnable(0x2222, 0x2222)

    CLM_Drilling += "ScanAll()\n";
    scanDocument.Scripts.Add(new ScanningScriptChunk("SC_CL_DRILLING", CLM_Drilling));

    try
    {
        scanDocument.StartScanning();

    }
    catch
    {

    }

}

There is no upper limit for the number of points a drill shape can handle, but it is always a best practice to use different Drill shapes for different drill patterns.