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.
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.