/// <summary> /// Plot with override plot configuration /// </summary> /// <param name="pConfig"></param> public void Plot(AcadApplication acApp, EPlotConfig pConfig) { // Sort sheetset object[] sets = new object[m_sets.Count]; foreach (object obj in m_sets) { if (obj is Sheet) { Sheet s = obj as Sheet; sets[s.Handle.Order] = obj; } else { SheetSet s = obj as SheetSet; sets[s.Handle.Order] = obj; } } // Plot without override config foreach (object obj in sets) { if (obj is Sheet) { Sheet s = obj as Sheet; s.Plot(acApp, pConfig); } else { SheetSet s = obj as SheetSet; s.Plot(acApp, pConfig); } } System.GC.Collect(); }
/// <summary> /// Check whether sheetset contains sheet/sheetset /// </summary> /// <param name="obj">A Sheet or Sheetset</param> /// <returns></returns> public bool Contains(object ss) { if (this == (ss as SheetSet)) { return(true); } foreach (object obj in m_sets) { if (ss is Sheet && obj is Sheet) { if ((Sheet)ss == (Sheet)obj) { return(true); } } if (ss is SheetSet && obj is SheetSet) { SheetSet sSet = obj as SheetSet; if (sSet.Contains(ss)) { return(true); } } } return(false); }
/// <summary> /// Add another sheet set to this (= sheet set) /// </summary> /// <param name="ss">Is sheet or sheetSet</param> public void Add(object ss) { if (ss is Sheet || ss is SheetSet) { if (ss is SheetSet && this.Contains(ss)) { SheetSet sSet = (SheetSet)(ss as SheetSet).Clone(); sSet.Handle = new EHandle( this.Handle.Grade + 1, this.Handle.Order, m_sets.Count ); m_sets.Add(sSet); } else { if (ss is Sheet) { Sheet s = ss as Sheet; s.Handle = new EHandle( this.Handle.Grade + 1, this.Handle.Order, m_sets.Count ); m_sets.Add(s); } else { SheetSet s = ss as SheetSet; s.Handle = new EHandle( this.Handle.Grade + 1, this.Handle.Order, m_sets.Count ); m_sets.Add(s); } } } }
/// <summary> /// Create a copy of this /// Fix error: if a sheetset is added to itself, plot will be performed forever /// </summary> /// <returns></returns> public object Clone() { SheetSet clone = (SheetSet)this.MemberwiseClone(); clone.m_sets = new List <object>(); foreach (object obj in this.Items) { clone.m_sets.Add(obj); } clone.Title = this.Title; clone.Handle = this.Handle; return(clone); }