Create Image Set
Hello
I made a mask image from an image with Z, Timepoint and channels. The resulting mask image doesn't maintain any of the dimension information so I want to recreate it. I copied the following code from the help files which looks like it should recreate the z dimension and I was going to adapt it to include timepoints and channels.
Public Function CreateSetFromFrames() Dim aSet As McImageSet If ThisApplication.ActiveImage Is Nothing Then MsgBox "No Image" Exit Function End If Set aSet = ImageSets.Add("SampleSet") Dim theLoc As New McImageSetLocations Dim i As Integer Dim theFrame As McFrame For i = 0 To 34 theLoc.RemoveAll ' get ready for next location theLoc.Add mcImageSetDimensions.mcisdChannel, 0 ' adding Channel 0 theLoc.Add mcImageSetDimensions.mcisdZ, i ' and this Z position ' note that while we are adding site 0 in this loop, we don't really have to specify that ' because a position of zero is assumed for any unspecified dimensions Set theFrame = ThisApplication.ActiveImage.Frame(i) theFrame = ThisApplication.ActiveImage.Frame(i) aSet.AddFrame theFrame, theLoc Next i End Function
The problem is that I get an Invalid Instruction error for Set aSet = ImageSets.Add("SampleSet") and I can't figure out what is wrong as adding End Set doesn't solve it. So the question is am I on the right track with this code and if yes what should I do with the Set error.
Regards
David
0
Best Answer
-
Hi David,
One more change has to be made converting VBA macros to .NET: add "ThisApplication." in front of global objects.
Also ImageSets now is a property of ThisApplication.Engine. I modified your macro to make it work:Public Function CreateSetFromFrames() If ThisApplication.ActiveImage Is Nothing Then MsgBox "No Image" Exit Function End If Dim aSet As McImageSet aSet = ThisApplication.Engine.ImageSets.Add("SampleSet") Dim theLoc As New McImageSetLocations Dim i As Integer Dim theFrame As McFrame For i = 0 To ThisApplication.ActiveImage.FrameCount-1 theLoc.RemoveAll ' get ready for next location theLoc.Add mcImageSetDimensions.mcisdChannel, 0 ' adding Channel 0 theLoc.Add mcImageSetDimensions.mcisdZ, i ' and this Z position ' note that while we are adding site 0 in this loop, we don't really have to specify that ' because a position of zero is assumed for any unspecified dimensions theFrame = ThisApplication.ActiveImage.Frame(i) aSet.AddFrame theFrame, theLoc Next i 'make the set visible ThisApplication.Windows.Add(aSet) End Function
I tested it with Heart.seq demo sequence.
Yuri0
Answers
-
Hi David,
These samples were written in old VBA languge, the current macro language uses .NET syntax, so you should just remove "Set" from the code:aSet = ImageSets.Add("SampleSet")
Yuri0 -
Hello Yuri
I tried that but it complains about Expecting a valid data type (eg integer)
David
0 -
Thanks Yuri, that works
David
0
Categories
- All Categories
- 961 Image-Pro v9 and higher
- 9 Image-Pro FAQs
- 18 Image-Pro Download & Install
- 448 Image-Pro General Discussions
- 486 Image-Pro Automation (Macros, Apps, Reports)
- 20 AutoQuant Deconvolution
- 2 AutoQuant Download & Install
- 18 AutoQuant General Discussions
- 195 Image-Pro Plus v7 and lower
- 3 Image-Pro Plus Download & Install
- 106 Image-Pro Plus General Discussions
- 86 Image-Pro Plus Automation with Macros
- 19 Legacy Products
- 16 Image-Pro Premier 3D General Discussions
- 26 Image-Pro Insight General Discussions