GDL
About building parametric objects with GDL.
SOLVED!

Railing - Diagonal Rails

Lingwisyer
Guru
Hi all,

How would you go about creating diagonal rails within your handrail? I am wanting to create some cross braces and thought I could use a custom panel, but it doesn't stretch to fit...
The distance between posts varies at different points around the building, so is there a way to make them stretch to fit?


Ling.

AC22-23 AUS 7000Help Those Help You - Add a Signature
Self-taught, bend it till it breaksCreating a Thread
Win10 | R5 2600 | 16GB | GTX1660 
1 ACCEPTED SOLUTION

Accepted Solutions
Solution
Barry Kelly
Moderator
This is what you will need to do to create a X panel.

The 'Built-in Panel' object is not in the library as it is part of the Archicad program itself.
So to open it, create a railing using it, select it then CTRL+SHIFT+O.
Close all the other objects that open as they aren't needed.

'SAVE AS' with a new name - something like 'Cross panel'.

Create a new length parameter called ... rail_hgt

In the 3D script find and comment out this section (starting at line 263).
!!!!				group lowergroup
!!!!					for nSide = 1 to nTransformedPoly
!!!!						if segmentCutFlag[nSide] then
!!!!							_cutangle = segmentCutAngle[nSide]
!!!!						else
!!!!							_cutangle = 0
!!!!							if segmentContinueFlag[nSide] then
!!!!								if segmentSideFlag[nSide] = SIDE_END then _cutangle = _cutright
!!!!								if segmentSideFlag[nSide] = SIDE_START then _cutangle = _cutleft
!!!!							endif
!!!!						endif
!!!!						put transformedPoly[nSide][1], transformedPoly[nSide][2],
!!!!							_cutangle, transformedPoly[nSide][TRPOLY_STATUS], _matPanel
!!!!					next nSide
!!!!
!!!!					cprism_{2} _matPanel, _matPanel, _matPanel,
!!!!						nTransformedPoly, ac_panelThickness / 2,
!!!!						get(nsp - 2), -1, _matPanel
!!!!					gosub "flushBuffer"
!!!!				endgroup
!!!!
!!!!				group uppergroup
!!!!					for nSide = 1 to nTransformedPoly
!!!!						if segmentCutFlag[nSide] then
!!!!							_cutangle = segmentCutAngle[nSide]
!!!!						else
!!!!							_cutangle = 0
!!!!							if segmentContinueFlag[nSide] then
!!!!								if segmentSideFlag[nSide] = SIDE_END then _cutangle = _cutright
!!!!								if segmentSideFlag[nSide] = SIDE_START then _cutangle = _cutleft
!!!!							endif
!!!!						endif
!!!!						put transformedPoly[nSide][1], transformedPoly[nSide][2],	! [nSide][3] should be all the same
!!!!							-_cutangle, transformedPoly[nSide][TRPOLY_STATUS], _matPanel
!!!!					next nSide
!!!!
!!!!					addz ac_panelThickness
!!!!					mulz -1
!!!!					cprism_{2} _matPanel, _matPanel, _matPanel,
!!!!						nTransformedPoly, ac_panelThickness / 2,
!!!!						get(nsp - 2), -1, _matPanel
!!!!					gosub "flushBuffer"
!!!!					del 2
!!!!				endgroup
Directly after that add this ...
!!!The geometry for all the corner points
horiz_panel = (transformedPoly[2][1]-transformedPoly[1][1])*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

vert_panel = (transformedPoly[3][2]-transformedPoly[2][2])/COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

end_rise = (transformedPoly[2][1]-transformedPoly[1][1])*SIN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

cross_angle = ATN((vert_panel+end_rise)/horiz_panel)

panel_cross_angle_1 = cross_angle-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]

cross_x_rad_1 = (rail_hgt*0.5)/SIN(panel_cross_angle_1)

cross_y_rad_1 = (rail_hgt*0.5)/SIN(90-panel_cross_angle_1-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

y_reduction_1 = cross_y_rad_1-(cross_y_rad_1*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]))

