How to mirror a building in eQUEST

4 posts / 0 new
Last post

Hello,
I have a two phases project. Phase 1 building has been modelled in eQUEST and Phase 2 is mirrored from Phase 1. Can any of you advise me how to mirror the Phase 1 so I can get the Phase 2 done without creating it from scratch. I thought of adding a negative sign to each vertex of each polygon in .inp file, but the polygons have to be defined in a CCW direction, which leaves the problem unsolved.

Thanks for your helps.
Regards,

Xiangjin Yang Ph.D., P.Eng., LEED AP BD+C
MCW Energy Modelling Centre of Excellence
Building Simulation Engineer

MCW Consultants Ltd.
Queen's Quay Terminal
207 Queen's Quay West, Suite 615
Toronto, Ontario, Canada M5J 1A7
Office: (416) 598-2920 ext:255
Fax: (416) 598-5394

This e-mail may be privileged and confidential. Any unauthorized use is strictly prohibited. If you received this e-mail in error, please contact the sender directly.

P Please consider the environment before printing this e-mail

Bldg simulation's picture
Offline
Joined: 2016-04-13
Reputation: 400

Hello Sir:
This is a sticky wicket, as they say in the Commonwealth
The only thing you need to reproduce is your Envelope. All other schedules and window, wall and roof types remain the same.
When you say "miiro image", are you trying to have both buildings in the same model, or are they to be separate models.
With all the confusion, it is probably better to redo all the polygons from scratch, using your 1st building as a template. So a six sided L-shaped figure of?

becomes:

If you need them in the same model, you will need to add an offset to the x axis (assuming the y axis remains the same).
If your windows will look the same, base and mirror image, you can copy these over in the Detail Edit mode, call them new names, and place of the appropriate walls. If they are truly mirror images, I would still copy them over, rename, place on the appropriate wall, then begin transposing them to the mirror image positions.
I do not believe this approach will take you very long, as you are not resizing windows, only transposing their positions.
Hope it goes well for you.
John R. Aulbach, PE

Bldg simulation's picture
Offline
Joined: 2016-04-13
Reputation: 400

Hi,

That's a very interesting question, one where it seems simple but turns out it's going to be awful to redo from scratch in equest if you have a large model.

I don't have a solution that will work out of the box but if you're wiling to spend some time coding instead of drawing I have the start of a python object oriented model for equest where I can parse equests envelope and play with it. Offsetting all windows on a wall or copying them from floor to floors works for example.

The limit is that I haven't developed it enough to figure out "defaulted" attributes nor to include enough methods to allow the users to not have to figure out by themselves how the geometry is articulated in equest between floor and space polygons and the surface locations.

I also pretty much didn't write any documentation but I've commented the code (python) extensively.

I was planing on extending it to read and write between equest and sketchup but I've abandoned the project.(not using equest much anymore).

I can share that if you want.

There's also something called BTAP as part of the openstudio-standards that translate an equest model in the openstudio format, not sure if it can write the other way around as well (and it has a bunch of problems with "defaulted" attributes such as construction and will throw a hard error).

Frankly if your model isn't too big I'd just do it by hand..

Julien

Envoy? de mon iPhone

Bldg simulation's picture
Offline
Joined: 2016-04-13
Reputation: 400

(I missed and now see in hindsight this discussion has ended up cross-posting to [Bldg-sim] ? some of you might want to see this as well.)

Some clever thinking so far ? fun to read!

Furthering idea #2 ? what seems like a lot of work could possibly be automated with user-default expressions?

? The ?starting? Azimuth input for each exterior wall surface is determined the following doe2 default expression:

