Question

Non sequential arrays as boolean operands

  • 4 November 2021
  • 5 replies
  • 252 views

Hi, I am trying to make a native boolean between an annulus and a non sequential object array. 

It seems there is an error there, so my question is, can non sequential arrays be used as operands in boolean operations?

 

Thank you!


5 replies

Userlevel 7
Badge +2

Hi Giulia,

 

I’ve tested an Array of Rectangular Volume minus a Cylinder Volume, and it seems to work:

I would be more concerned by the fact that you are trying to combine an Annulus with your array. An Annulus isn’t a volume, it is just a surface. I don’t think you can use the Boolean objects to combine a volume with a surface.

Perhaps you could tell us what is it you are trying to achieve?

Take care,

 

David

Dear David,

again, thank you. Probably I got misled by the fact the annulus specs require coordinates in space (xmin,max front and rear and same for y), considering it as a volume. I am trying to create prisms array plates with circular shape which have a certain thickness (I used boolean rectangular objects the way you suggested before), replicated the geometry using the array feature and tried to substract an annulus (volume) from it in order to make it round. 

In the configuration below I have assigned it an absorb material, but it was not exactly what I wanted to achieve:

 I might need to reconsider the geometries involved I guess..

And as you kindly reminded last time, ray tracing speed is particularly slow here..

 

Best,

Giulia.

Userlevel 7
Badge +2

Dear Giulia,

 

Thank you for sharing your application. There is one thing I can comment on and I hope I got your application idea right (correct me otherwise).

If you want to make something cylindrical you can use the Boolean object to interstect that particular something with a Cylinder Volume. In the screenshot below, I’ve placed a Rectangular Volume, and a Cylinder Volume. Then, I used a Boolean Native to take the intersection of the two with the & operator (of course this is dummy, you don’t need to do this intersection in this case, but its just to show my idea):

Then, about the raytracing speed, once you have a good geometry for your object. It would be good to spend some time thinking about how it could be simplifed. Ideally, for performant raytracing, you’d want to stick with the Nesting Rule or Boolean Native objects. In addition to the speed of your raytracing, there is also an efficiency components. Ideally, you’d want everyray that is generated to contribute to your detector, which isn’t always possible but the less rays you lose the more efficient your raytracing will be. Lastly, depending on the kind of analysis, and the overhead, you might want to think about a sequential design as well.

I hope this helps, and take care,

 

David

Dear David, thank you again.

Well… I have tried it this way and the boolean object (intersection between prism array and cylinder) doesn’t show up (I have put it -25 mm along z in order to be able to see it but I don’t). The box ‘Do not draw obectt ’ is not checked of course..

Maybe the dimension of the prisms is too little?

Thank you,

best,

Giulia.

Userlevel 6
Badge +2

Hi Giulia

Feel free to share your file here. Zip an archive file (File..save as...zar).

Or send it to support@zemax.com.

We’ll be happy to have a look.

 

Reply