if panelSegmentData[iSegment][SEGMENT_SLOPEANGLE] <> 0 then
	x_reduction_1 = y_reduction_1/TAN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]*0.5)
else
	x_reduction_1 = 0
endif

panel_cross_angle_2 = ATN((vert_panel-end_rise)/horiz_panel)+panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]

cross_x_rad_2 = (rail_hgt*0.5)/SIN(panel_cross_angle_2)

cross_y_rad_2 = (rail_hgt*0.5)/COS(panel_cross_angle_2-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

y_reduction_2 = cross_y_rad_2-(cross_y_rad_2*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]))

if panelSegmentData[iSegment][SEGMENT_SLOPEANGLE] <> 0 then
	x_reduction_2 = y_reduction_2/TAN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]*0.5)
else
	x_reduction_2 = 0
endif


				group lowergroup

						put transformedPoly[1][1], transformedPoly[1][2],
							0, 15, _matPanel
						put transformedPoly[1][1]+cross_x_rad_1, transformedPoly[1][2],
							0, 15, _matPanel
						put transformedPoly[3][1]-x_reduction_1, transformedPoly[3][2]-cross_y_rad_1+y_reduction_1,
							0, 15, _matPanel
						put transformedPoly[3][1], transformedPoly[3][2],
							0, 15, _matPanel
						put transformedPoly[3][1]-cross_x_rad_1, transformedPoly[3][2],
							0, 15, _matPanel
						put transformedPoly[1][1]+x_reduction_1, transformedPoly[1][2]+cross_y_rad_1-y_reduction_1,
							0, 15, _matPanel
						put transformedPoly[1][1], transformedPoly[1][2],
							0, 15, _matPanel


					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"


						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1]+x_reduction_2, transformedPoly[2][2]+cross_y_rad_2-y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[4][1]+cross_x_rad_2, transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1], transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1]-x_reduction_2, transformedPoly[4][2]-cross_y_rad_2+y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[2][1]-cross_x_rad_2, transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel

					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"

				endgroup


				group uppergroup
					addz ac_panelThickness
					mulz -1

						put transformedPoly[1][1], transformedPoly[1][2],
							_cutangle, 15, _matPanel
						put transformedPoly[1][1]+cross_x_rad_1, transformedPoly[1][2],
							_cutangle, 15, _matPanel
						put transformedPoly[3][1]-x_reduction_1, transformedPoly[3][2]-cross_y_rad_1+y_reduction_1,
							_cutangle, 15, _matPanel
						put transformedPoly[3][1], transformedPoly[3][2],
							_cutangle, 15, _matPanel
						put transformedPoly[3][1]-cross_x_rad_1, transformedPoly[3][2],
							_cutangle, 15, _matPanel
						put transformedPoly[1][1]+x_reduction_1, transformedPoly[1][2]+cross_y_rad_1-y_reduction_1,
							_cutangle, 15, _matPanel
						put transformedPoly[1][1], transformedPoly[1][2],
							_cutangle, 15, _matPanel


					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"


						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1]+x_reduction_2, transformedPoly[2][2]+cross_y_rad_2-y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[4][1]+cross_x_rad_2, transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1], transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1]-x_reduction_2, transformedPoly[4][2]-cross_y_rad_2+y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[2][1]-cross_x_rad_2, transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel

					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"
					del 2
				endgroup

In the interface script (edit: not parameter script) find these line starting at line 62 and comment them out.
!!!!	_yCurr = _pageStartY + 37
!!!!	ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight
Then add ...

	_yCurr = _pageStartY + 37
	ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight UI_TOOLTIP "Rail Width"

	ui_infield{3} rail_hgt, 380, 130, 50, _infHeight UI_TOOLTIP "Rail Height"


Now re-save and you should find it available as a panel type in your railing.
Of course you will need this in your loaded library or your embedded library.

I can't guarantee it will work in all situations (I haven't tried leaning the railing on an angle), but it seems to work for flat and rising (stair) railings.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11