if( (#P("SHAPE")==#SI("NO-SHAPE","SPACE","SHAPE"))

.or.(#RV(#L("LOCATION"))!=0)) then 0.0

else

if(#P("SHAPE")==#SI("BOX","SPACE","SHAPE")) then

switch (#SV(#L("LOCATION")))

case 1 : 180.0

case 2 : 0.0

case 3 : 270.0

case 4 : 90.0

case 5 : 180.0

case 6 : 0.0

case 11: 180.0

case 12: 90.0

case 13: 0.0

case 14: 270.0

default : 0.0

endswitch

else

if (#SV(#L("LOCATION")) > 10) then

CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 ) - 180.0

else

switch (#SV(#L("LOCATION")))

case 1 : 180.0

case 2 : 90.0

case 3 : CalcAz( #P("POLYGON"), 3 ) - 180.0

case 4 : CalcAz( #P("POLYGON"), 1 ) - 180.0

case 5 : CalcAz( #P("POLYGON"), 0 ) - 180.0

case 6 : CalcAz( #P("POLYGON"), 2 ) - 180.0

default : CalcAz( #P("POLYGON"), 0 ) - 180.0

endswitch

endif

endif

endif

? For my own sanity I?m assuming like most (all?) wizard-generated models, your spaces are all defined using polygons, so we can substantially simplify the above default expression:

if (#SV(#L("LOCATION")) > 10)

then

CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 ) - 180.0

else

switch (#SV(#L("LOCATION")))

case 1 : 180.0

case 2 : 90.0

case 3 : CalcAz( #P("POLYGON"), 3 ) - 180.0

case 4 : CalcAz( #P("POLYGON"), 1 ) - 180.0

case 5 : CalcAz( #P("POLYGON"), 0 ) - 180.0

case 6 : CalcAz( #P("POLYGON"), 2 ) - 180.0

default : CalcAz( #P("POLYGON"), 0 ) - 180.0

endswitch

endif

? In the above if/then & switch statements, #SV(#L("LOCATION")) is returning whatever you would be choosing in this dropdown:

o ?Top? ? ?Back? would return #SV(#L("LOCATION")) = 1 ? 6

o ?V1 of Space Polygon? returns #SV(#L("LOCATION")) = 11, V2=12, V3=13? etc.

o Again falling back to wizard-generated models, I note walls normally use vertices for locations, so we only need to mess with the first case (#SV(#L("LOCATION")) > 10)

? So? to ?flip? azimuth (+180) for all the walls we just add 180 to the 3rd line:

if (#SV(#L("LOCATION")) > 10)

then

CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 ) - 180.0 + 180

else

switch (#SV(#L("LOCATION")))

case 1 : 180.0

case 2 : 90.0

case 3 : CalcAz( #P("POLYGON"), 3 ) - 180.0

case 4 : CalcAz( #P("POLYGON"), 1 ) - 180.0

case 5 : CalcAz( #P("POLYGON"), 0 ) - 180.0

case 6 : CalcAz( #P("POLYGON"), 2 ) - 180.0

default : CalcAz( #P("POLYGON"), 0 ) - 180.0

endswitch

endif

(yeah, I could also just remove the -180, but retaining for clarity at this point)

This makes a model go from this:

To this:

? Notwithstanding some new concerns regarding X/Y positioning to ensure accurate building self-shading (I?ll circle back to this), we now have all walls & their children (windows/doors) facing a 180-degree ?flipped? direction.

? This leaves the issue that you only want this ?azimuth flip? applied to surfaces which are North/South (or East/West) facing. There?s probably a few ways to do this, but I fell back to calculating ?plan north? orientation using parent+grandparent inputs:

if (#SV(#L("LOCATION")) > 10)

then

switch(MOD(#P2("AZIMUTH") + #P("AZIMUTH"), 360))

case 0 : CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 )

case 180 : CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 )

default : CalcAz( #P("POLYGON"), #SV(#L("LOCATION"))-11 ) - 180

endswitch

else

switch (#SV(#L("LOCATION")))

case 1 : 180.0

case 2 : 90.0

case 3 : CalcAz( #P("POLYGON"), 3 ) - 180.0

case 4 : CalcAz( #P("POLYGON"), 1 ) - 180.0

case 5 : CalcAz( #P("POLYGON"), 0 ) - 180.0

case 6 : CalcAz( #P("POLYGON"), 2 ) - 180.0

default : CalcAz( #P("POLYGON"), 0 ) - 180.0

endswitch

endif

Extra Notes:

o I made a few failed attempts to leverage the function ?DEG-FROM-NORTH,? but I sense that ends up being circular logic when applied to an exterior surface azimuth input... if it?s possible, I?d like to see an example!

o The specificed switch case values 0 (North) and 180 (South) should be independent of any global azimuth input, but check the results visually in 3D view for your case? if I?m wrong you may need to work #G("BUILD-PARAMETERS","AZIMUTH") into the switch statement.

o If you have a ?non-orthogonal? building with angled facets, you might instead want to specify the smaller number orientations for facets which DO NOT flip? if it?s a very complex footprint it may be easier to switch to if/then conditional ranges for orientation in lieu of a switch statement.

o Ta-Da!

? From here you could play with X/Y expressions to situate the walls more correctly to avoid oddball self-shading effects, but I suspect the moment your model stops looking like a square ?box? that could get very tricky. You could avoid the issue by just turning self-shading off if you don?t think it?s a big deal? you could also just push each modified wall a few hundred feet away from the building footprint using an X-input expression similar to (but simpler than) the above example.

Please let us know what your solution ends up looking like!

~Nick

------------------------------------------------------------------------------------------------------------------------------

Nick Caton, P.E.

Senior Energy Engineer
Energy and Sustainability Services
North America Operations
Schneider Electric

D 913.564.6361
M 785.410.3317
E nicholas.caton at schneider-electric.com
F 913.564.6380

15200 Santa Fe Trail Drive
Suite 204
Lenexa, KS 66219
United States

Bldg simulation's picture
Offline
Joined: 2016-04-13
Reputation: 400