Translation of Shading:Fin & Shading:Fin:Projection objects doesn't work if fin depth is zero

Issue #38 new
Aaron Boranian created an issue

When opening an IDF with “simple geometry” Shading:Fin or Shading:Fin:Projection objects, Euclid will translate them into Shading:Zone:Detailed object. Each of the “simple geometry” shading fin objects define the geometry of the fin on left & right sides of the window separately. If the fin depth of one side is set to zero, then Euclid stops translation with the following error message:

ERROR:
TypeError
wrong argument type Geom::Point3d (expected Array)

BACKTRACE:
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/Surface.rb:130:in 'add_face' C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/Surface.rb:130:in 'create_entity'
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/DrawingInterface.rb:82:in 'draw_entity' C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/ModelInterface.rb:204:in block in 'update_model'
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/ModelInterface.rb:200:in 'each' C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/ModelInterface.rb:200:in 'each_with_index'
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/ModelInterface.rb:200:in 'update_model' C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/interfaces/ModelInterface.rb:117:in 'draw_model'
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/ModelManager.rb:185:in 'open_input_file' C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/CommandManager.rb:70:in 'open_input_file'
C:/projects/euclid/build/output/extension/euclid/lib/legacy_openstudio/lib/MenuManager.rb:76:in block in 'create_commands' SketchUp:1:in 'call'

Solution: When these “simple geometry” shading fin objects are translated, check if the fin depth on either side is zero. If it is, then skip the generation of the new detailed shade on that side of the window.

Comments (7)

  1. Aaron Boranian reporter

    Need to test a few situations for running in EnergyPlus (warnings or severe errors, specifically):

    • Simple shading fin object with depth = 0 on one side
    • Simple shading fin object with depth = 0 on BOTH sides

  2. Aaron Boranian reporter

    Check if similar depth or area input fields exist for other simple shading objects (Shading:Building, Shading:Overhang, etc.).

    Should add warning message (Not Ruby console, but similar to version mis-match between loaded IDF and what Euclid expects) for shading objects with no surface area.

  3. Aaron Boranian reporter

    Attaching version of ‘4ZonewithShading_Simple2.idf’ example file to illustrate the issue. I’ve made a copy of the original `Shading:Fin:Projection` object to have one with only left depth (right depth = 0) and the other with only right depth (left depth = 0). EnergyPlus v9.6 runs with this IDF, but generates the following warning messages:

       ** Warning ** Shading:Fin:Projection=Right Fin of "ZN001:WALL001:SHADE003 LEFT", illegal surface area=[0.00]. Surface will NOT be entered.
       ** Warning ** Shading:Fin:Projection=Left Fin of "ZN001:WALL001:SHADE003 RIGHT", illegal surface area=[0.00]. Surface will NOT be entered.
    

    Propose to “filter” surfaces with zero area and delete them from the IDF to avoid warnings/errors like this when running the IDF. Will add warning message to Ruby console in Euclid when this happens, similar to surfaces with less than 3 vertices.

  4. Aaron Boranian reporter

    This is actually the same Euclid error from issue #18, so should catch any surfaces after translating from simple geometry where vertices make a line (area = 0). Once issue #18 branch is merged, will close this issue.

  5. Log in to comment