View solution in original post

21 REPLIES 21
Lingwisyer
Guru
No ideas? Looks like I might need to resort to scripting one... T_T

AC22-23 AUS 7000Help Those Help You - Add a Signature
Self-taught, bend it till it breaksCreating a Thread
Win10 | R5 2600 | 16GB | GTX1660 
Laszlo Nagy
Community Admin
Community Admin
Yes, you would probably have to script it so that it will stretch properly. If you model it and save it as a Railing Panel, it will be static, it will probably not stretch (I think, I have not tried this).
I would try to create a custom Railing Panel, not a custom Post.
Loving Archicad since 1995 - Find Archicad Tips at x.com/laszlonagy
AMD Ryzen9 5900X CPU, 64 GB RAM 3600 MHz, Nvidia GTX 1060 6GB, 500 GB NVMe SSD
2x28" (2560x1440), Windows 10 PRO ENG, Ac20-Ac27
Barry Kelly
Moderator
I just tried saving a custom railing panel.
Seems you will have to get the exact size for both horizontal and raking railings and also any different heights and widths of panels..
The custom panel does not stretch to suit the actual panel extents.

Or you need to figure out the script of a panel object and base your diagonals on the extents of the panel.
Just had a look at the "Built-in Panel' and typically the script is very difficult to follow.
It seems there is more to this basic object than just a flat panel with 4 bounding corner points.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Barry Kelly
Moderator
I have managed to figure out the node co-ordinates for the corners of the panel in the built-in panel macro.
These are PUT in the script just before the CPRISM{2} that creates the panel (actually there are 2 half thickness panels - not sure why exactly).
In the attached image you can see I have spheres at these points.
Then with a bit of maths I have calculated the railing angle and some x and y offsets that would be required for the nodes of a diagonal prism.
I have just added some lines at this point to get the width of the diagonal rail.

But it doesn't work when the railing is angled up a stair.
It seems I need to take into account the ROT of the panel in another way other than just calculating the angle of the railing.

So I am sure something is possible.
I will have more of a play later when I get some more free time.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Barry Kelly
Moderator
I have moved this entire post to Libraries/GDL section, as that is really what it has turned into.

It is possible to create a stretchy X panel.
Unfortunately I can not post the object here as I have simply modified the 'Built-in Panel' object by Graphisoft, and licensing requirements say I can not distribute a modified object.
Read here ...

https://archicad-talk.graphisoft.com/viewtopic.php?f=6&t=47320

However I can give instructions on how to modify the object for your own use.
So stay tuned.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Solution
Barry Kelly
Moderator
This is what you will need to do to create a X panel.

The 'Built-in Panel' object is not in the library as it is part of the Archicad program itself.
So to open it, create a railing using it, select it then CTRL+SHIFT+O.
Close all the other objects that open as they aren't needed.

'SAVE AS' with a new name - something like 'Cross panel'.

Create a new length parameter called ... rail_hgt

