On Land

Environment Information
At Rill Architects we run ArchiCAD on Mac OS X. If you work at Rill, this is your stuff. If you don't, but you work in ArchiCAD, you may find something interesting. Anybody else, I don't know.
Elevator Plan

Location: 14 Conveying Systems /

This is a hydraulic residential elevator based on a product line of a real company. Since I don't know how they feel about me 'using' their 'IP', I'm not saying who it is at this time. You could probably figure it out.

Because it's a real product line, there are limited size and configuration options. Under Cab Size there are three. Under Door Configuration there are various. Some of the door configurations offer the option to have the door hinge from the 'Track' side of the elevator or the 'Opposite' side. If this parameter doesn't apply, it is hidden.

You can choose the configuration visually under the 'Configurations' interface tab.

Elevator Chooser

There is a read-only Configuration Code which is generated from the Door Configuration and the Hinge Side. This is from the product catalog.

I have provided a Standard Sizes parameter which locks the length and width to the catalog data. I wouldn't turn this off; I would rather know how big the real equipment is. The only case where I would turn it off is where I was using another manufacturer and the configurations were similar but the exact dimensions were different. Anyway, it's stretchable in principle, but the default is to be locked to the standard sizes. Turn this switch off and stretch to any impossible shape you want, YMMV.

Place the object on the bottom story of the elevator's true extent. Show the object on All Stories. Set the object's Stories Served parameter to reflect the number of actual stories the elevator will serve. The 2D symbol will not be shown above or below this range. (Though (Archicad fail) the object will still be selectable via Select All on stories where it is not visible.) The wall track which supports the cab will automatically extend through all but the top story being served by the elevator. The top story is covered by the value in the Top Rail Height parameter. This value should be roughly the top story's ceiling height. (I found in most cases that the track was too tall if it ran the whole top story.)

The Raise Cab parameter determines how many stories the cab will be raised in 3D from the home (bottom) story. This would only matter if you cut a section through the elevator shaft, and frankly it wouldn't matter much even then.

Elevator Pit
If the Pit Depth parameter is non-zero, the object will build the pit below the elevator. You can set the thickness of the walls and floor of the pit. You still need to cut a hole in the surrounding slab. The pit will be placed under that slab, using the Surrounding Slab Thickness parameter.

In plan, it looks like an elevator. The length and width dimensions are based on the finished dimensions of the shaft. The text bit should center in the car and it can be customized if "ELEV" doesn't suit you. There is a red (pen 10) line at the center of the door(s), and nodes at the edges of the doors. The door is not part of the object; you need to place a door in a wall normally. There are also hotspots at the center of the track and at the centerlines of the required structure for the track.

The associated pump equipment is a separate object, Elevator Equipment JM16. I also have a call box symbol for the electrical plan, Elevator Call Switch JM16.

Download (AC16)

CL Types

Location: 01 General / 1 Graphic Symbols

This is your basic CL symbol, since most fonts don't have it. You can change the font and size, and apply bold formatting. It's is an update to CenterLine Sym JM9, which it replaces. It should be on BIMcomponents soon, or you can download it here. I've added two features based on community feedback.

First is the option to show a line in addition to the symbol. If the line is shown, you have the option of repeating the CL symbol at the other end.

Update: If the line is shown and the symbol at the end is on, the symbol at the start can be turned off. In this way you can have the line pointing up from the symbol.

Second, I saw Jakub Chruscinski's version of my old symbol on BIMcomponents, which includes a complete font list in the text options. I'm offering the complete list as an option since it seems like something people like, but it defaults to off. I prefer to restrict the list to our standard fonts.

The default font is Arial in the version I am sharing, but the sublime font in the preview is Gill Sans, which is what we use in practice.

