As you might have read, it is very important for Groundhog to know if a surface is a Workplane, an Illum, a Window or other things. This is because, depending on what they are, they they will be exported in different ways. For example, you do not want a Workplane (which is meant to be a plane in space where you want to calculate different values) to be exported as a real surface that will be actually seen in your renders.
Even though it is not necessary to identify windows as "special elements" when we want to make a render, there are some other cases where it is very convenient to export them separately. In order to achieve this identification, Groundhog can internally tell (from its Label) if a surface is a window or not, and export it separately.
if Labeler.window?(face) then#face is a windowelse#face is not a windowend
Workplanes are planes of the space where we would like to measure the illuminance or luminance levels. Even though in a Groundhog-created SketchUp model the workplanes will be represented as a (semi-transparent red) surface, it will be exported as a sensor grid in a file that represent such sensors in a format that can be used with Radiance's RCONTRIB and RTRACE programs.
if Labeler.workplane?(face) then#face is a workplaneelse#face is not a workplaneend
On an e-mail conversation, Greg Ward helped me define illum surfaces as:
Illum surfaces, also known as "impostors" or "proxies," are light-emitting surfaces whose luminous distributions are equivalent to the distribution transmitted through them as the consequence of the existence of other (direct and indirect) light sources. Mkillum is the program that allows creating illum surfaces in a convenient way (Ward & Shakespeare, 1998).For example, the daylight distribution transmitted through a window, which can be considered a consequence of the existence of the sun and sky, can be summarized into an illum surface.
Illum surfaces may be very useful when rendering and modeling luminaires in detail. Personally, I am not good at either of those, but I thought it was useful to include this feature in Groundhog.
Strictly speaking, these surfaces are not yet illum surfaces. They are exported without any Radiance modifier ("void"), so they are invisible, and are supposed to be used for creating illums by running mkIllum program in order to create the actual illum.
if Labeler.illum?(face) then#illum is a workplaneelse#illum is not a workplaneend
NOTE: Every time the "Make Window" tool is used, an illum surface is created at the interior side of the wall, represented in a semi-transparent green.
When results are imported back to SketchUp using Groundhog, a new SketchUp group is created, which contains several rectangles that are colored in such way that they create a heatmap. Each of such pixels is labeled as a "result_pixel".
if Labeler.result_pixel?(face) then#illum is a result_pixelelse#illum is not a result_pixelend
The rest of the surfaces are the not-labeled surfaces of the scene. They will be exported in radiance geometry files separated by layers.
When results are imported back to SketchUp using Groundhog, a number of squares (result pixels) will be packed in a group. Such group will be labeled as a Solved Workplane
if Labeler.solved_workplane?(component_definition) then#component_definition is a solved_workplaneelse#component_definition is not a solved_workplaneend
A component may labeled as Local luminaire, which means that such component has been linked with an IES file that is within the computer.
if Labeler.local_luminaire?(component_definition) then#component_definition is a local_luminaireelse#component_definition is not a local_luminaireend
A group may labeled as Tubular Daylight Device, which means that it will be exported accordingly for simulation and workaround (TDDs are not easy to simulate using ray-tracing)
if Labeler.tdd?(group) then#group is a TDDelse#Group is not a TDDend
Local materials are SketchUp materials that contain their Radiance string definition (i.e. primitive, modifier and arguments) stored their "value"
if Labeler.local_material?(material) then#material is a local_materialelse#material is not a local_materialend