In the 3D script find and comment out this section (starting at line 263).
!!!!				group lowergroup
!!!!					for nSide = 1 to nTransformedPoly
!!!!						if segmentCutFlag[nSide] then
!!!!							_cutangle = segmentCutAngle[nSide]
!!!!						else
!!!!							_cutangle = 0
!!!!							if segmentContinueFlag[nSide] then
!!!!								if segmentSideFlag[nSide] = SIDE_END then _cutangle = _cutright
!!!!								if segmentSideFlag[nSide] = SIDE_START then _cutangle = _cutleft
!!!!							endif
!!!!						endif
!!!!						put transformedPoly[nSide][1], transformedPoly[nSide][2],
!!!!							_cutangle, transformedPoly[nSide][TRPOLY_STATUS], _matPanel
!!!!					next nSide
!!!!
!!!!					cprism_{2} _matPanel, _matPanel, _matPanel,
!!!!						nTransformedPoly, ac_panelThickness / 2,
!!!!						get(nsp - 2), -1, _matPanel
!!!!					gosub "flushBuffer"
!!!!				endgroup
!!!!
!!!!				group uppergroup
!!!!					for nSide = 1 to nTransformedPoly
!!!!						if segmentCutFlag[nSide] then
!!!!							_cutangle = segmentCutAngle[nSide]
!!!!						else
!!!!							_cutangle = 0
!!!!							if segmentContinueFlag[nSide] then
!!!!								if segmentSideFlag[nSide] = SIDE_END then _cutangle = _cutright
!!!!								if segmentSideFlag[nSide] = SIDE_START then _cutangle = _cutleft
!!!!							endif
!!!!						endif
!!!!						put transformedPoly[nSide][1], transformedPoly[nSide][2],	! [nSide][3] should be all the same
!!!!							-_cutangle, transformedPoly[nSide][TRPOLY_STATUS], _matPanel
!!!!					next nSide
!!!!
!!!!					addz ac_panelThickness
!!!!					mulz -1
!!!!					cprism_{2} _matPanel, _matPanel, _matPanel,
!!!!						nTransformedPoly, ac_panelThickness / 2,
!!!!						get(nsp - 2), -1, _matPanel
!!!!					gosub "flushBuffer"
!!!!					del 2
!!!!				endgroup
Directly after that add this ...
!!!The geometry for all the corner points
horiz_panel = (transformedPoly[2][1]-transformedPoly[1][1])*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

vert_panel = (transformedPoly[3][2]-transformedPoly[2][2])/COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

end_rise = (transformedPoly[2][1]-transformedPoly[1][1])*SIN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

cross_angle = ATN((vert_panel+end_rise)/horiz_panel)

panel_cross_angle_1 = cross_angle-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]

cross_x_rad_1 = (rail_hgt*0.5)/SIN(panel_cross_angle_1)

cross_y_rad_1 = (rail_hgt*0.5)/SIN(90-panel_cross_angle_1-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

y_reduction_1 = cross_y_rad_1-(cross_y_rad_1*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]))

if panelSegmentData[iSegment][SEGMENT_SLOPEANGLE] <> 0 then
	x_reduction_1 = y_reduction_1/TAN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]*0.5)
else
	x_reduction_1 = 0
endif

panel_cross_angle_2 = ATN((vert_panel-end_rise)/horiz_panel)+panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]

cross_x_rad_2 = (rail_hgt*0.5)/SIN(panel_cross_angle_2)

cross_y_rad_2 = (rail_hgt*0.5)/COS(panel_cross_angle_2-panelSegmentData[iSegment][SEGMENT_SLOPEANGLE])

y_reduction_2 = cross_y_rad_2-(cross_y_rad_2*COS(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]))

if panelSegmentData[iSegment][SEGMENT_SLOPEANGLE] <> 0 then
	x_reduction_2 = y_reduction_2/TAN(panelSegmentData[iSegment][SEGMENT_SLOPEANGLE]*0.5)
else
	x_reduction_2 = 0
