2022-11-16 06:48 PM - last edited on 2022-11-18 03:42 AM by Karl Ottenstein
How is it possible that in 2022 / Archicad 26 there is still not an out of the box right angle window? The Triangle Fixed window [Moderator: in the USA library] can not have a vertical side. This is super annoying. The only way to achieve this basic window shape (without paying for a 3rd party window like Cadimage) is to use the ancient FreeFormWindow, which is missing tons of features and is surely going to stop working at some point. Can whoever is in charge of the libraries, just spend like 5 minutes and get us this window?
Solved! Go to Solution.
2022-11-16 11:36 PM
Yeah, when I saw your post I had to test it to see. And to think that it doesn't work in the US library is really disappointing, to say the least.
2022-11-16 11:44 PM - edited 2022-11-17 12:24 AM
in the Australian library that ships with Archicad 25, it works,
but way back in Archicad 22 it was still broken.
the offending lines of script are divide by zero for the triangle window
add an exception for divide by zero that has been added in the Australian library for 25/26
line 443
if iWindowShape = SHAPE_TRIANGLE then
if abs(ac_wallhole_width / 2 + gs_posTopEdge_triangle) < EPS then
tan_LeftSide = 0
else
if abs(ac_wallhole_width / 2 - gs_posTopEdge_triangle) < EPS then
tan_RightSide = 0
else
and a bit futher down find any other lines that mention
if iWindowShape = SHAPE_TRIANGLE then
There are only 5 short groups of script that are for the triangle window
and add exceptions for divide by zero
line 876
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
else
line 886
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_RightSide) < EPS then
_oright = 0
else
line 1437
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
_oright = -rightJamb / sin(atn(tan_RightSide))
_xTop = 0
_yTop = (ac_wallhole_width + _oright) * tan_RightSide
else
if abs(tan_RightSide) < EPS then
_oleft = -leftJamb / sin(atn(tan_LeftSide))
_oright = 0
_xTop = ac_wallhole_width + _oleft
_yTop = _xTop * tan_LeftSide
else
line 5387
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
_oright = -offRight / sin(atn(tan_RightSide))
_xTop = 0
_yTop = (sideLeft + sideRight + _oright) * tan_RightSide
px1 = (sideLeft + sideRight) / 2 + _oright - (offBottom / tan_RightSide) * not(gs_stack_bottom)
px2 = -(sideLeft + sideRight) / 2
else
if abs(tan_RightSide) < EPS then
_oleft = -offLeft / sin(atn(tan_LeftSide))
_oright = 0
_xTop = sideLeft + sideRight + _oleft
_yTop = _xTop * tan_LeftSide
px1 = (sideLeft + sideRight) / 2
px2 = -(sideLeft + sideRight) / 2 - _oleft + (offBottom / tan_LeftSide) * not(gs_stack_bottom)
else
Someone in Oz has already fixed.
2022-11-17 05:51 PM
WallholeCut.gsm is fixed in the USA library as well.
They are restricting 'tec' (the length parameter for peak distance from center) with a VALUES RANGE in the macro gs_general_sw_macro_USA. If you change that statement's parens to brackets (i.e., <= instead of <), you can make the angle 90º but you will get more divide by zero in gs_general_sw_macro_USA, starting here, but I bet there are more exceptions needed a few lines later:
Fix those exceptions, save the macro with a modified name, change the macro call in the Window proper to that name. Save-as the window as well.
Way out of scope for an end user, IMO. I agree that it's about 5 minutes of work for GS.
It's a few more minutes to provide a checkbox for 'Right Triangle'. 🤗
2022-11-17 07:31 PM
This is a saved-as copy of the window, with the macros worked thru as far as needed (window & trim), and the 'angle' locked to 90º.
2022-11-16 10:28 PM
It is pretty weird for sure after all these years! The parameter shown in your screenshot for the location of the peak can be adjusted vanishingly close to ½ the window width to approximate a right angle window in a pinch for preliminary design work. Depending on the scale of the drawings, it might be enough to fake CDs.
Attached, I dragged the closest approx to a right triangle to the edge of a wall to show the small (approx 1/4" for a 40" wide window) gap showing in the stucco due to the inability to set the top vertex exactly above the bottom one. I turned on casing to make this really obvious. The fact that they disallow two vertices from occupying the same X coordinate position (per se) tells us that the mathematical construction method used would have to be changed to allow this to be a more flexible window... so I'd guess it is more than 5 minutes work, but work that should be done nonetheless.
2022-11-16 10:36 PM
It's so frustrating to take that top vertex to 1/2" then 1/4" then a 1/16"... so close to zero and yet, nope! I agree for SD, it's probably fine. But I refuse! 🙂
2022-11-16 11:31 PM
Maybe it is an imperial thing. I just checked in the INT version and I can get a right-angle triangle window from that exact object.
2022-11-16 11:32 PM
I do not have the words to express how ridiculous this is. In the USA library, we can not do that.
2022-11-16 11:36 PM
Yeah, when I saw your post I had to test it to see. And to think that it doesn't work in the US library is really disappointing, to say the least.
2022-11-16 11:44 PM - edited 2022-11-17 12:24 AM
in the Australian library that ships with Archicad 25, it works,
but way back in Archicad 22 it was still broken.
the offending lines of script are divide by zero for the triangle window
add an exception for divide by zero that has been added in the Australian library for 25/26
line 443
if iWindowShape = SHAPE_TRIANGLE then
if abs(ac_wallhole_width / 2 + gs_posTopEdge_triangle) < EPS then
tan_LeftSide = 0
else
if abs(ac_wallhole_width / 2 - gs_posTopEdge_triangle) < EPS then
tan_RightSide = 0
else
and a bit futher down find any other lines that mention
if iWindowShape = SHAPE_TRIANGLE then
There are only 5 short groups of script that are for the triangle window
and add exceptions for divide by zero
line 876
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
else
line 886
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_RightSide) < EPS then
_oright = 0
else
line 1437
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
_oright = -rightJamb / sin(atn(tan_RightSide))
_xTop = 0
_yTop = (ac_wallhole_width + _oright) * tan_RightSide
else
if abs(tan_RightSide) < EPS then
_oleft = -leftJamb / sin(atn(tan_LeftSide))
_oright = 0
_xTop = ac_wallhole_width + _oleft
_yTop = _xTop * tan_LeftSide
else
line 5387
if iWindowShape = SHAPE_TRIANGLE then
if abs(tan_LeftSide) < EPS then
_oleft = 0
_oright = -offRight / sin(atn(tan_RightSide))
_xTop = 0
_yTop = (sideLeft + sideRight + _oright) * tan_RightSide
px1 = (sideLeft + sideRight) / 2 + _oright - (offBottom / tan_RightSide) * not(gs_stack_bottom)
px2 = -(sideLeft + sideRight) / 2
else
if abs(tan_RightSide) < EPS then
_oleft = -offLeft / sin(atn(tan_LeftSide))
_oright = 0
_xTop = sideLeft + sideRight + _oleft
_yTop = _xTop * tan_LeftSide
px1 = (sideLeft + sideRight) / 2
px2 = -(sideLeft + sideRight) / 2 - _oleft + (offBottom / tan_LeftSide) * not(gs_stack_bottom)
else
Someone in Oz has already fixed.
2022-11-17 12:18 AM
Hopefully someone at GS with authority in the USA library sees this and fixes it.
2022-11-17 02:06 AM
Another reason I went to the dark side of gdl all the things.
2022-11-17 11:06 AM
standard window in GER lib.