Developer forum
cancel
Showing results for 
Search instead for 
Did you mean: 

gdl unit of text

lmcardoso
Booster

Hi,

 

I am a newbie in coding. sometimes i try to cook something but i end up spoiling the broth. i spent the last 30min reading the gdl editor on strings and integers but that thing is way to complex for me.

 

I am trying to change the units of the value of AxB but i cant seem to find it.

this is my object and now the area, which is no more than AxB is in millimiter but i want it in meters

lmcardoso_0-1637520533026.png

this is my code

 

set line_type ln01
pen pen01
fill fill01
poly2_b{5} 5, 3, 0, pen01, pen02, pen03,
0, 0, 1, 0, 0, 1, 0,
0, 0, 1,
A, 0, 1,
A, B, 1,
0, B, 1,
0, 0, 1


define style{2} "AC_STYLE_1" "Arial", txsz , 0

paragraph "AC_PRG_7" 2, 0, 0, 0, 1
pen 1
set style "AC_STYLE_1"
""+"< "+STR(1000*A,1,0)+" >"
endparagraph
textblock "AC_TEXTBLOCK_7" 0, 5, 0, 1, 1, 1,
"AC_PRG_7"
richtext2 A/2, .2, "AC_TEXTBLOCK_7"




paragraph "AC_PRG_8" 2, 0, 0, 0, 1

""+"< "+STR(1000*B,1,0)+" >"
endparagraph
textblock "AC_TEXTBLOCK_8" 0, 5, 90, 1, 1, 1,
"AC_PRG_8"
richtext2 0.2, B/2, "AC_TEXTBLOCK_8"

IF txt01=1 THEN
DEFINE STYLE TEXT_1 Arial, txsz , 5 , 0
SET STYLE TEXT_1
TEXT2 A/2, B/2, ""+STR(1*A*B,1,0)+"m2"
ENDIF

 

Can anyone help me please?

 

p,s, yeah i guess my code is super complicated ahaha

 

ArchiCAD 23/24/25 with Win 10
1 ACCEPTED SOLUTION

Solution
DGSketcher
Virtuoso

@lmcardoso metric GDL coding is in meters by default, so you text should be...

TEXT2 A/2, B/2, "" + STR((A * B), 8, 3) + "m2"

Apple iMac macOS Big Sur / AC24UKI (most recent builds)

View solution in original post

11 REPLIES 11

SenecaDesignLLC
Advisor

you need to use STR{2} so you can set what you are after.

 

also  you dont need the "set" for line_type or style to work.

FREE wall Accessory framing and coverings
bit.ly/BIMRithmWallAccessories

FREE Truss object.
https://bit.ly/BIMRithmTrussV1
AC 24, Twinmotion current, Windows 11, Msi 10UG with rtx 3070, wacom intuos pro m, Wacom Cintiq Pro 16, razer Tartarus pro.

lmcardoso
Booster

thanks seneca, but for me that is still unknow to me.

 

i tried TEXT2 A/2, B/2, ""+STR{2}(1*A*Bsqm,1,0)+"m2" 

 

but it doesnt work... 

ArchiCAD 23/24/25 with Win 10

If you share the object I can help ya get it to work.

FREE wall Accessory framing and coverings
bit.ly/BIMRithmWallAccessories

FREE Truss object.
https://bit.ly/BIMRithmTrussV1
AC 24, Twinmotion current, Windows 11, Msi 10UG with rtx 3070, wacom intuos pro m, Wacom Cintiq Pro 16, razer Tartarus pro.

lmcardoso
Booster

thanks a lot!! i really appreciate it

ArchiCAD 23/24/25 with Win 10

SenecaDesignLLC
Advisor

so maybe i am miss understanding, but if you change the code to

 

TEXT2 A/2, B/2, ""+STR(1000*(A*B),1,0)+"m2"

does this not get what you want?

FREE wall Accessory framing and coverings
bit.ly/BIMRithmWallAccessories

FREE Truss object.
https://bit.ly/BIMRithmTrussV1
AC 24, Twinmotion current, Windows 11, Msi 10UG with rtx 3070, wacom intuos pro m, Wacom Cintiq Pro 16, razer Tartarus pro.

lmcardoso
Booster

i tried but that no it doesnt solve the problem. I guess its the units that are not right

 

what it should appear is 10,8m2 instead of 10800.

 

on your left a fil showing the area and on the right my object

 

lmcardoso_0-1637526854813.png

 

ArchiCAD 23/24/25 with Win 10

okay try this

 

TEXT2 A/2, B/2, ""+STR("%.3m",(A*B))+"m2"

FREE wall Accessory framing and coverings
bit.ly/BIMRithmWallAccessories

FREE Truss object.
https://bit.ly/BIMRithmTrussV1
AC 24, Twinmotion current, Windows 11, Msi 10UG with rtx 3070, wacom intuos pro m, Wacom Cintiq Pro 16, razer Tartarus pro.

Another way, with reading the working units of the project

format_string = "%.0" !Defult
n = REQUEST ("Area_dimension", "", format_string)

!! Or
!!n = REQUEST ("Calc_area_unit", "", format_string)

_stUnit = "m"

if strstr (format_string, "mm") & not(_bUnitIsFound) then
	_stUnit 	= " mm"
	_bUnitIsFound  	= 1
endif
if strstr (format_string, "cm") & not(_bUnitIsFound) then
	_stUnit 	= " cm"
	_bUnitIsFound  	= 1
endif
if strstr (format_string, "m") & not(_bUnitIsFound)  then
	_stUnit 	= " m"
	_bUnitIsFound  	= 1
endif
if strstr (format_string, "f") & not(_bUnitIsFound) then
	_stUnit 	= " ft"
	_bUnitIsFound  	= 1
endif
if strstr (format_string, "i") & not(_bUnitIsFound) then
	_stUnit 	= " inch"
	_bUnitIsFound  	= 1
endif

_stUnit = _stUnit + "²"

area_ = A * B

area_txt = str(format_string, area_) + _stUnit

 

https://github.com/kuvbur

This is a great answer if you're trying to accommodate multiple different disciplines!

FREE wall Accessory framing and coverings
bit.ly/BIMRithmWallAccessories

FREE Truss object.
https://bit.ly/BIMRithmTrussV1
AC 24, Twinmotion current, Windows 11, Msi 10UG with rtx 3070, wacom intuos pro m, Wacom Cintiq Pro 16, razer Tartarus pro.

Solution
DGSketcher
Virtuoso

@lmcardoso metric GDL coding is in meters by default, so you text should be...

TEXT2 A/2, B/2, "" + STR((A * B), 8, 3) + "m2"

Apple iMac macOS Big Sur / AC24UKI (most recent builds)

View solution in original post

lmcardoso
Booster

thanks everyone for the input and solutions. it works now !!! wayayayayay

ArchiCAD 23/24/25 with Win 10

Still looking?

Browse more topics

Back to forum

See latest solutions

Accepted solutions

Start a new discussion!