We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

GDL
About building parametric objects with GDL.
SOLVED!

WIP All-purpose surface label. Attn: Graphisoft

Bruce
Advisor

This post is for the attention of Graphisoft developers, in the hope that this label can be added to the out-of-the-box parts in Archicad.

 

The problem:

There are a number of problems with the current surface label, that make it more-or-less unusable for any meaningful documentation purposes. These are:

  1. Its use is very limited: It can only be used on a select number of items within Archicad. It does not work on Objects, Stairs, Complex Profiles, Curtain Walls, Stairs, etc.
  2. No way to use label as Custom with non-supported elements: If you do happen to need to attach a surface label to an unavailable item, too bad. You will need to figure out some other way - which usually results in dumb lines and text.
  3. There is no way to delimit text: The entire Surface name gets returned to the surface label. Typically, surfaces in a project get assigned a code (e.g. PF01) which is what is labelled on the drawing. However, just having "PF01" as the Surface name is too cryptic for users. There needs to be a way to name the Surface in a particular way so the code can be extracted from a more descriptive and meaningful name.
  4. No drop-down selection for Custom: When you choose Custom, sure, you get the option to type in the value. However, there is no drop-down list of the project surfaces to choose from, to ensure accuracy.
  5. Wall reference line direction: The surface label will change which wall face it reads depending on the wall direction. Wall direction going one way, it will read correctly. Wall direction reversed, it will read incorrectly. Not good.
  6. Shaped border with leader turned on: the border will only be rectangular when the leader is turned on, regardless of what it is when the leader is off.
  7. Inclusion in Worksheet when outside Worksheet border (a la detail crosshairs): Granted, this is a bit more obscure, but still has a real-life use when combining labels in a 'stack' but only using a leader on the first label (see attached image).


The Solution:

Ultimately, the best solution would be for meta data to be added to Surface attributes, a la Building Materials. But in the meantime, I have developed a label which does most of what is required (thanks to Michael Wilson for the idea). Please note that this label has been developed for my own use, and not for wider distribution. However, it demonstrates useful principles that can be adopted for a standard Archicad label.

 

The attached label:

  1. Can, in theory, be used on every element type, regardless of whether it is an object, or complex profile etc (I say 'in theory' as I haven't yet coded for all element types - just what I needed for the project at the time). It works on Walls, Columns, Beams, Slabs, Roofs, Shells, and Morphs. It also works on objects, doors, and windows (with some script editing) - more on this below.
  2. When used on an unsupported element, the user just selects from the project Surface list, ensuring the same label can be used in these situations.
  3. The label can delimit text: it will extract the text of the Surface Name up until the selected delimiter.
  4. Item #2 above counts as 'Custom' - however, allowing the option to choose from a list or a completely custom field entry would be easy enough.
  5. Will always read the selected side of the wall, regardless of reference line direction.
  6. Will maintain its border shape whether the leader is on or off
  7. Allows for a separate line type and pen to be used for the frame, so the leader line can be 'hidden' with a white pen and wide-spaced dot line type.


Use with objects:

Any object can make use of this label with the addition of 4 parameters (hidden), and a segment of script.
The parameters are ('wa' is just the initials of the company I work for):

  1. wa_sur_desc as Text
  2. wa_sur_index as Integer
  3. wa_sur_type as Integer
  4. wa_sur_values as Integer
    Activate them as single dimension arrays.


The script segment, added at the bottom of the parameter script, is below. The object from which this is taken is attached, so parameters and scripting can be inspected for further clarification:

 

!--> Fill surface container for Surfaces Label
	! Objects start at 31
	iS=1 : obID = 31
	TYPE_SURF = 0 : TYPE_BMAT = 1
	DIM wa_sur_desc[], wa_sur_index[], wa_sur_type[], wa_sur_values[]
	
	! For Building Material and Surface Override parameters:
	wa_sur_desc[iS] = "Lining surface"	: wa_sur_index[iS] = obID	: wa_sur_values[iS] = reveal_surface	: iS=iS+1 : obID=obID+1
	IF NOT(reveal_override) THEN : wa_sur_type[iS-1]=TYPE_BMAT	: wa_sur_values[iS-1]=reveal_bmat	: ENDIF
	
	wa_sur_desc[iS] = "Pelmet surface"	: wa_sur_index[iS] = obID	: wa_sur_values[iS] = pelmet_surface	: iS=iS+1 : obID=obID+1
	IF NOT(pelmet_override) THEN : wa_sur_type[iS-1]=TYPE_BMAT	: wa_sur_values[iS-1]=pelmet_bmat	: ENDIF

	! For Surface parameters only:
	wa_sur_desc[iS] = "Inner blind surface"				: wa_sur_index[iS] = obID		: wa_sur_type[iS]=TYPE_SURF	:wa_sur_values[iS] = blind_inner_mat 			: iS=iS+1 : obID=obID+1


	PARAMETERS wa_sur_desc = wa_sur_desc,
		wa_sur_index = wa_sur_index,
		wa_sur_type = wa_sur_type,
		wa_sur_values = wa_sur_values

 

 

Use with doors & windows:

  1. Save a GS door down as a new object, with alternative name. In the attached, I have named this door as "BW_Door 24.gsm"
    In this new object:
  2. Delete all scripts
  3. Add the four new parameters as per objects (wa_sur_desc etc)
  4. Add this code to the Master script: CALL "Door 24" PARAMETERS ALL
  5. Add this code to the Parameter script: CALL "BW DW Surface Collector" PARAMETERS ALL

Now when you place this new door, you can attach the label to it, and label any of the surfaces in use in the door. Note that I included as many surfaces as I could find, but the GS door objects are quite complex.


Final note:
The above is a bit complex, but I'm confident the clever people who script the GDL parts can not only understand it, but can improve upon it.

 

 

 


Stacked Labels.jpg
Bruce Walker
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb
1 ACCEPTED SOLUTION

Accepted Solutions
Solution

Please enter wishes in the wishes forum, it will be easier for non-gdl users to find them there.

Péter Baksa
Software Engineer, Library as a Platform
Graphisoft SE, Budapest

View solution in original post

5 REPLIES 5
Dendarii
Booster

Great work!  This is one the most urgently required features in Archicad. 

 

Add 'ID' option to Surfaces, and allow tagging of surfaces by hovering the cursor over the surface with a single Surface Label.  Revit does this perfectly, and it's hard to go back to Archicad which feels broken without this feature.

 

Architect

Archicad user since 2001
Sunny75
Booster

Enable labeling complex profile surfaces, pleeaase!!

Solution

Please enter wishes in the wishes forum, it will be easier for non-gdl users to find them there.

Péter Baksa
Software Engineer, Library as a Platform
Graphisoft SE, Budapest
JeffH
Advocate

I love where this is starting to head, and agree that this should be something that GS starts to refine and build upon

 

 

I could see the need to add a second deliminator option. The first splits everything Left away, and the second would split everything right away.

AC24 / AC26 / AC27
Win10

Thanks Peter.  I've posted a link there: 

https://community.Graphisoft.com/t5/Wishes-forum/All-purpose-surface-label/td-p/365620 

Bruce Walker
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb