CustomWobblePattern
The custom wobble pattern allows users define their own custom wobble patterns using two 1024 data memory tables dedicated for X and Y axis.
You can define your wobble pattern using the X and Y data tables, each consisting of 1024 data memory entries. The data tables will then be processed to create the wobble pattern, which will be applied to all the micro vectors during marking. It's important to populate both the X and Y data memory with all 1024 entries for the command to execute properly; otherwise, it will terminate with an error.
The table will be traversed linearly for different frequencies defined by the user.
The ability of the scanning system to reproduce the wobble pattern is a function of the servo bandwidth of the galvo control system. This varies between small aperture size scan heads that in general have higher bandwidth, and larger aperture scan heads which use larger mirrors with higher inertia and consequently, lower bandwidth. As a rule of thumb, the wobble frequency should be chosen to be no more than ½ the bandwidth of the galvo servo system if that bandwidth is known. For small galvo heads, 2KHz wobble patterns may be achievable, where as 500Hz may be the limit for larger galvo heads. The use of wobble inherently involves process evaluation to discover the proper wobble pattern and parameters for the process result desired. The use of higher frequencies will result in inaccurate rendering of the wobble pattern which may give inconsistent process results.
Syntax
| public CustomWobblePattern(float[] x, float[] y, float xFrequency, float yFrequency) |
Parameters
| float[] | x | X data table for the x wobble patern |
| float[] | y | Y data table for the x wobble patern |
| float | xFrequency | Frequency in X direction |
| float | yFrequency | Frequency in Y direction |
Methods
| Clone | Create a clone of this object |
| Copy | Copy parameters from another ConstantFluenceCircularWobblePattern |
| Deserialize | De serialize from a saved object |
| Serialize | Serialize this object |
scanDocument = scanDeviceManager.CreateScanDocument(GetselectedDeviceUniqueName(), DistanceUnit.Millimeters, false);
if (scanDocument != null)
{
VectorImage vectorImage = scanDocument.CreateVectorImage("image1", DistanceUnit.Millimeters);
vectorImage.SetMarkSpeed(1000);
vectorImage.SetJumpSpeed(2000);
vectorImage.SetJumpDelay(100);
vectorImage.SetMarkDelay(100);
//Set Laser Delays
vectorImage.SetLaserOnDelay(10);
vectorImage.SetLaserOffDelay(10);
float xFrequency = 5.6f;
float yFrequency = 5.6f;
int N = 1024;
float omega = (float)(2.0 * Math.PI / 1024.0);
float[] xTableValues = new float[N];
float[] yTableValues = new float[N];
for (int i = 0; i < N; i++)
{
xTableValues[i] = (float)Math.Cos(i * omega);
yTableValues[i] = (float)Math.Sin(i * omega);
}
CustomWobblePattern wobbleData = new CustomWobblePattern(xTableValues, yTableValues, xFrequency, yFrequency);
vectorImage.EnableWobble(wobbleData);
float centerX = 0;
float centerY = 0;
float centerZ = 0;
float radius = 10;
vectorImage.AddCircle(centerX, centerY, centerZ, radius);
vectorImage.DisableWobble();
scanDocument.Scripts.Add(new ScanningScriptChunk("defaultScript", "ScanAll()"));
try
{
scanDocument.StartScanning();
}
catch
{
}
}