Layouts, Updates, and the Render Pipeline

The normal update process in Intent is to evaluate RenderSelf on the root Part. This is usually a recursive evaluation that evaluates RenderSelf on the root's children, and so on. When a Part that actually has an entity representation in AutoCAD, such as a Line, is asked to render itself, it calls its own modelSelf rule, which is the actual evaluation that puts the Line into the AutoCAD drawing database.

Layouts cannot and do not work this way. The normal recursive renderSelf chain stops at Layout-based Parts, such as DrawingSheet. DrawingSheet is simply a Layout with rules to allow setting of paper sizes, and is the standard "Layout root" Design. For performance reasons, Layouts are not rendered, nor are any of their contents demanded, until AutoCAD is switched to the particular layout/paperspace tab. Once this happens, special, event-driven programming in the Intent AutoCAD library demands the RenderLayout rule. RenderLayout is essentially identical to renderSelf, except for the name. It is recursive, and all of the children of the layout have their renderSelf demanded. This now works like it does in modelspace, so the children of a Layout do not have to do anything special to appear in the layout; it all happens automatically and in the standard fashion. The result is that those entities appear in the correct paperspace of the layout being rendered, and do not appear in the modelspace.