endif


				group lowergroup

						put transformedPoly[1][1], transformedPoly[1][2],
							0, 15, _matPanel
						put transformedPoly[1][1]+cross_x_rad_1, transformedPoly[1][2],
							0, 15, _matPanel
						put transformedPoly[3][1]-x_reduction_1, transformedPoly[3][2]-cross_y_rad_1+y_reduction_1,
							0, 15, _matPanel
						put transformedPoly[3][1], transformedPoly[3][2],
							0, 15, _matPanel
						put transformedPoly[3][1]-cross_x_rad_1, transformedPoly[3][2],
							0, 15, _matPanel
						put transformedPoly[1][1]+x_reduction_1, transformedPoly[1][2]+cross_y_rad_1-y_reduction_1,
							0, 15, _matPanel
						put transformedPoly[1][1], transformedPoly[1][2],
							0, 15, _matPanel


					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"


						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1]+x_reduction_2, transformedPoly[2][2]+cross_y_rad_2-y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[4][1]+cross_x_rad_2, transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1], transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1]-x_reduction_2, transformedPoly[4][2]-cross_y_rad_2+y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[2][1]-cross_x_rad_2, transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel

					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"

				endgroup


				group uppergroup
					addz ac_panelThickness
					mulz -1

						put transformedPoly[1][1], transformedPoly[1][2],
							_cutangle, 15, _matPanel
						put transformedPoly[1][1]+cross_x_rad_1, transformedPoly[1][2],
							_cutangle, 15, _matPanel
						put transformedPoly[3][1]-x_reduction_1, transformedPoly[3][2]-cross_y_rad_1+y_reduction_1,
							_cutangle, 15, _matPanel
						put transformedPoly[3][1], transformedPoly[3][2],
							_cutangle, 15, _matPanel
						put transformedPoly[3][1]-cross_x_rad_1, transformedPoly[3][2],
							_cutangle, 15, _matPanel
						put transformedPoly[1][1]+x_reduction_1, transformedPoly[1][2]+cross_y_rad_1-y_reduction_1,
							_cutangle, 15, _matPanel
						put transformedPoly[1][1], transformedPoly[1][2],
							_cutangle, 15, _matPanel


					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"


						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1]+x_reduction_2, transformedPoly[2][2]+cross_y_rad_2-y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[4][1]+cross_x_rad_2, transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1], transformedPoly[4][2],
							0, 15, _matPanel
						put transformedPoly[4][1]-x_reduction_2, transformedPoly[4][2]-cross_y_rad_2+y_reduction_2,
							0, 15, _matPanel
						put transformedPoly[2][1]-cross_x_rad_2, transformedPoly[2][2],
							0, 15, _matPanel
						put transformedPoly[2][1], transformedPoly[2][2],
							0, 15, _matPanel

					cprism_{2} _matPanel, _matPanel, _matPanel,
						7, ac_panelThickness / 2,
						get(nsp - 2), -1, _matPanel

					gosub "flushBuffer"
					del 2
				endgroup

In the interface script (edit: not parameter script) find these line starting at line 62 and comment them out.
!!!!	_yCurr = _pageStartY + 37
!!!!	ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight
Then add ...

	_yCurr = _pageStartY + 37
	ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight UI_TOOLTIP "Rail Width"

	ui_infield{3} rail_hgt, 380, 130, 50, _infHeight UI_TOOLTIP "Rail Height"


Now re-save and you should find it available as a panel type in your railing.
Of course you will need this in your loaded library or your embedded library.

I can't guarantee it will work in all situations (I haven't tried leaning the railing on an angle), but it seems to work for flat and rising (stair) railings.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Lingwisyer
Guru
Wow, thanks Barry.

I had a separate post within the GDL sub-forum regarding programming a custom panel, so it should probably be merged or removed...


Ling.

AC22-23 AUS 7000Help Those Help You - Add a Signature
Self-taught, bend it till it breaksCreating a Thread
Win10 | R5 2600 | 16GB | GTX1660 
Lingwisyer
Guru
In the parameter script find these line starting at line 62 and comment them out.
_yCurr = _pageStartY + 37
ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight

Could not find this line in my Parameter Script, there was actually very little in it at all... Found it in the Interface Script which I'm assuming is what you meant given the _yCurr.

AC22-23 AUS 7000Help Those Help You - Add a Signature
Self-taught, bend it till it breaksCreating a Thread
Win10 | R5 2600 | 16GB | GTX1660 
Barry Kelly
Moderator
Yes, sorry I meant the interface script.

I think it should also be...

_yCurr = _pageStartY + 37
ui_infield{3} ac_panelThickness, _x2, _yCurr, _infWidth, _infHeight UI_TOOLTIP "Rail Width"
ui_infield{3} rail_hgt, 380, 130, 50, _infHeight UI_TOOLTIP "Rail Height"]


I think the formatting got messed up - seems it gets messed up when I tag it as code.
At least it is for me on this machine - not my regular machine.

It is just adding the rail height parameter and adding some tool tips.

I will fix the original post.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11