public void SavModJournal() { if (models == null || models.Count < 1) { Msg.F("ModJournal internal error"); } models.Sort(); Docs doc = Docs.getDoc(Decl.MODELS); doc.Reset("Now"); doc.wrDocSetForm("FORM_Models_in_TSmatch.xlsx"); foreach (var mod in models) { string dt = mod.date.ToString("d.MM.yy H:mm"); string sPhase = "'" + mod.phase; doc.wrDocForm(dt, mod.name, mod.dir, ifcPath, mod.made, sPhase, mod.MD5, mod.strListRules); } doc.isChanged = true; doc.saveDoc(); }
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) { var comp = gr.match.component; string compDescr = comp.fps[SType.Description].pars[0].par.ToString(); doc.wrDocForm(n++, gr.mat, gr.prf , gr.totalLength, gr.totalWeight, gr.totalVolume , compDescr, 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(); }
public void wrModel(WrMod mode, Mod mod) { string doc_name = mode.ToString(); Log.set("Model.wrModel(" + doc_name + ")"); DateTime t0 = DateTime.Now; Docs doc = Docs.getDoc(doc_name, create_if_notexist: true, reset: true); doc.Reset(); switch (mode) { case WrMod.ModelINFO: // общая информация о модели: имя, директория, MD5 и др doc.wrDocSetForm("HDR_ModelINFO", 1, AutoFit: true); string adr = mod.adrCity; if (mod.adrStreet != string.Empty) adr += ", " + mod.adrStreet; doc.wrDocForm(mod.name, adr, mod.dir, mod.phase , sDat(mod.date), mod.MD5 , sInt(mod.elements.Count), sDat(mod.pricingDate), mod.pricingMD5); break; case WrMod.Materials: // сводка по материалам, их типам (бетон, сталь и др) doc.wrDocSetForm("FORM_Materials", 3, AutoFit: true); foreach (var mGr in mod.elmMgroups) { doc.wrDocForm(mGr.mat, mGr.totalVolume, mGr.totalWeight, mGr.totalPrice); } break; case WrMod.Suppliers: // сводка по поставщикам проекта (контакты, URL прайс-листа, закупки) doc.wrDocSetForm("FORM_ModSupplierLine", 4, AutoFit: true); foreach (var s in mod.Suppliers) { doc.wrDocForm(s.Name, s.Url, s.City, s.Index, s.Street, s.Telephone); } break; case WrMod.Rules: // перечень Правил, используемых для обработки модели if (mod.Rules.Count == 0) Msg.F("Can't write TSmatchINFO.xlsx/Rules"); doc.wrDocSetForm("FORM_RuleLine"); foreach (var rule in mod.Rules) { doc.wrDocForm(sDat(rule.date), rule.sSupl, rule.sCS, rule.text); } break; case WrMod.Report: // отчет по сопоставлению групп <материал, профиль> c прайс-листами поставщиков doc.wrDocSetForm("FORM_Report", AutoFit: true); int n = 1; foreach (var gr in mod.elmGroups) { string compDescription = "", suplName = "", csName = ""; if(!string.IsNullOrEmpty(gr.SupplierName)) { suplName = gr.SupplierName; csName = gr.CompSetName; compDescription = gr.compDescription; } doc.wrDocForm(n++, gr.Mat, gr.Prf , sDbl00(gr.totalLength), sDbl(gr.totalWeight), sDbl(gr.totalVolume) , compDescription, suplName, csName , sDbl(gr.totalWeight), sDbl(gr.totalPrice)); } doc.isChanged = true; doc.saveDoc(); //--- string - Summary double sumWgh = 0, sumPrice = 0; int iGr = doc.i0; foreach (var gr in mod.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(); }