The CWIMAQ method 'RegionsToMask' fails with a run-time error if an annulus region is supplied where the start or end angle fall outside the range of 0 to 360 degrees. This behavior appears to be new since CWIMAQ.OCX v6.0. The same code ran successfully with earlier versions of cwimaq. The failing code is shown below:
Private Sub Form_Load()
Dim maskImage As New CWIMAQImage
Dim objAnnulus As New CWIMAQControlsLib.CWIMAQAnnulus
Dim objRegions As New CWIMAQControlsLib.CWIMAQRegions
Dim ModelImage As Variant
Dim dblAngle As Double
' Set model image to empty
ModelImage = Empty
'Create an annulus
objAnnulus.InnerRadius = 165
objAnnulus.OuterRadius = 195
objAnnulus.Center.X = 320
objAnnulus.Center.Y = 240
objAnnulus.StartAngle = 300
objAnnulus.EndAngle = 360
'Add it to regions
objRegions.AddAnnulus objAnnulus
'Call RegionsToMask: this call succeeds
CWIMAQVision1.RegionsToMask maskImage, objRegions, ModelImage, 255
'Remove last region
objRegions.RemoveAll
'Make End Angle > 360
objAnnulus.EndAngle = 361
'Add it to regions
objRegions.AddAnnulus objAnnulus
'Call RegionsToMask: this call fails with the following error:
'
' Run-time error '-2147417848(80010108)'
'
' Method 'RegionsToMask' of object '_DCWIMAQVision' failed
'
CWIMAQVision1.RegionsToMask maskImage, objRegions, ModelImage, 255
End Sub