/// <summary> /// saveModel(Model md) - записываем измененную модель в файловую систему /// </summary> /// <param name="name">имя модели для записи.</param> /// <history>6.8.16 -- nonstatic method</history> public Model saveModel(string name) { Log.set("saveModel(\"" + name + "\")"); Docs doc = Docs.getDoc(Decl.MODELS); doc.Reset("Now"); Models.Sort(); foreach (var m in Models) { string t = Lib.timeStr(m.date); doc.wrDoc(1, t, m.name, m.dir, m.Made, m.Phase, m.MD5, m.strListRules); } doc.isChanged = true; Docs.saveDoc(doc); Log.exit(); return(getModel(name)); }
public void wrModel(string doc_name) { Log.set("Model.wrModel(" + doc_name + ")"); DateTime t0 = DateTime.Now; Docs doc = Docs.getDoc(doc_name); switch (doc_name) { case WR_MODEL_INFO: // общая информация о модели: имя, директория, MD5 и др doc.wrDocSetForm("HDR_ModelINFO", 1, AutoFit: true); doc.wrDocForm(name, dir, "фаза?", date, MD5, Elm.Elements.Count); break; case WR_MODEL_RAW: // элементы с атрибутами, как они прочитаны из модели doc.wrDocSetForm("FORM_RawLine", 2, AutoFit: true); foreach (var elm in elements) { double w = elm.weight; // elm.weight - weight [kg]; double v = elm.volume; // / 1000 / 1000 / 1000; // elm.volume [mm3] -> [m3] doc.wrDocForm(elm.guid, elm.mat, elm.mat_type, elm.prf, elm.length, w, v); } break; case WR_MODEL_MATERIALS: // сводка по материалам, их типам (бетон, сталь и др) doc.wrDocSetForm("FORM_Materials", 3, AutoFit: true); foreach (var mGr in elmMgroups) { doc.wrDocForm(mGr.mat, mGr.totalVolume, mGr.totalWeight, mGr.totalPrice); } break; case WR_MODEL_SUPPLIERS: // сводка по поставщикам проекта (контакты, URL прайс-листа, закупки) doc.wrDocSetForm("FORM_ModSupplierLine", 4, AutoFit: true); foreach (var s in Suppliers) { doc.wrDocForm(s.name, s.Url, s.City, s.index, s.street, s.telephone); } break; case WR_MODEL_RULES: // перечень Правил, используемых для обработки модели doc.wrDocSetForm("HDR_ModRules", 1, AutoFit: true); doc.wrDocForm(strListRules); doc.wrDocSetForm("FORM_ModRuleLine"); foreach (var rule in Rules) { doc.wrDocForm(rule.Supplier.name, rule.CompSet.name, rule.text); } break; case WR_MODEL_REPORT: // отчет по сопоставлению групп <материал, профиль> c прайс-листами поставщиков doc.wrDocSetForm("FORM_Report", AutoFit: true); int n = 1; foreach (var gr in elmGroups) { string foundDescr = ""; if (gr.match != null && gr.match.ok == Mtch.OK.Match) { foundDescr = gr.match.component.Str(SType.Description); } doc.wrDocForm(n++, gr.mat, gr.prf , gr.totalLength, gr.totalWeight, gr.totalVolume , foundDescr, 0, 0, 0, gr.totalPrice); } //--- string - Summary double sumWgh = 0, sumPrice = 0; int iGr = doc.i0; foreach (var gr in elmGroups) { double?w = doc.Body.Double(iGr, Decl.REPORT_SUPL_WGT); double?p = doc.Body.Double(iGr++, Decl.REPORT_SUPL_PRICE); sumWgh += (w == null) ? 0 : (double)w; sumPrice += (p == null) ? 0 : (double)p; } doc.wrDocSetForm("FORM_Report_Sum", AutoFit: true); doc.wrDocForm(sumWgh, sumPrice); break; } doc.isChanged = true; doc.saveDoc(); log.Info("Время записи в файл \"" + doc_name + "\"\t t= " + (DateTime.Now - t0).ToString() + " сек"); Log.exit(); }