public ObjectId DrawToLayout(string layoutName)
        {
            var id     = DbHelper.GetLayoutId(layoutName);
            var layout = id.QOpenForRead <Layout>();

            LayoutManager.Current.CurrentLayout = layoutName;
            var vps = layout.GetViewports();

            if (vps.Count > 1)
            {
                var vpId = vps[1];
                if (Template.Components.Any(x => x.ID == "vp1"))
                {
                    var    vp1        = Template.Components.First(x => x.ID == "vp1");
                    var    lookAt     = Point3d.Origin;
                    double viewHeight = 1000;
                    if (Substitutions.ContainsKey("vp1"))
                    {
                        var vp1InstParams = Substitutions["vp1"];
                        lookAt     = new Point3d((double)vp1InstParams["TargetX"], (double)vp1InstParams["TargetY"], 0);
                        viewHeight = (double)vp1InstParams["ViewHeight"];
                    }
                    Layouts.SetViewport(vpId, vp1.Width, vp1.Height, vp1.Position, lookAt, viewHeight);
                    Template.Components.Remove(vp1);
                }
            }

            foreach (var component in Template.Components)
            {
                if (Substitutions.ContainsKey(component.ID))
                {
                    GenerateComponent(component, Substitutions[component.ID]);
                }
                else
                {
                    GenerateComponent(component, null);
                }
            }

            return(id);
        }