diff --git a/RookieStation/Drawing/ExecuteCmds/CmdCreateMainMaterialsTable.cs b/RookieStation/Drawing/ExecuteCmds/CmdCreateMainMaterialsTable.cs new file mode 100644 index 0000000..481e829 --- /dev/null +++ b/RookieStation/Drawing/ExecuteCmds/CmdCreateMainMaterialsTable.cs @@ -0,0 +1,212 @@ +using Autodesk.Revit.DB; +using Autodesk.Revit.UI; +using Autodesk.Revit.UI.Selection; +using RookieStation.Drawing.Models; +using RookieStation.Extension; +using RookieStation.ProjectConfig; +using RookieStation.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RookieStation.Drawing.ExecuteCmds +{ + [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] + [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] + internal class CmdCreateMainMaterialsTable : IExternalCommand + { + public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) + { + UIDocument uidoc = commandData.Application.ActiveUIDocument; + Document doc = uidoc.Document; + View activeview = doc.ActiveView; + if (uidoc.ActiveView.ViewType == ViewType.DrawingSheet) + { + CurveArray curveArray = new CurveArray(); + var tableLocation = uidoc.Selection.PickPoint(ObjectSnapTypes.Endpoints, "请选择布图区域左上角端点"); + + var sql = SQLiteUtil.GetInstance(); + sql.CreateDb(UserConstant.DbFolder + "Inventory.db"); + List tableRow = sql.QueryTable("MainMaterials"); + sql.CloseConncetion(); + //FilteredElementCollector collectorAll = new FilteredElementCollector(doc); + //collectorAll.WherePasses(new LogicalOrFilter(new ElementIsElementTypeFilter(false), new ElementIsElementTypeFilter(true))); + var collectorAll = new FilteredElementCollector(doc); + ElementClassFilter instanceFilter = new ElementClassFilter(typeof(FamilyInstance)); + ElementClassFilter hostobjectFilter = new ElementClassFilter(typeof(HostObject)); + LogicalOrFilter orFilter = new LogicalOrFilter(instanceFilter, hostobjectFilter); + collectorAll.WherePasses(orFilter); + List materialItems = new List(); + double similarity = 0.4;//相似度 + for (int i = 0; i < tableRow.Count; i++) + { + var description = tableRow[i][1]; + var position = tableRow[i][6]; + bool isExist = false; + foreach (var ele in collectorAll) + { + string name = string.Empty; + FamilyInstance fi = ele as FamilyInstance; + if (fi != null) + { + name = fi.Symbol.FamilyName; + } + else + { + name = ele.Name; + if (name == "单喷灰色乳胶漆") + { + } + } + if (CommonUtils.levenshtein(description, name) > similarity || CommonUtils.levenshtein(position, name) > similarity) + { + isExist = true; + break; + } + } + if (isExist) + { + MaterialItem item = new MaterialItem() + { + Description = tableRow[i][1], + FireRating = tableRow[i][2], + Legend = $"{UserConstant.MainMaterialFolder}{tableRow[i][1]}.png", + Specifications = tableRow[i][4], + Pigment = tableRow[i][5], + Position = tableRow[i][6], + Remark = tableRow[i][7], + }; + materialItems.Add(item); + } + } + var width = 346 / 304.8; + var height = 283 / 304.8; + var gridWidth = width / 7; + var gridHeight = height / (materialItems.Count + 1);//表头要加1 + doc.InvokeGroup(tg => + { + doc.Invoke(ts => + { + for (int j = 0; j < 8; j++) + { + var colStart = new XYZ(tableLocation.X + j * gridWidth, tableLocation.Y, 0); + var colEnd = new XYZ(tableLocation.X + j * gridWidth, tableLocation.Y - height, 0); + Line colLine = Line.CreateBound(colStart, colEnd); + curveArray.Append(colLine); + } + TextNoteType textNoteType = new FilteredElementCollector(doc).OfClass(typeof(TextNoteType)).Where(x => x.Name.Contains("宋")).FirstOrDefault() as TextNoteType; + var opts = new TextNoteOptions(textNoteType.Id) + { + HorizontalAlignment = HorizontalTextAlignment.Center, + VerticalAlignment = VerticalTextAlignment.Middle + }; + for (int i = 0; i <= materialItems.Count; i++) + { + var rowStart = new XYZ(tableLocation.X, tableLocation.Y - i * gridHeight, 0); + var rowEnd = new XYZ(tableLocation.X + width, tableLocation.Y - i * gridHeight, 0); + Line rowLine = Line.CreateBound(rowStart, rowEnd); + curveArray.Append(rowLine); + + if (i == 0)//创建表头 + { + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 0.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "材料名称\nDESCRIPTION", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 1.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "防火等级\nFIRE RATING", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 2.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "图例\nLEGEND", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 3.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "规格\nSPECIFICATIONS", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 4.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "颜色\nPIGMENT", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 5.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "位置\nPOSITION", + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 6.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + "备注\nREMARK", + opts); + continue; + } + + var item = materialItems[i - 1];//从0开始,i=0已运行,并跳过此段 + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 0.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.Description, + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 1.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.FireRating, + opts); + + var it = ImageType.Create(doc, new ImageTypeOptions(item.Legend)); + var ii = ImageInstance.Create(doc, + activeview, + it.Id, + new ImagePlacementOptions(new XYZ(tableLocation.X + 2.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + BoxPlacement.Center)); + doc.Regenerate(); + ii.get_Parameter(BuiltInParameter.RASTER_SHEETHEIGHT).SetValueString("21"); + ii.get_Parameter(BuiltInParameter.RASTER_SHEETWIDTH).SetValueString("21"); + + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 3.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.Specifications, + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 4.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.Pigment, + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 5.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.Position, + opts); + TextNote.Create(doc, + doc.ActiveView.Id, + new XYZ(tableLocation.X + 6.5 * gridWidth, tableLocation.Y - (i + 0.5) * gridHeight, 0), + item.Remark, + opts); + } + + doc.Create.NewDetailCurveArray(activeview, curveArray); + + //ii.Width = 10; + //ii.Height = 10; + }); + }); + } + else + { + TaskDialog.Show("温馨提示", "请打开图纸视图"); + return Result.Failed; + } + + return Result.Succeeded; + } + } +} \ No newline at end of file diff --git a/RookieStation/Drawing/ExecuteCmds/CmdAutoCreateLegend.cs b/RookieStation/Drawing/ExecuteCmds/CmdCreateShelvesLegend.cs similarity index 70% rename from RookieStation/Drawing/ExecuteCmds/CmdAutoCreateLegend.cs rename to RookieStation/Drawing/ExecuteCmds/CmdCreateShelvesLegend.cs index f6b140e..ed42e3c 100644 --- a/RookieStation/Drawing/ExecuteCmds/CmdAutoCreateLegend.cs +++ b/RookieStation/Drawing/ExecuteCmds/CmdCreateShelvesLegend.cs @@ -14,15 +14,12 @@ namespace RookieStation.Drawing.ExecuteCmds { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] - internal class CmdAutoCreateLegend : IExternalCommand + internal class CmdCreateShelvesLegend : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { - UIApplication uiapp = commandData.Application; - UIDocument uidoc = uiapp.ActiveUIDocument; - Autodesk.Revit.ApplicationServices.Application app = uiapp.Application; + UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; - DocumentSet docset = uiapp.Application.Documents; if (uidoc.ActiveView.ViewType == ViewType.DrawingSheet) { @@ -114,45 +111,57 @@ namespace RookieStation.Drawing.ExecuteCmds TextNoteType textNoteType = new FilteredElementCollector(doc).OfClass(typeof(TextNoteType)).Where(x => x.Name.Contains("宋")).FirstOrDefault() as TextNoteType; double fontSize = textNoteType.get_Parameter(BuiltInParameter.TEXT_SIZE).AsDouble(); double actualTextHeight = fontSize * 1.6; - double legendTextHeight = actualTextHeight * scale * 1.2; - double legendTextLength = legendTextHeight * 5; + double legendGridHeight = actualTextHeight * scale * 1.2;//图例网格高度 + double legendGridLength = legendGridHeight * 5;//图例网格长度 doc.Invoke(ts => { CurveArray curveArray = new CurveArray(); - for (int i = 0; i < statistics.Count() + 2; i++) + for (int i = 0; i < statistics.Count() + 2; i++)//水平线 { - Curve line = Line.CreateBound(XYZ.Zero, XYZ.BasisX * legendTextLength * 6).CreateOffset(legendTextHeight * i, -XYZ.BasisZ); - curveArray.Append(line); - } - for (int i = 0; i < 7; i++) - { - Curve line = Line.CreateBound(XYZ.Zero, XYZ.BasisY * (statistics.Count() + 1) * legendTextHeight).CreateOffset(legendTextLength * i, XYZ.BasisZ); + if (i == 0 || i == statistics.Count() || i == statistics.Count() + 1) + { + Curve line = Line.CreateBound(XYZ.Zero, XYZ.BasisX * legendGridLength * 6).CreateOffset(legendGridHeight * i, -XYZ.BasisZ); + curveArray.Append(line); + } + else + { + Curve line = Line.CreateBound(XYZ.Zero, XYZ.BasisX * legendGridLength * 3).CreateOffset(legendGridHeight * i, -XYZ.BasisZ); + curveArray.Append(line); + } + } + for (int i = 0; i < 7; i++)//垂直线 + { + Curve line = Line.CreateBound(XYZ.Zero, XYZ.BasisY * (statistics.Count() + 1) * legendGridHeight).CreateOffset(legendGridLength * i, XYZ.BasisZ); curveArray.Append(line); } + var opts = new TextNoteOptions(textNoteType.Id); for (int i = 0; i <= statistics.Count(); i++) { - var yElevation = XYZ.BasisY * legendTextHeight * (i + 1); - var opts = new TextNoteOptions(textNoteType.Id); + var yElevation = XYZ.BasisY * legendGridHeight * (i + 1); if (i < statistics.Count()) { TextNote.Create(doc, newLegend.Id, XYZ.BasisX * 0.5 + yElevation, statistics[i].ShelfType, opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength + 0.5) + yElevation, statistics[i].Count.ToString(), opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 2 + 0.5) + yElevation, + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength + 0.5) + yElevation, statistics[i].Count.ToString(), opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 2 + 0.5) + yElevation, statistics[i].LinearMetre.ToString(), opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 3 + 0.5) + yElevation, statistics[i].CapacityOrders.ToString(), opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 4 + 0.5) + yElevation, statistics[i].DesignOrders.ToString(), opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 5 + 0.5) + yElevation, statistics[i].GroundArea.ToString(), opts); } else { TextNote.Create(doc, newLegend.Id, XYZ.BasisX * 0.5 + yElevation, "货架类型", opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength + 0.5) + yElevation, "数量", opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 2 + 0.5) + yElevation, "总延米", opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 3 + 0.5) + yElevation, "总承载单量", opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 4 + 0.5) + yElevation, "设计单量", opts); - TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendTextLength * 5 + 0.5) + yElevation, "场地面积", opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength + 0.5) + yElevation, "数量", opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 2 + 0.5) + yElevation, "总延米", opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 3 + 0.5) + yElevation, "总承载单量", opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 4 + 0.5) + yElevation, "设计单量", opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 5 + 0.5) + yElevation, "场地面积", opts); } } + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 3 + 0.5) + XYZ.BasisY * legendGridHeight * (statistics.Count() + 1) / 2, statistics[0].CapacityOrders.ToString(), opts); + TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 4 + 0.5) + XYZ.BasisY * legendGridHeight * (statistics.Count() + 1) / 2, statistics[0].DesignOrders.ToString(), opts); + TextNote tn = TextNote.Create(doc, newLegend.Id, XYZ.BasisX * (legendGridLength * 5 + 0.5) + XYZ.BasisY * legendGridHeight * (statistics.Count() + 1) / 2, statistics[0].GroundArea + "m2".ToString(), opts); + FormattedText formattedText = new FormattedText(tn.Text); + TextRange range = new TextRange(tn.Text.Length - 2, 1); + formattedText.SetSuperscriptStatus(range, true); + tn.SetFormattedText(formattedText); doc.Create.NewDetailCurveArray(newLegend, curveArray); }); @@ -162,11 +171,14 @@ namespace RookieStation.Drawing.ExecuteCmds //XYZ p = new XYZ(6.0335, 1, 0) * 0.03606; //ViewSheet.Create(doc, newLegend.Id); var viewport = Viewport.Create(doc, doc.ActiveView.Id, newLegend.Id, XYZ.Zero); - //viewport.SetBoxCenter(); - XYZ p = XYZ.BasisX * 0.21757 + XYZ.BasisY * viewport.GetBoxOutline().GetDiagonalLength() / 2; - viewport.SetBoxCenter(viewport.GetBoxOutline().MaximumPoint + new XYZ(0.0313999575806783, 0.0199667276438911, 0)); + double l = viewport.GetBoxOutline().MaximumPoint.X - viewport.GetBoxOutline().MinimumPoint.X; + double w = viewport.GetBoxOutline().MaximumPoint.Y - viewport.GetBoxOutline().MinimumPoint.Y; + XYZ c = new XYZ(l / 2 + 7 / 304.8, w / 2 + 7 / 304.8, 0); + + viewport.SetBoxCenter(c); + var ele = new FilteredElementCollector(doc).OfClass(typeof(ElementType)).WhereElementIsElementType().FirstOrDefault(x => x.Name.Contains("无")); - viewport.ChangeTypeId(ele.Id); + viewport.ChangeTypeId(ele.Id);//选择视口-无标题 }); return newLegend; diff --git a/RookieStation/Drawing/Models/MaterialItem.cs b/RookieStation/Drawing/Models/MaterialItem.cs new file mode 100644 index 0000000..5d2a54c --- /dev/null +++ b/RookieStation/Drawing/Models/MaterialItem.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RookieStation.Drawing.Models +{ + internal class MaterialItem + { + public string Description { get; set; } + public string FireRating { get; set; } + public string Legend { get; set; } + public string Specifications { get; set; } + public string Pigment { get; set; } + public string Position { get; set; } + public string Remark { get; set; } + public string RevitType { get; set; } + } +} \ No newline at end of file diff --git a/RookieStation/Finishes/ExecuteCmds/CmdPlaceFloorFinishes.cs b/RookieStation/Finishes/ExecuteCmds/CmdPlaceFloorFinishes.cs index 78e7f07..02e46d5 100644 --- a/RookieStation/Finishes/ExecuteCmds/CmdPlaceFloorFinishes.cs +++ b/RookieStation/Finishes/ExecuteCmds/CmdPlaceFloorFinishes.cs @@ -166,9 +166,9 @@ namespace RookieStation.Finishes.ExecuteCmds PanelType panelType = null; MullionType mullionType = null; - string cutainSystemTypeName = $"铺贴{length} x {width}mm"; + string cutainSystemTypeName = $"地砖铺贴{length}x{width}mm"; string panelTypeName = "铺贴"; - string mullionTypeName = $"{gap} x {thickness}mm"; + string mullionTypeName = $"{gap}x{thickness}mm"; doc.Invoke(ts => { diff --git a/RookieStation/ParcelAreaModule/ExecuteCmds/CmdPlaceShelves.cs b/RookieStation/ParcelAreaModule/ExecuteCmds/CmdPlaceShelves.cs index 19884f8..49674a0 100644 --- a/RookieStation/ParcelAreaModule/ExecuteCmds/CmdPlaceShelves.cs +++ b/RookieStation/ParcelAreaModule/ExecuteCmds/CmdPlaceShelves.cs @@ -93,7 +93,10 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds double parallelReferlineOffest = vm.ParallelReferlineOffest / 304.8; //参考线起点垂直于参考线的偏移量 double verticalReferlineOffest = vm.VerticalReferlineOffest / 304.8; - shelfFamily = RsRevitUtils.GetLoadedFamily(doc, UserConstant.FamilyLibraryDirectory + "货架\\仓储货架.rfa"); + doc.Invoke(ts => + { + shelfFamily = RsRevitUtils.GetLoadedFamily(doc, UserConstant.FamilyLibraryDirectory + "货架\\仓储货架.rfa"); + }, "加载仓储货架族"); for (int i = 0; i < shelves.Count; i++) { @@ -552,7 +555,14 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds case NumOfGroup.Single: for (int j = 0; j < cardInstances.Count(); j++) { - cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}"); + if (currentnum < 10) + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"0{currentnum}"); + } + else + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}"); + } } currentnum += 1; @@ -566,7 +576,18 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds } for (int j = 0; j < cardInstances.Count(); j++) { - cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}~{currentnum + 1}"); + if (currentnum < 9) + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"0{currentnum}~0{currentnum + 1}"); + } + else if (currentnum == 9) + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"0{currentnum}~{currentnum + 1}"); + } + else + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}~{currentnum + 1}"); + } } //最后一个需要加上组合数作为下一列的开始 if (i == shelfInstances.Count - 1) @@ -583,7 +604,14 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds } for (int j = 0; j < cardInstances.Count(); j++) { - cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}~{currentnum + 2}"); + if (currentnum < 9) + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"0{currentnum}~0{currentnum + 2}"); + } + else + { + cardInstances[j].GetParameters("货架号").FirstOrDefault().Set($"{currentnum}~{currentnum + 2}"); + } } //最后一个需要加上组合数作为下一列的开始 if (i == shelfInstances.Count - 1) diff --git a/RookieStation/Properties/Resources.Designer.cs b/RookieStation/Properties/Resources.Designer.cs index 4f19e0c..d5a9481 100644 --- a/RookieStation/Properties/Resources.Designer.cs +++ b/RookieStation/Properties/Resources.Designer.cs @@ -170,6 +170,16 @@ namespace RookieStation.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap MainMaterials { + get { + object obj = ResourceManager.GetObject("MainMaterials", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// diff --git a/RookieStation/Properties/Resources.resx b/RookieStation/Properties/Resources.resx index 0aec4df..5b471e8 100644 --- a/RookieStation/Properties/Resources.resx +++ b/RookieStation/Properties/Resources.resx @@ -151,6 +151,9 @@ ..\resources\logoextrusion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\MainMaterials.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\resources\reception.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/RookieStation/Resources/ExportDWG.png b/RookieStation/Resources/ExportDWG.png index 96547da..a7d62ab 100644 Binary files a/RookieStation/Resources/ExportDWG.png and b/RookieStation/Resources/ExportDWG.png differ diff --git a/RookieStation/Resources/MainMaterials.png b/RookieStation/Resources/MainMaterials.png new file mode 100644 index 0000000..38784a2 Binary files /dev/null and b/RookieStation/Resources/MainMaterials.png differ diff --git a/RookieStation/RookieStation.csproj b/RookieStation/RookieStation.csproj index f236a19..8fdb943 100644 --- a/RookieStation/RookieStation.csproj +++ b/RookieStation/RookieStation.csproj @@ -100,9 +100,11 @@ ProgressMonitorView.xaml - + + + WpfLegendCreator.xaml @@ -425,17 +427,48 @@ - + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + Always diff --git a/RookieStation/RsApp.cs b/RookieStation/RsApp.cs index b00fc83..a316948 100644 --- a/RookieStation/RsApp.cs +++ b/RookieStation/RsApp.cs @@ -87,7 +87,6 @@ namespace RookieStation.RibbonMenu ////var exitBtn = (PushButton)gateItemsStacked[1]; //寄件区布置 CreatePushButton(packAreaPanel, "货架布置", Properties.Resources.Shelf, ViewPlanCmdEnabled); - CreatePushButton(packAreaPanel, "货架端牌", Properties.Resources.ShelfCard, ViewPlanCmdEnabled); CreatePushButton(packAreaPanel, "灯具布置", Properties.Resources.Lamp, ViewPlanCmdEnabled); @@ -101,17 +100,16 @@ namespace RookieStation.RibbonMenu CreatePushButton(statisticsPanel, "工程量导出", Properties.Resources.WorkSchedule, null); //出图面板 RibbonPanel drawingPanel = application.CreateRibbonPanel(TabName, DrawingPanelName); - CreatePushButton(drawingPanel, "货架图例说明", Properties.Resources.Legend, DrawingSheetCmdEnabled); + CreatePushButton(drawingPanel, "主材表", Properties.Resources.MainMaterials, DrawingSheetCmdEnabled); + CreatePushButton(drawingPanel, "货架图例说明", Properties.Resources.Legend, DrawingSheetCmdEnabled); CreatePushButton(drawingPanel, "平面标注", Properties.Resources.ViewPlanDim, ViewPlanCmdEnabled); CreatePushButton(drawingPanel, "立面标注", Properties.Resources.ViewSectionDim, ViewSectionCmdEnabled); - //CreatePushButton(drawingPanel, "平面标注", Properties.Resources.ViewPlanDim, ViewPlanCmdEnabled); - //CreatePushButton(drawingPanel, "立面标注", Properties.Resources.ViewSectionDim, null); - //CreatePushButton(drawingPanel, "导出dwg图纸", Properties.Resources.ExportDWG, null); + CreatePushButton(drawingPanel, "批量导出DWG", Properties.Resources.ExportDWG, null); //通用面板 RibbonPanel commonToolsPanel = application.CreateRibbonPanel(TabName, CommonTools); - CreatePushButton(commonToolsPanel, "加密族", Properties.Resources.Encrypt, null); - CreatePushButton(commonToolsPanel, "解密族", Properties.Resources.Decrypt, null); + //CreatePushButton(commonToolsPanel, "加密族", Properties.Resources.Encrypt, null); + //CreatePushButton(commonToolsPanel, "解密族", Properties.Resources.Decrypt, null); CreatePushButton(commonToolsPanel, "族库浏览", Properties.Resources.FamilyLib, null); RegisterDockPane(application); return Result.Succeeded; diff --git a/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0001.rfa b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0001.rfa new file mode 100644 index 0000000..647a2d7 Binary files /dev/null and b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0001.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0002.rfa b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0002.rfa new file mode 100644 index 0000000..a6555c2 Binary files /dev/null and b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.0002.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.rfa b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.rfa index 647a2d7..b19144a 100644 Binary files a/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.rfa and b/RookieStation/RsLibrary/FamilyLibrary/家具/3.0m绿动箱.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/标识标牌/立体发光字.rfa b/RookieStation/RsLibrary/FamilyLibrary/标识标牌/立体发光字.rfa new file mode 100644 index 0000000..a4e8fbb Binary files /dev/null and b/RookieStation/RsLibrary/FamilyLibrary/标识标牌/立体发光字.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0001.rfa b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0001.rfa new file mode 100644 index 0000000..410fddb Binary files /dev/null and b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0001.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0002.rfa b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0002.rfa new file mode 100644 index 0000000..f9bbfd7 Binary files /dev/null and b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.0002.rfa differ diff --git a/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.rfa b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.rfa index 410fddb..354be5a 100644 Binary files a/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.rfa and b/RookieStation/RsLibrary/FamilyLibrary/灯具/轨道射灯.rfa differ diff --git a/RookieStation/RsLibrary/Inventory.db b/RookieStation/RsLibrary/Inventory.db index 93b1d7b..da192a3 100644 Binary files a/RookieStation/RsLibrary/Inventory.db and b/RookieStation/RsLibrary/Inventory.db differ diff --git a/RookieStation/RsLibrary/MainMaterials/吊灯.png b/RookieStation/RsLibrary/MainMaterials/吊灯.png new file mode 100644 index 0000000..50eb972 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/吊灯.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/明装射灯.png b/RookieStation/RsLibrary/MainMaterials/明装射灯.png new file mode 100644 index 0000000..283eba5 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/明装射灯.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/明装筒灯.png b/RookieStation/RsLibrary/MainMaterials/明装筒灯.png new file mode 100644 index 0000000..ee3e531 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/明装筒灯.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/木饰面.png b/RookieStation/RsLibrary/MainMaterials/木饰面.png new file mode 100644 index 0000000..16e3bb3 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/木饰面.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/桥架.png b/RookieStation/RsLibrary/MainMaterials/桥架.png new file mode 100644 index 0000000..cdc07ed Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/桥架.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/灰色乳胶漆.png b/RookieStation/RsLibrary/MainMaterials/灰色乳胶漆.png new file mode 100644 index 0000000..5dd338f Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/灰色乳胶漆.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/灰色地砖.png b/RookieStation/RsLibrary/MainMaterials/灰色地砖.png new file mode 100644 index 0000000..58336b0 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/灰色地砖.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/白色乳胶漆.png b/RookieStation/RsLibrary/MainMaterials/白色乳胶漆.png new file mode 100644 index 0000000..d74e3d7 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/白色乳胶漆.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/白色铝塑板.png b/RookieStation/RsLibrary/MainMaterials/白色铝塑板.png new file mode 100644 index 0000000..37113b9 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/白色铝塑板.png differ diff --git a/RookieStation/RsLibrary/MainMaterials/黑钛不锈钢(哑光).png b/RookieStation/RsLibrary/MainMaterials/黑钛不锈钢(哑光).png new file mode 100644 index 0000000..7b529b3 Binary files /dev/null and b/RookieStation/RsLibrary/MainMaterials/黑钛不锈钢(哑光).png differ diff --git a/RookieStation/Statistics/ExecuteCmds/CmdExportBudgetInventory.cs b/RookieStation/Statistics/ExecuteCmds/CmdExportBudgetInventory.cs index f01dc8a..cb4676a 100644 --- a/RookieStation/Statistics/ExecuteCmds/CmdExportBudgetInventory.cs +++ b/RookieStation/Statistics/ExecuteCmds/CmdExportBudgetInventory.cs @@ -15,6 +15,7 @@ using System.Data.SQLite; using System.IO; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -33,14 +34,6 @@ namespace RookieStation.Statistics.ExecuteCmds Autodesk.Revit.ApplicationServices.Application app = uiapp.Application; Document doc = uidoc.Document; DocumentSet docset = uiapp.Application.Documents; - - //实例化SQL辅助类 - var sql = SQLiteUtil.GetInstance(); - sql.CreateDb(UserConstant.DbFolder + "Inventory.db"); - //var tablecontent = sql.QueryTable("菜鸟驿站工程预算清单"); - //string[] values = new string[] { "", "装饰装修项目", "Null", "测试", "测试描述", "m2", "Area" }; - //sql.InsertValue("'CaiNiaoInventory'", values); - SaveFileDialog sfd = new SaveFileDialog() { Filter = "Excel文件|*.xlsx", @@ -55,8 +48,15 @@ namespace RookieStation.Statistics.ExecuteCmds { return Result.Cancelled; } - var strs = sql.QueryTable("CaiNiaoInventory"); - var items = GetQuantity(doc, strs); + //实例化SQL辅助类 + var sql = SQLiteUtil.GetInstance(); + sql.CreateDb(UserConstant.DbFolder + "Inventory.db"); + //var tablecontent = sql.QueryTable("菜鸟驿站工程预算清单"); + //string[] values = new string[] { "", "装饰装修项目", "Null", "测试", "测试描述", "m2", "Area" }; + //sql.InsertValue("'CaiNiaoInventory'", values); + + var tableRows = sql.QueryTable("CaiNiaoInventory"); + var items = GetQuantity(doc, tableRows); sql.CloseConncetion(); var itemGroups = items.GroupBy(i => i.RootCategory).Select(s => s.Where(q => q.Quantity != 0.0));//分成三组 @@ -85,7 +85,7 @@ namespace RookieStation.Statistics.ExecuteCmds range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; range.Style.Font.Size = 10; range.Style.Fill.PatternType = ExcelFillStyle.Solid; - range.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.DimGray); + range.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.DarkGray); range.Style.Border.BorderAround(ExcelBorderStyle.Thin); } @@ -104,8 +104,9 @@ namespace RookieStation.Statistics.ExecuteCmds { sheet.Cells[row, 1].Value = NumberToChar(j + 1); sheet.Cells[row, 2].Value = subGroupys.ElementAt(j).Key; - sheet.Cells[row, 3].Value = $"=SUM({sheet.Cells[subStartRow + 1, 9].Address}:{sheet.Cells[subStartRow + subGroupys.ElementAt(j).Count(), 9].Address})"; + sheet.Cells[row, 3].Formula = $"SUM({sheet.Cells[subStartRow + 1, 9].Address}:{sheet.Cells[subStartRow + subGroupys.ElementAt(j).Count(), 9].Address})"; sheet.Cells[row, 3].Style.Numberformat.Format = "#,##0.00"; + sheet.Cells[row, 3].Style.Font.Color.SetColor(System.Drawing.Color.Red); using (var range = sheet.Cells[row, 1, row, 10]) { range.Style.Font.Name = "宋体"; @@ -132,9 +133,17 @@ namespace RookieStation.Statistics.ExecuteCmds sheet.Cells[row, 4].Value = subitem.Unit; sheet.Cells[row, 5].Value = subitem.Quantity; sheet.Cells[row, 5].Style.Font.Color.SetColor(System.Drawing.Color.Red); - sheet.Cells[row, 5].Style.Numberformat.Format = "0.00"; - sheet.Cells[row, 8].Formula = $"=SUM({sheet.Cells[row, 6].Address}:{sheet.Cells[row, 6].Address})"; - sheet.Cells[row, 9].Formula = $"={sheet.Cells[row, 5].Address}*{sheet.Cells[row, 8].Address}"; + if (subitem.Unit == "套" || subitem.Unit == "个") + { + sheet.Cells[row, 5].Style.Numberformat.Format = "0"; + } + else + { + sheet.Cells[row, 5].Style.Numberformat.Format = "0.00"; + } + sheet.Cells[row, 8].Formula = $"SUM({sheet.Cells[row, 6].Address}:{sheet.Cells[row, 6].Address})"; + sheet.Cells[row, 9].Formula = $"{sheet.Cells[row, 5].Address}*{sheet.Cells[row, 8].Address}"; + sheet.Cells[row, 10].Value = subitem.Remarks; using (var range = sheet.Cells[row, 1, row, 10]) { range.Style.Font.Name = "宋体"; @@ -181,8 +190,9 @@ namespace RookieStation.Statistics.ExecuteCmds sheet.Cells[row, 1, row, 8].Merge = true; sheet.Cells[row, 1].Value = rootItem.FirstOrDefault().RootCategory + "合计"; - sheet.Cells[row, 9].Formula = $"=SUM({sheet.Cells[startRow, 9].Address}:{sheet.Cells[row - 1, 9].Address})"; - rows.Add(row);//记录汇总行号 + sheet.Cells[row, 9].Formula = $"SUM({sheet.Cells[startRow, 9].Address}:{sheet.Cells[row - 1, 9].Address})"; + sheet.Cells[row, 9].Style.Numberformat.Format = "#,##0.00"; + rows.Add(row);//记录汇总的行号 using (var range = sheet.Cells[row, 1, row, 10]) { range.Style.Font.Name = "宋体"; @@ -203,7 +213,20 @@ namespace RookieStation.Statistics.ExecuteCmds sheet.Cells[row, 1, row, 8].Merge = true; sheet.Cells[row, 1].Value = "预算总价(一+二+三)"; - sheet.Cells[row, 9].Formula = $"=SUM({sheet.Cells[rows[0], 9].Address}+{sheet.Cells[rows[1], 9].Address}+{sheet.Cells[rows[2], 9].Address})"; + string formula = $"SUM({sheet.Cells[rows[0], 9].Address}"; + + sheet.Cells[2, 4].Formula = $"{sheet.Cells[row, 9].Address}";//表头预算总价合计 + + for (int i = 1; i < rows.Count; i++) + { + formula += "+" + sheet.Cells[rows[1], 9].Address; + if (i == rows.Count - 1) + { + formula += "+" + sheet.Cells[rows[1], 9].Address + ")"; + } + } + sheet.Cells[row, 9].Formula = formula; + sheet.Cells[row, 9].Style.Numberformat.Format = "#,##0.00"; using (var range = sheet.Cells[row, 1, row, 10]) { range.Style.Font.Name = "宋体"; @@ -245,7 +268,7 @@ namespace RookieStation.Statistics.ExecuteCmds /// /// 数字转汉字 /// - /// + /// /// private string NumberToChineseDigital(int n) { @@ -271,7 +294,7 @@ namespace RookieStation.Statistics.ExecuteCmds /// /// 数字转字母 /// - /// + /// /// private string NumberToChar(int n) { @@ -306,17 +329,24 @@ namespace RookieStation.Statistics.ExecuteCmds /// /// 获取量 /// - /// - /// + /// + /// /// private static List GetQuantity(Document doc, List li) { - double similarity = 0.3; + double similarity = 0.8; List items = new List(); for (int i = 0; i < li.Count; i++) { - string revitType = li[i].ElementAt(6).ToLower(); - string name = li[i].ElementAt(3); + SubItem item = new SubItem() + { + RootCategory = li[i][1], + SubCategory = li[i][2], + ItemName = li[i][3], + Description = li[i][4], + Unit = li[i][5], + }; + string revitType = li[i][6].ToLower(); if (revitType == "wall") { double wallTotalArea = 0.0; @@ -325,26 +355,21 @@ namespace RookieStation.Statistics.ExecuteCmds foreach (var wall in walls) { - if (levenshtein(name, wall.Name) > similarity) + if (CommonUtils.levenshtein(item.ItemName, wall.Name) > similarity) { - if (name.Contains("踢脚线")) + if (item.Unit == "m" && wall.Name.Contains("踢脚线")) { + item.Remarks += wall.Name + "\r\n"; wallTotalLength += wall.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble(); } - else + else if (item.Unit == "m2" && !wall.Name.Contains("踢脚线")) { + item.Remarks += wall.Name + "\r\n"; wallTotalArea += wall.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble(); } } } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - }; + if (wallTotalArea == 0.0) { item.Quantity = RsRevitUtils.ConvertFeetToMetre(wallTotalLength); @@ -362,45 +387,33 @@ namespace RookieStation.Statistics.ExecuteCmds foreach (var floor in floors) { - //if (name.Intersect(floor.Name).Count() >= 3) + //if (item.ItemName.Intersect(floor.Name).Count() >= 3) //{ //} - if (levenshtein(name, floor.Name) > similarity) + if (CommonUtils.levenshtein(item.ItemName, floor.Name) > similarity) { floorTotalArea += floor.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble(); + item.Remarks += floor.Name + "\r\n"; } } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(floorTotalArea) - }; + item.Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(floorTotalArea); items.Add(item); } else if (revitType == "ceiling") { double ceilingTotalArea = 0.0; var ceilings = new FilteredElementCollector(doc).OfClass(typeof(Ceiling)).Cast(); + foreach (var ceiling in ceilings) { - if (levenshtein(name, ceiling.Name) > similarity) + if (CommonUtils.levenshtein(item.ItemName, ceiling.Name) > similarity) { ceilingTotalArea += ceiling.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble(); + item.Remarks += ceiling.Name + "\r\n"; } } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(ceilingTotalArea) - }; + item.Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(ceilingTotalArea); + items.Add(item); } else if (revitType == "familyinstance") @@ -409,107 +422,82 @@ namespace RookieStation.Statistics.ExecuteCmds int count = 0; double length = 0.0; double area = 0.0; - string unit = li[i].ElementAt(5); + string unit = item.Unit; foreach (var instance in instances) { string familyName = instance.Symbol.FamilyName; - if (levenshtein(familyName, li[i].ElementAt(3)) > similarity) + string tempname = CommonUtils.GetChineseWord(item.ItemName); + if (CommonUtils.levenshtein(tempname, familyName) > similarity) { if (unit == "m") { if (familyName.Contains("接待台")) { length += RsRevitUtils.ConvertFeetToMetre(instance.Symbol.GetParameters("台面长度").FirstOrDefault().AsDouble()); + item.Remarks += familyName + "\r\n"; } if (familyName.Contains("腰封玻璃贴")) { var cur = RsRevitUtils.GetLocationCurveByElement(instance); length += RsRevitUtils.ConvertFeetToMetre(cur.Length); + item.Remarks += familyName + "\r\n"; } if (familyName.Contains("亚克力水晶字")) { length += instance.GetParameters("文字").FirstOrDefault().AsString().Length * 116.4 / 1000; + item.Remarks += familyName + "\r\n"; } if (familyName.Contains("精工背发光字")) { double l = Convert.ToDouble((instance.Symbol.Name.Substring(0, instance.Symbol.Name.IndexOf('m')))) / 1000; length += l; + item.Remarks += familyName + "\r\n"; } if (familyName.Contains("立体发光字")) { double l = Convert.ToDouble((instance.Symbol.Name.Substring(0, instance.Symbol.Name.IndexOf('m')))) / 1000; length += l; + item.Remarks += familyName + "\r\n"; } } else if (unit == "m2") { - if (familyName.Contains("卷帘")) + if (familyName.Contains("卷帘") || familyName.Contains("玻璃隔断")) { var a = instance.Symbol.get_Parameter(BuiltInParameter.FAMILY_HEIGHT_PARAM).AsDouble() * instance.Symbol.get_Parameter(BuiltInParameter.FURNITURE_WIDTH).AsDouble(); area += RsRevitUtils.ConvertSquareFeetToSquareMetre(a); + item.Remarks += familyName + "\r\n"; } } else if (unit == "套" || unit == "个") { if (familyName.Contains("仓储货架")) { - if (li[i].ElementAt(3).Contains(instance.Symbol.GetParameters("长度").FirstOrDefault().AsValueString())) + if (item.ItemName.Contains(instance.Symbol.GetParameters("长度").FirstOrDefault().AsValueString())) { count += 1; + item.Remarks += familyName + "\r\n"; } } - if (familyName.Contains("明装筒灯")) + else if (familyName.Contains("明装筒灯")) { - if (li[i].ElementAt(3).Contains(instance.Symbol.Name)) + if (item.Description.Contains(instance.Symbol.Name)) { count += 1; + item.Remarks += familyName + "\r\n"; } } + else + { + count += 1; + item.Remarks += familyName + "\r\n"; + } } - //var categoryValue = instance.Category.Id.IntegerValue; - //if (categoryValue == -2001060 || categoryValue == -2008087 || categoryValue == -2001350)//插座、开关、专用设备 - //{ - // count += 1; - //} - //else if (categoryValue == -2001120)//照明设备 - //{ - // if (li[i].ElementAt(3).Contains(instance.Symbol.Name)) - // { - // count += 1; - // } - //} - //else if (categoryValue == -2000080 || categoryValue == -2001100)//家具、家具系统 - //{ - // if (li[i].ElementAt(5) == "m") - // { - // } - // else - // { - // count += 1; - // } - //} - //else if (categoryValue == -2000023 || categoryValue == -2000014)//门、窗 - //{ - // if (li[i].ElementAt(5) == "m2") - // { - // } - // else - // { - // count += 1; - // } - //} - }; + } } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - }; + switch (unit) { case "m": @@ -536,30 +524,27 @@ namespace RookieStation.Statistics.ExecuteCmds else if (revitType == "cabletray") { double ctTotalLength = 0.0; + var cts = new FilteredElementCollector(doc).OfClass(typeof(CableTray)).Cast(); foreach (var ct in cts) { ctTotalLength += ct.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble(); + item.Remarks += ct.Name + "\r\n"; } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - Quantity = RsRevitUtils.ConvertFeetToMetre(ctTotalLength) - }; + item.Quantity = RsRevitUtils.ConvertFeetToMetre(ctTotalLength); + items.Add(item); } else if (revitType == "curtainsystem") { double area = 0.0; + var curtainSystems = new FilteredElementCollector(doc).OfClass(typeof(CurtainSystem)).OfCategory(BuiltInCategory.OST_CurtaSystem).Cast(); foreach (var curtainSystem in curtainSystems) { - if (levenshtein(name, curtainSystem.Name) > similarity) + if (item.ItemName == curtainSystem.Name) { + item.Remarks += curtainSystem.Name + "\r\n"; var geometryElement = curtainSystem.get_Geometry(new Options()); foreach (GeometryObject geomObj in geometryElement) { @@ -570,17 +555,17 @@ namespace RookieStation.Statistics.ExecuteCmds } } } + //else//如果没有找到同名族类型,则按面积计算 + //{ + // var rooms = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).Cast(); + // foreach (var room in rooms) + // { + // area += room.get_Parameter(BuiltInParameter.ROOM_AREA).AsDouble(); + // } + //} } + item.Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(area); - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(area) - }; items.Add(item); } else//无法统计的量,采用总场地面积计 @@ -592,15 +577,8 @@ namespace RookieStation.Statistics.ExecuteCmds otherArea += room.get_Parameter(BuiltInParameter.ROOM_AREA).AsDouble(); } - SubItem item = new SubItem() - { - RootCategory = li[i].ElementAt(1), - SubCategory = li[i].ElementAt(2), - ItemName = li[i].ElementAt(3), - Description = li[i].ElementAt(4), - Unit = li[i].ElementAt(5), - Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(otherArea) - }; + item.Quantity = RsRevitUtils.ConvertSquareFeetToSquareMetre(otherArea); + items.Add(item); } } @@ -608,53 +586,12 @@ namespace RookieStation.Statistics.ExecuteCmds return items; } - public static float levenshtein(String str1, String str2) - { - int len1 = str1.Length; - int len2 = str2.Length; - int[,] dif = new int[len1 + 1, len2 + 1]; - for (int a = 0; a <= len1; a++) - { - dif[a, 0] = a; - } - for (int a = 0; a <= len2; a++) - { - dif[0, a] = a; - } - int temp; - for (int i = 1; i <= len1; i++) - { - for (int j = 1; j <= len2; j++) - { - if (str1.ElementAt(i - 1) == str2.ElementAt(j - 1)) - { - temp = 0; - } - else - { - temp = 1; - } - dif[i, j] = min(dif[i - 1, j - 1] + temp, dif[i, j - 1] + 1, - dif[i - 1, j] + 1); - } - } - float similarity = 1 - (float)dif[len1, len2] / Math.Max(len1, len2); - return similarity; - } - - private static int min(params int[] arr) - { - int min = int.MaxValue; - foreach (int i in arr) - { - if (min > i) - { - min = i; - } - } - return min; - } - + /// + /// 表头 + /// + /// + /// + /// private static ExcelWorksheet CreateTableHeader(Document doc, ExcelPackage package) { var rooms = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).Cast(); @@ -685,10 +622,13 @@ namespace RookieStation.Statistics.ExecuteCmds sheet.SetValue(2, 2, Properties.Settings.Default.SchoolName); sheet.Cells[2, 2].Style.Font.Color.SetColor(System.Drawing.Color.Red); sheet.SetValue(2, 3, "预算总价"); - sheet.SetValue(2, 4, "-"); + //sheet.SetValue(2, 4, "-"); + sheet.Cells[2, 4].Style.Numberformat.Format = "#,##0.00"; + sheet.Cells[2, 4].Style.Font.Color.SetColor(System.Drawing.Color.Red); sheet.SetValue(2, 6, "项目面积"); sheet.Cells["F2:G2"].Merge = true; sheet.SetValue(2, 8, area); + sheet.Cells[2, 8].Style.Numberformat.Format = "#,##0.00"; sheet.Cells[2, 8].Style.Font.Color.SetColor(System.Drawing.Color.Red); sheet.SetValue(2, 9, "预算日期"); sheet.SetValue(2, 10, DateTime.Now.ToString("D")); diff --git a/RookieStation/UserConstant.cs b/RookieStation/UserConstant.cs index 299bdf8..4736c6e 100644 --- a/RookieStation/UserConstant.cs +++ b/RookieStation/UserConstant.cs @@ -24,6 +24,7 @@ namespace RookieStation.ProjectConfig internal static string LogFolder = AddinDirectory + "\\RsLibrary\\Log\\"; internal static string DbFolder = AddinDirectory + "\\RsLibrary\\"; + internal static string MainMaterialFolder = AddinDirectory + "\\RsLibrary\\MainMaterials\\"; #else @@ -34,6 +35,7 @@ namespace RookieStation.ProjectConfig internal static string LogFolder = AddinDirectory + "\\Log\\"; internal static string DbFolder = AddinDirectory + "\\"; + internal static string MainMaterialFolder = AddinDirectory + "\\MainMaterials\\"; #endif diff --git a/RookieStation/Utils/CommonUtils.cs b/RookieStation/Utils/CommonUtils.cs index d863054..d00f12b 100644 --- a/RookieStation/Utils/CommonUtils.cs +++ b/RookieStation/Utils/CommonUtils.cs @@ -7,12 +7,84 @@ using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace RookieStation.Utils { internal static class CommonUtils { + /// + /// 取得中文字符 + /// + /// + /// + public static string GetChineseWord(string oriText) + { + string x = @"[\u4E00-\u9FFF]+"; + MatchCollection Matches = Regex.Matches + (oriText, x, RegexOptions.IgnoreCase); + StringBuilder sb = new StringBuilder(); + foreach (Match NextMatch in Matches) + { + sb.Append(NextMatch.Value); + } + return sb.ToString(); + } + + /// + /// 比较字符串相似度 + /// + /// + /// + /// + public static float levenshtein(String str1, String str2) + { + int len1 = str1.Length; + int len2 = str2.Length; + int[,] dif = new int[len1 + 1, len2 + 1]; + for (int a = 0; a <= len1; a++) + { + dif[a, 0] = a; + } + for (int a = 0; a <= len2; a++) + { + dif[0, a] = a; + } + int temp; + for (int i = 1; i <= len1; i++) + { + for (int j = 1; j <= len2; j++) + { + if (str1.ElementAt(i - 1) == str2.ElementAt(j - 1)) + { + temp = 0; + } + else + { + temp = 1; + } + dif[i, j] = min(dif[i - 1, j - 1] + temp, dif[i, j - 1] + 1, + dif[i - 1, j] + 1); + } + } + float similarity = 1 - (float)dif[len1, len2] / Math.Max(len1, len2); + return similarity; + } + + private static int min(params int[] arr) + { + int min = int.MaxValue; + foreach (int i in arr) + { + if (min > i) + { + min = i; + } + } + return min; + } + public static String GetEnumDescription(this Type e, int? value) { FieldInfo[] fields = e.GetFields(); diff --git a/RookieStationSetup/RookieStationSetup.vdproj b/RookieStationSetup/RookieStationSetup.vdproj index c68c029..ff2fe17 100644 --- a/RookieStationSetup/RookieStationSetup.vdproj +++ b/RookieStationSetup/RookieStationSetup.vdproj @@ -13,6 +13,12 @@ "SccProvider" = "8:" "Hierarchy" { + "Entry" + { + "MsmKey" = "8:_02094458B1124B9BB73E8D249B7B2335" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } "Entry" { "MsmKey" = "8:_032CB90F0BF943239BB69AAB64E6E14F" @@ -75,6 +81,18 @@ } "Entry" { + "MsmKey" = "8:_1A9EDF70859E409592E35E31AEDC26DE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1AB9102E95934295AC08274702F82876" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_21A557C5E98D44DAA1A1C8B107B5D7F9" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -255,12 +273,24 @@ } "Entry" { + "MsmKey" = "8:_689F545FD72E436E954CE49088FC52D5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_69CFE5CC346949CC8C772A6308CC7D75" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { + "MsmKey" = "8:_6A85FF95D7764D46905FFFBB9BD5F0F4" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_6B17F4D39BED4015A225CC9774765826" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -327,6 +357,12 @@ } "Entry" { + "MsmKey" = "8:_89D4725F90F24CE08D05A39C4CCFC1BA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_8B93DE5BD9D04559925F2D0A028817D1" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -339,6 +375,12 @@ } "Entry" { + "MsmKey" = "8:_92BC7EFB9EB247C6BE29CD0CD52C1166" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_94D83AC6917400F3B63679A37661FBFB" "OwnerKey" = "8:_7CA1C332699FD9CD43194849BF997D08" "MsmSig" = "8:_UNDEFINED" @@ -483,6 +525,12 @@ } "Entry" { + "MsmKey" = "8:_C93A254F3D5E4FDBAE49E9981D5FA10D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_CA838E6409624FCD8795AD075EE07CE0" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -501,6 +549,12 @@ } "Entry" { + "MsmKey" = "8:_CD6689FCC66148918EC6F4D46B86573D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_CD837656CA87438A9E5944CD44B6CE7B" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -585,6 +639,12 @@ } "Entry" { + "MsmKey" = "8:_F096D99831204118A26826E7C92C0142" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_F3DBE5F365DC458EBC7E4BD1CFCF285D" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -792,6 +852,26 @@ } "File" { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_02094458B1124B9BB73E8D249B7B2335" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\白色乳胶漆.png" + "TargetName" = "8:白色乳胶漆.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_032CB90F0BF943239BB69AAB64E6E14F" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\门\\幕墙门-双扇无边框.rfa" @@ -983,6 +1063,46 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A9EDF70859E409592E35E31AEDC26DE" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\灰色地砖.png" + "TargetName" = "8:灰色地砖.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1AB9102E95934295AC08274702F82876" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\白色铝塑板.png" + "TargetName" = "8:白色铝塑板.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_21A557C5E98D44DAA1A1C8B107B5D7F9" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\家具\\寄件接待台-带收检台.rfa" @@ -1576,6 +1696,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_689F545FD72E436E954CE49088FC52D5" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\木饰面.png" + "TargetName" = "8:木饰面.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_69CFE5CC346949CC8C772A6308CC7D75" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\Texture\\取件区-左.png" @@ -1596,6 +1736,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6A85FF95D7764D46905FFFBB9BD5F0F4" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\桥架.png" + "TargetName" = "8:桥架.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6B17F4D39BED4015A225CC9774765826" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\标识标牌\\菜鸟使命.rfa" @@ -1829,6 +1989,26 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_89D4725F90F24CE08D05A39C4CCFC1BA" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\明装筒灯.png" + "TargetName" = "8:明装筒灯.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8B93DE5BD9D04559925F2D0A028817D1" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\出入口\\直线形收检台.rfa" @@ -1869,6 +2049,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_92BC7EFB9EB247C6BE29CD0CD52C1166" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\明装射灯.png" + "TargetName" = "8:明装射灯.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_94D83AC6917400F3B63679A37661FBFB" { "AssemblyRegister" = "3:1" @@ -2282,6 +2482,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C93A254F3D5E4FDBAE49E9981D5FA10D" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\灰色乳胶漆.png" + "TargetName" = "8:灰色乳胶漆.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CA838E6409624FCD8795AD075EE07CE0" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\标识标牌\\精工背发光字.rfa" @@ -2342,6 +2562,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CD6689FCC66148918EC6F4D46B86573D" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\吊灯.png" + "TargetName" = "8:吊灯.png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CD837656CA87438A9E5944CD44B6CE7B" { "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\FamilyLibrary\\标识标牌\\亚克力水晶字.rfa" @@ -2633,6 +2873,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F096D99831204118A26826E7C92C0142" + { + "SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\黑钛不锈钢(哑光).png" + "TargetName" = "8:黑钛不锈钢(哑光).png" + "Tag" = "8:" + "Folder" = "8:_39AC4D3278AD4B5FBAB245C54BDCB334" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F3DBE5F365DC458EBC7E4BD1CFCF285D" { "AssemblyRegister" = "3:1" @@ -2932,6 +3192,17 @@ } } } + "{9EF0B969-E518-4E46-987F-47570745A589}:_39AC4D3278AD4B5FBAB245C54BDCB334" + { + "Name" = "8:MainMaterials" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_47091386A10D44E0BAD296C443B6BAE7" + "Folders" + { + } + } "{9EF0B969-E518-4E46-987F-47570745A589}:_935FCE4D5F1B41D29B0881394E7A6B15" { "Name" = "8:Document" @@ -2987,15 +3258,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:菜鸟驿站工具集" - "ProductCode" = "8:{5DCFF0F8-3C6C-4C34-B888-63FE8034843E}" - "PackageCode" = "8:{F481155F-8AF8-48C7-A715-4BA4074E52A3}" + "ProductCode" = "8:{4B2A717E-F947-4900-B5F1-1A37FC1A5984}" + "PackageCode" = "8:{504731B2-B217-4AED-AEF6-5511412AB677}" "UpgradeCode" = "8:{127EC3EC-7539-468B-84EA-E1ECDD6204E6}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" - "ProductVersion" = "8:1.0.3" + "ProductVersion" = "8:1.0.4" "Manufacturer" = "8:YTX Engineering" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" diff --git a/帮助文档.docx b/帮助文档.docx deleted file mode 100644 index e69de29..0000000 diff --git a/说明文档.docx b/说明文档.docx new file mode 100644 index 0000000..deafb3f Binary files /dev/null and b/说明文档.docx differ