Wonkish: The symbol code consists of two text blocks whose alignment is set using X and Y coordinate offsets with absurd precision (0.0001"). Not all fonts will look right automatically. To get an arbitrary font to look good, you might need to open the 2D script and modify the offsets.

Placement tip: Set the object to insert by the top or bottom hotspot, and use the Rotated geometry method of the object tool.

Download (AC16)

This is everything I can think of about libraries management. There have been a lot of changes over the years.


Current naming standards. Still very boring.

These rules aren't set in stone, but if we all stay near the rules we all stay near each other. Like all standards, they work most of the time. When a situation is addressed by the standards, you can save your creativity for the projects.


Adam Savage is a huge fan of The Shining. In homage, he built a replica of the Overlook Hotel's hedge maze model which is so awesome that... well, watch the video. I am a huge fan of The Shining, and of Adam Savage. In homage, I made this Archicad model of the Savage replica.

Maze 3D

I used much less time, material, and skill, but I followed a similar process to that shown in the video: Figure out the grid, figure out the scale, obsess over screenshots, find good materials, and don't let it go even as it takes longer than it should.

While Adam makes clear that his model is a replica of the (prop) model inside the hotel, not a model of the maze itself (which likely does not 'exist'), my model is roughly 50:1 scale with the replica, restoring it to 'real life' scale, based on the discussion in the video.

So this is a virtual model based on a video of a real replica of a lost real model of a likely unreal maze from a movie. (No, the maze isn't in the book IIRC.)

If you want a "model" of the maze, i.e., a miniature replica at 1:50 scale, suitable for modeling the Overlook itself, you can save the whole thing as an object and then shrink it. Use the saved view called 'Top View', select all elements, then File -> Libraries and Objects -> Save Selection As... -> Object. When placing the object, link the XYZ dimensions with the chain button and set the length to about 8 feet / 2.5m. Put it on a table.

Here is the PLA file (8MB). Here is the desktop BIMx file (4MB). Here is the Graphisoft BIMx viewer page. Here is an STL file (1.3MB).

If this was a proper post it would be clearer and have some illustrations. These are just my notes on the process, quite involved for us as you'll see, of migrating a project to AC17/18. Even though 17 was released 18 months ago, we still have projects in earlier versions and I doubt we are alone. IMO, the combination of Building Materials and "Inside/Outside" for walls is the biggest change to AC modeling in my 16 years of using it. It's worse for us because we have a standard of interior wall reference lines, and AC is strongly biased in favor of exterior. No, changing this standard is not feasible.

When an AC16 file is opened in 17/18, building materials are created, several of each kind, based on cut fills of preexisting elements, and maybe favorites and tool settings. You need to sort the Bmats first, to make it easier to sort the composites later.

Sorting the Bmats: In Attribute Manager, open the current template. This has the good Bmats. In the template, here's concrete at ID 4. In the newly opened project, you probably have several concretes. Hopefully one of them has ID 4. Overwrite that one from the template. (In 17, all overwriting is by ID. In 18, you can choose to overwrite by name or ID.) Apply that, and you will get a confirmation that you are modifying the bmat as well as the surface.

Now that you have a good concrete, you can delete the others. You have to do this in the Bmats dialog, not the Attribute Manager. Select all the old concretes (the ones with the strings of numbers), delete and replace with the good new concrete.

Back in Attribute Manager, pick another Bmat that needs to be cleaned up, how about brick. Reopen the template (yes every time) and check that the ID of the template brick matches any one of the project's bricks. If it does, repeat the process above. (Overwrite, delete the others and replace with the good new one.) If it doesn't match, e.g., template brick's ID is taken by Empty Fill ########## in the project, postpone working on brick and choose something else. In the process of cleaning up the other Bmats, template brick's ID will eventually become available.

Keep overwriting and replacing, back and forth between the Attribute Manager and the Bmats dialog, until you have all good Bmats from the template.

Once the Bmats are done, you can do the composites. Some new composites are created, though the old ones remain. Composites are upside down because of the inside/outside thing, so the easiest way is to replace them from the template where possible. (Technically, they aren't upside down yet, but they will be once you flip the walls.) Because the old composites are kept, it's easy to line up the IDs with the template and you might be able to replace them all in one Attribute Manager session. Then in the Composites dialog, delete the items with the long numbers, replacing them with the good ones from the template. Unfortunately, for composites you can only delete them one at a time.

Changes to walls in AC17: They have Inside and Outside faces. The surfaces (formerly materials) are set by these faces, not by the ref line side. The ref line can be inside or outside face. The three surface attributes can take the surfaces of the wall/composite's Bmats, or they can be overridden. In practice they get overridden a lot, and in the overridden state they are just like the three attributes in AC16 and earlier.

This default Bmat/surface/override behavior is suspended when a project is migrated. There is a legacy setting in the Project Preferences for Construction Elements (In AC18 it is under the Legacy tab). It stops the new intersection method from working (the 3 digit number in the Bmat's settings), and also auto-overrides the surface attributes of elements such as walls. So the override button is not available for those settings.

If you turn the the legacy setting off, the override button will come back to life, with the override on. So you should see no changes to surfaces. What will change is the intersection behavior between Bmats. With the legacy setting off, the 3-digit priority takes effect, so you might need to tune those up to get the behavior you expect. One change you must make: The cutting layers need to be set to a high intersection number to prevent them interfering with ordinary elements. For a clear example, turn the legacy setting off, open a section, and take a look at what the site cutting slabs do to the basement walls. I'm using 100 for this intersection number in the templates. It only need apply to section, elevation, and 3D layer combination types.

There is no rush to turn off the legacy setting to keep working as you were. If you are purely migrating the project, i.e., archiving it in the most current version, I would leave the legacy setting on.

GS decided that most people have the ref lines outside, which I guess is true. For us it is false. When you migrate a project, the Inside/Outside setting has to be created from scratch since in does not exist in AC16. All walls are reborn in AC17 set to Outside Face. The ref lines are still inside, and the interior/exterior surfaces are architecturally correct, but it is not sustainable to continue working with this setup.

Even though the appearance is fine, logically it is intolerable. Here is an exterior wall. Its ref line is Outside Face, but that is the interior side of the wall. In the wall's settings, the interior surface (paint) is on the exterior corner icon, and the exterior surface (siding) is on the interior. There is no way to keep this straight going forward, especially if you are accustomed in ref lines inside. Further, those composites you imported assume the ref lines are inside. And, the Outside setting is picked up by the eyedropper. No, we need the walls to say Inside Face.

Fortunately, it can be done, using the Modify Wall Reference Line (MWRL) dialog. It's at Edit -> Reference Line and Plane -> MWRL. Option+W on the keyboard. There are two moves involved: Mirror Walls In Place puts the ref line on the other side while keeping the wall in the same location, though the surfaces flip. Edit Ref Line Location - Inside Face changes the ref line side setting and moves the ref line to the opposite face. In combination, these two moves switch the Inside/Outside setting while keeping the ref line in place (on the interior). Dimensions also stay put. There is one very unfortunate consequence, however, which is that the interior/exterior surfaces are now backwards. So for exterior walls and any others where the two faces differ, you have to change those surface settings manually. This could be anywhere from a minor pain to a huge pain depending on the project.

Wall favorites are also reborn set to Outside Face, so they need to be modified, or you can start over by reloading the favorites from our standard setup.

Some new complex profiles are created, though the old ones remain. Delete the new (##########) ones and replace them with the old ones. I don't know what the deal is here, they seem to be identical.

I think this process is far too cumbersome, considering that Bmats are not that big of a deal to us at the moment. Starting a project in 17/18 is no trouble at all, but this is by far the most complex migration we have seen since at least the death of PlotMaker.

It's fine to say don't migrate and finish the project in 16, except: You now need 17 to create BIMx files; GS won't give you the 16 version. And of course 18 offers the superior CineRender engine. So by staying in 16 you are hobbling yourself in presentation.

Most of the trouble in this migration is caused by the assumption that everyone has ref lines outside. It's because of this that our walls are outside-in, and we need the MWRL maneuver, and we need to manually fix all the exterior wall surfaces, and the composites are upside-down. All GS had to do was ask, when opening a 16 file, if the user's standard is ref lines in or ref lines out. I'm sure GS is correct that ref lines out is the majority, but the decision puts us in a bind.

It's also worth keeping in mind that you should generally migrate projects, and continue to migrate past project archives, because you never know when updates to AC or your OS will leave some of your data inaccessible. GS didn't get to vote on whether AC9 would stop working in OS X 10.7. They (presumably) didn't know AC10 and 11 would break in 10.9, and while they fixed them that time, they certainly didn't have to, because generally only the last two versions are "officially" supported. You need AC10 to open anything older than AC10, and the next major OS could break it for the last time. So you need to migrate and keep migrating; archives that are eight versions behind are not a sound strategy. Too bad it has to be such a pain.

Current migration advice:

All projects should be in 16. Addition projects can proceed in 16 without using the new(ish) renovation setup.

All AC17 projects should be migrated to 18. That migration, thankfully, is NBD.

Projects in schematics or design development should be migrated, full-service, as described here. Perhaps I take on these migrations myself. The more projects in 18, the sooner you don't have to work in two different ways.

Projects in CDs can stay in 16 until they are finished. If you need BIMx or CineRender, save a copy and produce those files there.

That said, I don't object to migrating any project if you have the time and inclination. Personally, I migrate everything because I don't like going back and forth.

Completed projects will be archived in AC18, but without the Bmat/wall-sides process. They open in 18 behaving superficially well, and we will let them stay that way. If we ever need to do real work on the project again (it happens), we will do the real migration then.

First, to review: The New Construction renovation filter has these settings:

Existing: Override
Demolished: Hide
New: Show

In plan, new walls are gray and existing walls are white. Demolished elements are hidden.

When you demolish an opening in an existing wall, the opening disappears and is replaced by a piece of wall whose status is new.

Demolished opening

I think this behavior is correct and intuitive. My only quibble is with the lines on either side of the new segment. I'm not convinced the lines should be there at all, and using the cut pen definitely makes them too heavy. But I can overlook it. (Archicad does not consider the difference between element-is-cut and cut-element-meets-air, and I think I have given up waiting for that to change.)

I can't overlook what happens in the elevation. The filled-in portion of wall is explicitly drawn with the shape of the demolished window. There's no way this is OK.

Demolished opening
Note: Cut new siding at old window location

• The new wall fragment is based on the existing wall, so it has the same surfaces. Where elements of the same surface meet, the line should disappear. (This is true in AC17. In 16, the material of both sides of the filler piece matches the edge material of the wall. No words.)

• With the surface cleanup rule in place, they would have to create an exception to it, in the belief that it is conventional to show filled-in windows on elevations. We have never done this.

• If I did want to show this condition, it would be dashed and in a lighter pen. These options are not offered. It has nothing to do with the override styles, even though the override setting is what is causing the rectangle to show. The GDL of the demolished window is not involved. The rectangle is drawn with the outline pen of the wall, making it a heavier line weight than the proper windows on the same elevation. Bad graphic, no user control. It couldn't be wronger.

So we need to get rid of it. I stumbled on a way. (N.B.: In the reference guide, there is precisely zero discussion of elevation and hidden line viewpoints in the Renovation section. Once you leave the floor plan you are on your own. Unless you're issuing OpenGL demolition docs, which, um.) In the As Built renovation filter, both existing and new elements are set to show. In the plan, we can't have this because the existing and new look alike. But in the elevation, it means the filled-in wall blends in and there's no rectangle.

OK opening elevation

Alright! We just need to use that filter for elevations. Maybe change the name so its purpose is clearer. I don't mind workarounds as long as they work, ya know!

What? Sections? Right, they have cut elements (existing needs to be overridden) and uncut elements (existing needs to match new).

Wrong opening section
Right like the plan, wrong like the elevation

Wrong opening section
Good elevation, but we can't tell new from existing

It looks like that filter trick doesn't solve it, and I think we've reached the end of the line. Direct demolition of openings just doesn't work. I don't know how they released this feature in this state, and I don't know how they haven't fixed it three versions later. It's really poor.

We will continue to use renovation. But we have to go back to the old method of splitting the wall on both sides of the opening, demolishing the piece, and filling in manually with a piece of new wall. This works reliably as ever and cleans up in all views.

The logic of renovation is that removing an opening involves creating some wall. When I create a wall to meet another wall and their surfaces match, there is no line. That stupid filled-in chunk should do the same thing.

In situations like this, where a plainly wrong graphic is presented as normal, I get the feeling that Graphisoft's strategy is to hope that conventional documents are swept away very soon by BIMx Docs, live cutting planes, and iPad Pros. My concern for "pens" will seem as quaint as a wax seal! I think they underestimate the status quo bias on the average job site. Today, I need drawings that function in the field. The present is sadly non-futuristic sometimes.

That new world, when it comes, is going to have graphical conventions too, and users will always be charged with turning an ever more complex model into visual information that people can use. At the moment there is a disconnect between the information I can attach to the model ("This window is to be removed"), and the tools to convey that information. ("If this is removed why is it showing?") It should be a core competency of Archicad to bridge that gap.

How to Demolish Openings

First the simple case.

Split the wall at both sides of the opening. The split can be right at the opening's ends, or you can allow some slack.

Demo Split 1

Drag a copy of the wall with the opening. It's less confusing if you drag it away.

Demo Split 2

Demolish the opening's wall by switching its renovation status to Demolished. When you demolish a wall, openings in the wall are automatically demolished.

Demo Split 3

Change the copy's status to New, and delete the opening.

Demo Split 4

Drag the new wall back in place.

Demo Split 5

The more complicated case is where a new opening will be placed overlapping the demolished opening. In this situation the pair of walls (demolished and new) must be extended to span both openings, so that the new opening is placed entirely within the new wall.

Demo Split 10

Placing New Openings in Existing Walls

You do not need to split the wall to place new openings in existing walls. Just place them. The new opening will appear as a demolished portion of wall in the demolition plan. As far as I can tell, there are no graphical problems with using this, the intended technique.

We reviewed some things that people were a little sketchy on.

Which libraries should you use

• The current version's Archicad Library, which is located in the Applications folder, at Graphisoft/Archicad [n]. When you migrate a project to a newer version, you might also pick up an Archicad [n-1] Migration Library.

• The current version's Rill Library, which is located on the Carrot at 2 Libraries/Master LIB [n].

• Do not load the Development library, located within the Master Library folders. Objects in there are in an unreliable state from your point of view. They may vanish or turn into something else without notice.

• Do not load the entire Master LIB folder. That would give the Development folder hazard above, as well as potential duplicates from the Archived Items folder.

• When you migrate a project to a new version, change to the matching version of our Rill library. I do not maintain library parts more than one version back for very long. You will soon be out of date.

• If you have missing or duplicate parts, fix them. You should never see the library loading report.

Here is more on library management and what libraries are where.

Projects need to be on the server

If you take a project file elsewhere to work on it, make sure you put the modified version on the server when you return. If you aren't here and someone else needs to access the project, we need to be confident that it is current.

Where is your drawing list

I have seen cover sheets with no drawing list, and the drawing list box is still titled, "Drawing List". This looks dumb and bad. Drawing lists are generally required by permit authorities, and it is bad user experience not to have them.

Linked detail markers

This is an old, very important, core feature of Archicad. Here is a very old post about it. Nothing has changed.

Here I will re-summarize the detail workflow:

• The default settings of the detail tool in the templates are: create new viewpoint (source marker), in reference to the viewpoint, with the layer +Z SE Hide. To draw details based on other viewpoints' content, use the marker Detail Area JM10.

• Place the new marker with the "Create new detail viewpoint" option. This becomes a source marker. Develop the detail content.

• Save a view of the detail in the CDs/A3 Details/ subset.

• Place the view as a drawing in a layout.

• Return to the detail marker and change the reference to the first placed drawing of the viewpoint. (This is generally robust because there is probably only one drawing instance of that detail.) Change the layer of the marker to +Z SE Print.

• If you need to call out the detail from other locations, drag or copy/paste the marker. The new copies will be linked markers in reference to the selected viewpoint, which is the original detail.

• You can use other detail marker objects to refer to details you have developed using the Detail Area. Those would be placed as linked markers to a selected drawing.

• You can move the detail drawing around the set as you like. If you have to move the drawing to a different sheet, drag it in the navigator rather than cut/pasting it. If you cut or delete the drawing, the markers will go bad.

• To call out any placed drawing, use a linked marker in reference to "the selected drawing".

Composite separators should be off for stud walls

For composites representing 2x4 and 2x6 stud walls, the lines showing the drywall and sheathing should be off. At 1/4" scale, they don't read individually and add extra wait to the main wall outline.

• In the composite settings, Use Skin Separator Line should be unchecked.

• In the wall settings, Use Structure's Separator Line should be on.

You Actually Do Have To Split Walls To Demolish Openings

I have much more to say about this.

Keep junk sections junky, and don't have too many

It is very useful to use non-output sections to work on the model. I call these junk sections. They use a simplified marker, a subtle pen color, no names, and IDs of the series x1, x2, ... They are set up in the templates and in the favorites.

Junk sections should never have names like output sections. This makes your Project Map and View Map very confusing. If you have junk sections with real names, fix them.

Never use junk sections for anything important. If you use a junk section to create a detail, or turn one into an output section, then change the pen, marker, and/or name to account for this.

Don't have too many. It is better to have a handful and move them around. Having many sections and elevations will eventually affect file performance. In order to move them around without worry, you need to be confident they are truly junk; see the rules above.

Don't use Up, Down, Left, Right in section or IE output names

Elevations of the exterior should be called Front, Rear, Left, and Right.

Interior elevations, by default, should be named after the room and the compass direction of the elevated wall. Both of these can be automated if you are using zones (for the name) and have Project North set correctly (for the direction).

Up, Down, Left, and Right refer to the plans, not to the building. It looks odd to see a title like "Kitchen Down"; what is that, the floor?

Interior elevation names can be customized if it makes the title clearer. If there is only one elevation of a room, you can just name it after the room. In the kitchen you can name it after the equipment on that side. At a kitchen island, you name them after the things they face, e.g., "Island Facing Sink". For most walls worth elevating, it is evident what is special about them, and beyond the room name the title doesn't add much. It just shouldn't be confusing.

I think the Up, Down, Left, Right idea comes from the IDs we use for building sections. (A2-4R Cross Section looks to the right, A2-4L looks to the left.) These are good, because the help make the name-ID combination unique. But they have nothing to do with output.

This is the 9-years-bugging-me thing from a couple days ago.

I have used doors and windows of my own making since Archicad 8. When I started, it seemed essential to getting our projects looking the way we want; the Archicad Library items just didn't do the job. I know they have improved over the years, but I don't know how much, because I don't use them. I'm sure they are better in many ways than mine, being more full-service, but that's the thing: Mine do exactly what I want, and they don't do other things. When I need a feature, rather than wishing for it, I add it. This is the still-underrated power of GDL.

I'm not saying you should develop your own doors and windows, you likely shouldn't. But having started, I continue. My libraries work well, and I don't pay much attention to changes in that part of the Archicad library. But in AC17, Graphisoft made quite a big change in the behavior of the opening tools themselves, which exposed what was previously an inconsequential limitation in my doors and windows.

One of the things I decided very early on to ignore is the "Flip" button in door and window settings. If you're using my library parts, you don't use this switch. You rotate and/or mirror the element. In our practice, which is US residential mostly wood framing, the flip switch doesn't offer any advantage.

Bad flip
So, my doors and windows aren't designed to work with the flip switch, and if you "Flip" them, you will immediately see that you should "Flip" them back. Installing doors so they are entirely outside the wall is not sound practice!

I always sort of wondered why this was, but it was never a priority because I don't use the feature and don't feel compelled to start.

Bad door placement

But in AC17, the new UI of placing openings essentially allows you to place the opening flipped, which leads to a confusing user experience if the library parts don't support flipping. So I finally took the few minutes required to get to the bottom of it. (Search for "flip" in GDL manual, Google "WIDO_FRAME_THICKNESS", read this Archicadwiki article, at least that part of it.)

Simply put, when the flip switch is activated, the door or window is mirrored across the "reveal side" face, and shifted by the "nominal frame width", which is a special value in the compatibility options of the details tab. This value can be a length or a GDL expression that uses parameters. It is zero by default, so the shift that should follow the mirroring doesn't take place. I don't use the built in "reveals" (they are also on the ignored feature list), so for my doors and windows this value is just the wall thickness (global variable WALL_THICKNESS, though I still prefer the old name C_).

Nominal frame thickness

I'm still not flipping my doors and windows, but now they don't look ridiculous when placing them in AC17.

There is one case where this info might matter to users that doesn't have their own libraries: When saving a custom, slabified opening from the 3D window. When you place that part in AC17, you will get the confusing flipping behavior unless you set the nominal frame thickness to WALL_THICKNESS, or to the dimension of an actual frame component, if appropriate. It just shouldn't be zero. It would be nice if the saving process for those parts did this automatically.

I also don't like that they use a sun icon to represent the reveal side as if the reveal side were always outside, but that is another topic.

Library Globals were introduced in Archicad 13. But I only noticed them after jumping to 16, and by that time there were enough examples in the wild to make their value clear. They have enormous potential, especially compared to their relative ease of use, if you are already a GDL/library/standards person.

In GDL there are Global variables, which make information about the project available to library parts. Some globals contain environment information like the current scale, the north direction, or the current viewpoint (window) type. Others are element-specific, so doors and windows can behave intelligently within their walls, for example. Labels can use globals to automatically display information about elements.

Globals are just there, waiting for you to mention them. The global for the current scale is GLOB_SCALE, so:


...means at 1/4" scale or larger, make the fancy version, and at smaller scales make the simple one.

In addition there are Requests, which are different in syntax but have a very similar function. A request I use often is "Height_of_style", which tells you how tall a block of text is. Unlike globals, before you can use the information you have to move it into your own variable.

rr=REQUEST("Height_of_style", textStyle, styleHeight)

The parts of that line are, in order:

rr is a variable to hold the return value of the request, which is not the data we are requesting. Instead it reports if the request was "successful". You can leave it out and the request will still work, but you will get an error. "rr" is my personal preference; it can be "n" or "success" or whatever.

REQUEST("Height_of_style" is the name of the request.

"textStyle" is my previously defined style in the script. You need at least one style defined to do anything with text.

"styleHeight" is my variable to hold the data about the height, which is what we are looking for. Now I can do stuff with that value, like draw a line as long as a text element is tall:

LINE2 0, 0, 0, styleHeight

Other requests can look up the current dimension preferences, the state of model view options, etc., etc. There's a complete list in the GDL manual.

I'm hazy on what makes a bit of information a global or a request. (Why is the layer a global, but the zone category a request?) Anyway, both kinds of things are defined internally by the program, and that was all there was, until Library Globals.

Library Globals allow library developers to create their own model view options.

Let's say I want the steel column objects to display differently in the framing plans and the architectural plans. In vanilla Archicad, that's not a model view option. With doors and windows, I can control whether the openings, symbols, and markers are shown, and then save those settings with the views for different plan types. Not so with the steel columns. I could have a setting in the object to change the appearance, but it's the user's job to switch it back and forth. (Tip: Any workflow with the phrase "user's job to switch it back and forth" is not an optimized workflow.)

With Library Globals, I can create a setting in model view options to change the appearance. I can have the objects respond to the setting automatically. And finally, I can save the setting with the view.

I can create a setting. I can make the objects respond to it. I can save the setting with the view. Are you getting it? I am excited about the potential of this feature.

There are two parts to it:

1. The Library Globals Settings object. This is a hidden object with the "Library Globals Settings" subtype. Parameters in this object become settings the user can modify in model view options. The interface script of this object provides the interface for those settings within the MVO dialog box.

2. The LIBRARYGLOBAL keyword. This works very much like REQUEST, above.

Here is my first application for this feature. I would like to show some structural columns on the story below, dashed, so that in the structure plans you can see that the point loads are being picked up. While I don't mind seeing structural columns in the architectural plans, the dashed-below thing really doesn't work. You get dashed columns in the middle of rooms, which is confusing. So if I want structural columns in the architectural plans I can't show them dashed below in structure plans. And if I want dashed-below columns in structure, I have to turn the columns off in architectural.

What I need is a separate control for display of the dashed-below columns. Library Globals finally provide this.

Again, there are two parts. You need an object with the "Library Globals Settings" subtype. Ours is called "RillLibraryGlobals". You only need one object, even if you are planning settings which affect many different objects. Within the object, I have a parameter with the name "LG_ShowColBelow" (The LG_ prefix reminds me that it's a library global parameter, which clarifies the script on the other end.)

In this simple case, the only script you need in the library globals object is the interface script. This script creates the interface within the Model View Options dialog, where the user will manipulate the setting. Interface script technique is beyond the scope of this post, but the briefest thing that will non-beautifully work looks something like this:

UI_DIALOG 'Options For Rill Libraries', 600, 300
UI_STYLE 0, 0 ! Small, Normal
     UI_OUTFIELD 'Show posts on story below', 12, 22+5, 148, 22
          UI_INFIELD 'LG_ShowColBelow', 160, 2, 48, 22

Which ends up looking like this in the MVO dialog:

Show columns

That checkbox flips the setting behind the scenes.

The second part is in the object itself, in this case my steel column. The 2D script of the object needs to know about that setting in the library globals object. It's very similar to REQUEST:

!! Library global for column below, show in S, hide in A1
LG_ShowColBelow_val=0 !!initializing
rr=LIBRARYGLOBAL ('RillLibraryGlobals', 'LG_ShowColBelow', LG_ShowColBelow_val)

'RillLibraryGlobals' is the name of the library globals object. 'LG_ShowColBelow' is the name of the library globals parameter being asked about. LG_ShowColBelow_val is a local variable, just initialized, to hold the value found in the library global variable.

The last line says, if we're on the story below the object's home story, and that library global checkbox is off, don't draw anything (END). GLOB_CH_STORY_DIST is the ordinary global variable which says which story we are on relative to the object's home story. One story down is -1.

Then later in the script when it's time to actually draw the column:

IF GLOB_CH_STORY_DIST=-1 & LG_ShowColBelow_val=1 THEN !! story below
     [Draw dashed symbol]
ELSE !! home story
     [Draw solid symbol]

Of course, it's still up to the user to set the object itself to display on the story below. With that set, the MVO checkbox will control the actual display.

Finally, in the Model View Option combinations, that checkbox is on in the structure plans, and off everywhere else.