批量模型创建

This commit is contained in:
GG Z
2021-12-03 18:21:26 +08:00
parent c08ea509f8
commit c6ab6a853d
21 changed files with 953 additions and 153 deletions

View File

@@ -20,6 +20,7 @@ namespace AddinDeployer
{
//public static void Main(string[] args)
//{
// ProcessEvent();
//}
private string path;
@@ -32,7 +33,8 @@ namespace AddinDeployer
{
this.BeforeInstall += CustomActionClass_BeforeInstall;
this.BeforeUninstall += CustomActionClass_BeforeUninstall;
this.AfterInstall += CustomActionClass_AfterInstall;
//this.AfterInstall += CustomActionClass_AfterInstall;
//this.AfterUninstall += CustomActionClass_AfterUninstall;
}
//private string revitvernum = "2020";
@@ -50,17 +52,17 @@ namespace AddinDeployer
}
catch (Win32Exception e)
{
MessageBox.Show(e.Message.ToString()); // process was terminating or can't be terminated - deal with it
MessageBox.Show(e.Message.ToString());
}
catch (InvalidOperationException e)
{
MessageBox.Show(e.Message.ToString()); // process has already exited - might be able to let this one go
MessageBox.Show(e.Message.ToString());
}
}
}
}
private void CustomActionClass_BeforeUninstall(object sender, InstallEventArgs e)
private static void CustomActionClass_BeforeUninstall(object sender, InstallEventArgs e)
{
KillProcess("REVIT");
@@ -84,9 +86,18 @@ namespace AddinDeployer
//}
}
private void CustomActionClass_BeforeInstall(object sender, InstallEventArgs e)
private static void CustomActionClass_BeforeInstall(object sender, InstallEventArgs e)
{
KillProcess("REVIT");
try
{
var path = @"C:\ProgramData\Autodesk\Revit\Addins\2020";
//DelAddinFromPath(path);
DeleteFolder(path + "\\RsTools");
}
catch (Exception)
{
}
//var dialogResult = System.Windows.Forms.MessageBox.Show("是否关闭Revit以安装插件", "提示", System.Windows.Forms.MessageBoxButtons.YesNo);

View File

@@ -0,0 +1,478 @@
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System;
using RookieStation.Utils;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Collections.ObjectModel;
using Autodesk.Revit.DB.Architecture;
using System.Security.Cryptography;
using RookieStation.Construction.Views;
using System.Windows.Media.Media3D;
namespace RookieStation.Construction.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class AutoGenerateModels : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiapp = commandData.Application;
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
double length = 25000.0 / 304.8;
double width = 15000.0 / 304.8;
double interval = 10000 / 304.8;
WpfAutoModeling settings = CommonUtils.ShowDialog<WpfAutoModeling>();
if (settings.DialogResult == true)
{
length = settings.Length / 304.8;
width = settings.Width / 304.8;
}
else
{
return Result.Cancelled;
}
var pointsCorner = new List<XYZ>();
//边界
IList<Curve> edges = new List<Curve>();
var p1 = uidoc.Selection.PickPoint(ObjectSnapTypes.Endpoints, "请选择定位点");
var p2 = p1.Add(width * XYZ.BasisY);
var p3 = p1.Add(new XYZ(length, width, 0));
var p4 = p1.Add(length * XYZ.BasisX);
pointsCorner.Add(p1);
pointsCorner.Add(p2);
pointsCorner.Add(p3);
pointsCorner.Add(p4);
for (int i = 0; i <= 3; i++)
{
Line line = null;
if (i == 3)
{
line = Line.CreateBound(pointsCorner[i], pointsCorner[0]);
}
else
{
line = Line.CreateBound(pointsCorner[i], pointsCorner[i + 1]);
}
edges.Add(line);
}
CurveLoop loop = CurveLoop.Create(edges);
try
{
doc.InvokeGroup(tg =>
{
doc.Invoke(ts =>
{
//边界组
CreateFloor(doc, edges);
});
doc.Invoke(ts =>
{
CreateColumnAndFoundation(doc, edges, interval);
}, "创建基础和柱");
doc.Invoke(ts =>
{
CreateFramings(doc, edges, interval);
}, "创建地梁");
doc.Invoke(ts =>
{
var roof = CreateRoof(doc, loop, 125 / 304.8, 160 / 304.8);
#region MyRegion
//Options options = new Options();
//options.ComputeReferences = true;
//var x = roof.get_Geometry(options);
//var gutterType = new FilteredElementCollector(doc).OfClass(typeof(GutterType)).OfCategory(BuiltInCategory.OST_Gutter).Cast<GutterType>().FirstOrDefault();
//foreach (var item in x)
//{
// if (item is Solid)
// {
// Solid solid = (Solid)item;
// var es = solid.Edges;
// var references = new ReferenceArray();
// foreach (Edge e in es)
// {
// var line = e.AsCurve() as Line;
// if (line != null)
// //references.Append(e.Reference);
// try
// {
// doc.Create.NewGutter(gutterType, e.Reference);
// }
// catch (Exception)
// {
// continue;
// }
// }
// }
//}
#endregion MyRegion
}, "创建屋面");
doc.Invoke(ts =>
{
CreateGutter(doc, loop, 100.0 / 304.8, 180 / 304.8);
}, "创建檐沟");
doc.Invoke(ts =>
{
CreateOuterWallList(doc, loop, 200 / 304.8);
});
doc.Invoke(ts =>
{
CreatePWallList(doc, loop, 400 / 304.8, 0.0);
}, "创建铝塑板");
}, "自动创建模型");
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
return Result.Cancelled;
}
catch (Exception e)
{
throw;
//System.Windows.Forms.MessageBox.Show(e.InnerException.ToString());
}
return Result.Succeeded;
}
private static void CreateFloor(Document doc, IList<Curve> edges)
{
var floorCurveArray = new CurveArray();
for (int i = 0; i < edges.Count; i++)
{
floorCurveArray.Append(edges[i]);
}
doc.Create.NewFloor(floorCurveArray, true);
}
/// <summary>
///创建门头铝塑板
/// </summary>
/// <param name="doc"></param>
/// <param name="curves"></param>
/// <param name="horizontalOffest">水平向外偏移距离</param>
/// <param name="verticalOffest"></param>
private void CreatePWallList(Document doc, CurveLoop loop, double horizontalOffest, double verticalOffest)
{
var wallType = new FilteredElementCollector(doc).OfClass(typeof(WallType)).OfCategory(BuiltInCategory.OST_Walls).Cast<WallType>().Where(w => w.Name.Contains("外墙 - 灰色铝塑板")).FirstOrDefault();
//var wallType = new FilteredElementCollector(doc).OfClass(typeof(WallType)).OfCategory(BuiltInCategory.OST_Walls).Cast<WallType>().Where(w => w.Name.Contains("铝合金玻璃幕墙")).FirstOrDefault();
var wallSweepType = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Reveals).WhereElementIsElementType().Where(w => w.Name.Contains("3mm")).FirstOrDefault();
var currentLevel = doc.ActiveView.GenLevel;
var topLevel = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).FirstOrDefault();
double heightOffest = topLevel.Elevation + verticalOffest;
var offestCurveLoop = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
Transform transform = Transform.CreateTranslation(XYZ.BasisZ * heightOffest);
var translateCurveLoop = CurveLoop.CreateViaTransform(offestCurveLoop, transform);
var pheight = 1220 / 304.8;
foreach (var curve in translateCurveLoop)
{
Wall wall = null;
doc.InvokeSub(ts =>
{
wall = Wall.Create(doc, curve, wallType.Id, topLevel.Id, pheight, 0, false, false);
});
if (wall != null)
{
WallSweepInfo info = new WallSweepInfo(WallSweepType.Reveal, true)
{
WallOffset = 100 / 304.8,
Distance = 100 / 304.8,
WallSide = WallSide.Exterior,
DistanceMeasuredFrom = DistanceMeasuredFrom.Base,
};
if (WallSweep.WallAllowsWallSweep(wall))
{
var wallsweep = WallSweep.Create(wall, wallSweepType.Id, info);
}
}
}
}
/// <summary>
/// 创建外墙
/// </summary>
/// <param name="doc"></param>
/// <param name="curve"></param>
private void CreateOuterWallList(Document doc, CurveLoop loop, double horizontalOffest)
{
var offestCurve = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
var wallType = new FilteredElementCollector(doc).OfClass(typeof(WallType)).OfCategory(BuiltInCategory.OST_Walls).Cast<WallType>().Where(w => w.Name.Contains("铝合金玻璃幕墙")).FirstOrDefault();
var wallSweepType = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Reveals).WhereElementIsElementType().Where(w => w.Name.Contains("3mm")).FirstOrDefault();
var topLevel = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).FirstOrDefault();
var currentLevel = doc.ActiveView.GenLevel;
var height = topLevel.Elevation - currentLevel.Elevation;
foreach (var curve in offestCurve)
{
var wall = Wall.Create(doc, curve, wallType.Id, currentLevel.Id, height, 0, false, false);
}
}
/// <summary>
///创建檐沟
/// </summary>
/// <param name="doc"></param>
/// <param name="curves">边界线</param>
/// <param name="horizontalOffest">水平向外偏移距离</param>
/// <param name="verticalOffest">相对于当前视图标高以上的默认标高的偏移</param>
private void CreateGutter(Document doc, CurveLoop loop, double horizontalOffest, double verticalOffest)
{
ReferenceArray references = new ReferenceArray();
var level = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).FirstOrDefault();
double heightOffest = level.Elevation + verticalOffest;
var offestCurveLoop = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
Transform transform = Transform.CreateTranslation(XYZ.BasisZ * heightOffest);
var translateCurveLoop = CurveLoop.CreateViaTransform(offestCurveLoop, transform);
for (int i = 0; i < translateCurveLoop.Count(); i++)
{
var curve = translateCurveLoop.ElementAt(i);
var mc = doc.Create.NewModelCurve(curve, SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, heightOffest * XYZ.BasisZ)));
references.Append(mc.GeometryCurve.Reference);
}
var gutterType = new FilteredElementCollector(doc).OfClass(typeof(GutterType)).OfCategory(BuiltInCategory.OST_Gutter).Cast<GutterType>().FirstOrDefault();
var gutters = doc.Create.NewGutter(gutterType, references);
if (!gutters.HorizontalFlipped)
{
gutters.HorizontalFlip();
}
}
private static void NewMethod1(UIDocument uidoc)
{
double length = 50000.0 / 304.8;
double width = 30000.0 / 304.8;
double intervalColumn = 10000 / 304.8;
var p1 = uidoc.Selection.PickPoint(ObjectSnapTypes.Endpoints, "请选择定位点");
//NewMethod2(uidoc, length, width);
var m = Math.Floor(length / intervalColumn) + 2;
List<Line> ls = new List<Line>();
for (int i = 0; i < m; i++)
{
var pl = i / (m - 1) * length * XYZ.BasisX + p1;
var pw = i / (m - 1) * length * XYZ.BasisX + p1 + width * XYZ.BasisY;
Line line = Line.CreateBound(pl, pw);
ls.Add(line);
}
}
/// <summary>
/// 创建屋顶
/// </summary>
/// <param name="doc"></param>
/// <param name="loop"></param>
/// <param name="horizontalOffest">屋顶相对于轮廓向外水平偏移</param>
/// <param name="verticalOffest">相对当前标高以上默认标高的偏移</param>
/// <returns></returns>
public FootPrintRoof CreateRoof(Document doc, CurveLoop loop, double horizontalOffest, double verticalOffest)
{
var roofType = new FilteredElementCollector(doc).OfClass(typeof(RoofType)).OfCategory(BuiltInCategory.OST_Roofs).Cast<RoofType>().Where(symbol => symbol.Name.Contains("彩钢板")).FirstOrDefault();
var level = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).FirstOrDefault();
var roofCurveArray = new CurveArray();
var offestCurve = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
for (int i = 0; i < offestCurve.Count(); i++)
{
roofCurveArray.Append(offestCurve.ElementAt(i));
}
ModelCurveArray modelCurveArray = new ModelCurveArray();
FootPrintRoof roof = doc.Create.NewFootPrintRoof(roofCurveArray, level, roofType, out modelCurveArray);
var line1 = modelCurveArray.get_Item(1);
var line2 = modelCurveArray.get_Item(3);
roof.set_DefinesSlope(line1, true);
roof.set_SlopeAngle(line1, 0.2);
roof.set_DefinesSlope(line2, true);
roof.set_SlopeAngle(line2, 0.2);
roof.get_Parameter(BuiltInParameter.ROOF_LEVEL_OFFSET_PARAM).Set(verticalOffest);
return roof;
}
/// <summary>
///创建梁
/// </summary>
/// <param name="doc"></param>
/// <param name="edges"></param>
/// <param name="interval"></param>
private void CreateFramings(Document doc, IList<Curve> edges, double interval)
{
List<List<XYZ>> pointsOnLines = new List<List<XYZ>>();
var lines = CreateGridLine(interval, edges);
foreach (Line c in lines)
{
List<XYZ> pointsOnLine = new List<XYZ>();
var m = (int)Math.Floor(c.Length / interval);
for (int i = 1; i <= m; i++)
{
var p = c.Evaluate(i / (m + 1.0), true);
pointsOnLine.Add(p);
}
pointsOnLine.Add(c.GetEndPoint(0));
pointsOnLine.Add(c.GetEndPoint(1));
pointsOnLines.Add(pointsOnLine);
}
var frameSymbol = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralFraming).Cast<FamilySymbol>().Where(s => s.Name.Contains("250*500")).FirstOrDefault();
if (!frameSymbol.IsActive)
{
frameSymbol.Activate();
}
foreach (var pointsOnLine in pointsOnLines)
{
for (int i = 0; i < pointsOnLine.Count - 1; i++)
{
Line line = Line.CreateBound(pointsOnLine[i], pointsOnLine[i + 1]);
doc.Create.NewFamilyInstance(line, frameSymbol, doc.ActiveView.GenLevel, Autodesk.Revit.DB.Structure.StructuralType.Beam);
}
}
}
/// <summary>
///创建柱和基础
/// </summary>
/// <param name="doc"></param>
/// <param name="edges">边界</param>
/// <param name="interval">间距</param>
private void CreateColumnAndFoundation(Document doc, IList<Curve> edges, double interval)
{
List<XYZ> pointColumnFoundation = new List<XYZ>();
var columnSymbol = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralColumns).Cast<FamilySymbol>().Where(cs => cs.FamilyName.Contains("方形")).FirstOrDefault();
var foundationSymbol = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralFoundation).Cast<FamilySymbol>().FirstOrDefault();
if (!columnSymbol.IsActive)
{
columnSymbol.Activate();
}
if (!foundationSymbol.IsActive)
{
foundationSymbol.Activate();
}
var lines = CreateGridLine(interval, edges).Cast<Line>().Where(l => l.Direction.Normalize().IsAlmostEqualTo(XYZ.BasisY) || l.Direction.Normalize().IsAlmostEqualTo(-XYZ.BasisY));
//var lines = CreateGridLine(intervalColumn, curves).Where(l => l.Direction.Normalize().IsAlmostEqualTo(XYZ.BasisX) || l.Direction.Normalize().IsAlmostEqualTo(-XYZ.BasisX));
//var lines = CreateGridLine(intervalColumn, curves);
//foreach (var l in lines)
//{
// doc.Create.NewModelCurve(l, SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero)));
//}
foreach (Line c in lines)
{
var m = (int)Math.Floor(c.Length / interval);
for (int i = 1; i <= m; i++)
{
var p = c.Evaluate(i / (m + 1.0), true);
pointColumnFoundation.Add(p);
}
pointColumnFoundation.Add(c.GetEndPoint(0));
pointColumnFoundation.Add(c.GetEndPoint(1));
}
foreach (var p in pointColumnFoundation)
{
doc.Create.NewFamilyInstance(p, columnSymbol, doc.ActiveView.GenLevel, Autodesk.Revit.DB.Structure.StructuralType.Column);
}
foreach (var p in pointColumnFoundation)
{
var pt = p - XYZ.BasisZ * 450 / 304.8;
doc.Create.NewFamilyInstance(pt, foundationSymbol, doc.ActiveView.GenLevel, Autodesk.Revit.DB.Structure.StructuralType.Footing);
}
}
/// <summary>
/// 创建网格线
/// </summary>
/// <param name="maxCellSize"></param>
/// <param name="edges"></param>
/// <returns></returns>
private List<Curve> CreateGridLine(double maxCellSize, IList<Curve> edges)
{
var pointsOnLines = new List<List<XYZ>>();
var gridLines = new List<Curve>();
gridLines.AddRange(edges);
//将边界线按跨数分割,
foreach (Curve c in edges)
{
pointsOnLines.Add(PointsOnCurve(c, maxCellSize));
}
if (pointsOnLines.Count == 2)
{
var li1 = pointsOnLines[0];//水平下
var li2 = pointsOnLines[1];//水平上
for (int i = 0; i < li1.Count; i++)
{
var line = Line.CreateBound(li1[i], li2[i]);
gridLines.Add(line);
}
}
else if (pointsOnLines.Count == 4)
{
var li1 = pointsOnLines[0];//水平下
var li3 = pointsOnLines[2];//水平上
var li2 = pointsOnLines[1];//垂直右
var li4 = pointsOnLines[3];//垂直左
for (int i = 0; i < li1.Count; i++)
{
var line = Line.CreateBound(li1[i], li3[i]);
gridLines.Add(line);
}
for (int i = 0; i < li2.Count; i++)
{
var line = Line.CreateBound(li2[i], li4[i]);
gridLines.Add(line);
}
}
return gridLines;
}
private List<XYZ> PointsOnCurve(Curve c, double maxCellSize)
{
List<XYZ> ordered = new List<XYZ>();
var m = (int)Math.Floor(c.Length / maxCellSize);
if (m > 0)
{
List<XYZ> pts = new List<XYZ>();
for (int i = 1; i <= m; i++)
{
var p = c.Evaluate(i / (m + 1.0), true);
pts.Add(p);
}
ordered = pts.OrderBy(p => p.X).ThenBy(p => p.Y).ToList();
}
return ordered;
}
private int GetSegmentCount(Curve curve)
{
double interval = 10000 / 304.8;
double l = curve.Length;
if (l < interval)
{
return 1;
}
else if (l >= interval && l < 2 * interval)
{
return 2;
}
else if (l >= 2 * interval && l < 3 * interval)
{
return 3;
}
else
{
return 0;
}
}
}
}

View File

@@ -0,0 +1,63 @@
<Window
x:Class="RookieStation.Construction.Views.WpfAutoModeling"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:RookieStation.Construction.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="161"
Height="103"
MinWidth="300"
MinHeight="180">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml" />
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1.5*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox
Grid.Row="0"
Grid.Column="0"
Header="长度(mm)">
<TextBox
x:Name="tbLength"
InputMethod.IsInputMethodEnabled="False"
PreviewTextInput="tb_PreviewTextInput"
Text="15000"
TextAlignment="Center" />
</GroupBox>
<GroupBox
Grid.Row="0"
Grid.Column="1"
VerticalContentAlignment="Center"
Header="宽度(mm)">
<TextBox
x:Name="tbWidth"
InputMethod.IsInputMethodEnabled="False"
PreviewTextInput="tb_PreviewTextInput"
Text="8000"
TextAlignment="Center" />
</GroupBox>
<Button
x:Name="btnConfirm"
Grid.Row="1"
Grid.Column="1"
Width="74"
Height="30"
HorizontalAlignment="Center"
Click="btnConfirm_Click"
Content="确定" />
</Grid>
</Window>

View File

@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace RookieStation.Construction.Views
{
/// <summary>
/// WpfAutoModeling.xaml 的交互逻辑
/// </summary>
public partial class WpfAutoModeling
{
public double Length { get; set; }
public double Width { get; set; }
public WpfAutoModeling()
{
InitializeComponent();
}
private void btnConfirm_Click(object sender, RoutedEventArgs e)
{
Length = Convert.ToDouble(tbLength.Text.Trim());
Width = Convert.ToDouble(tbWidth.Text.Trim());
DialogResult = true;
}
private void tb_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("[^0-9]+");
e.Handled = re.IsMatch(e.Text);
}
}
}

View File

@@ -89,8 +89,21 @@ namespace RookieStation.Drawing.ExecuteCmds
//遍历每个族类型
foreach (var instancesBySymbol in symbolGroups)
{
//var instance = instancesBySymbol.ElementAt(0);
dynamic datarow = new { FamilyName = instanceByFamily.Key, SymbolName = instancesBySymbol.Key, Count = instancesBySymbol.Count().ToString() };
var instance = instancesBySymbol.ElementAt(0);
var n = instancesBySymbol.Count();
if (instance.Symbol.FamilyName.Contains("货架"))
{
foreach (var fi in instancesBySymbol)
{
var jdStr = fi.get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).AsString();
if (jdStr != null)
n -= 1;
}
}
if (true)
{
}
dynamic datarow = new { FamilyName = instanceByFamily.Key, SymbolName = instancesBySymbol.Key, Count = n.ToString() };
data.Add(datarow);
}

View File

@@ -79,12 +79,12 @@ namespace RookieStation.Drawing.ExecuteCmds
private List<string> GetData(Document doc)
{
var shelves = new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Furniture).Cast<FamilyInstance>().Where(s => s.Symbol.FamilyName.Contains("货架"));
var rooms = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).Cast<Room>();
var rooms = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).Cast<Room>().Where(rm => rm.Area > 0);
double area = 0.0;
double orders = 0;
if (rooms.Count() == 0)
{
TaskDialog.Show("温馨提示", "未发现房间");
TaskDialog.Show("提醒", "未发现已布置的房间");
}
foreach (var room in rooms)
{
@@ -98,7 +98,16 @@ namespace RookieStation.Drawing.ExecuteCmds
var instance = group.ElementAt(0);
//当前分组货架的长度
var l = instance.Symbol.GetParameters("长度").FirstOrDefault().AsValueString();
orders += group.Count() * Convert.ToInt16(l) / 1000.0 * 80.0;
foreach (var fi in group)
{
var jdStr = fi.get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).AsString();
if (jdStr == null)
orders += Convert.ToInt16(l) / 1000.0 * 80.0;
//if (!jdStr.Contains("京东") && !jdStr.Contains("顺丰") && !jdStr.Contains("JD") && !jdStr.Contains("SF"))
//{
// continue;
//}
}
}
statistics.Add(orders.ToString());
statistics.Add(UserConstant.Orders.ToString());

View File

@@ -74,7 +74,7 @@ namespace RookieStation.Drawing.ExecuteCmds
private List<LightingDevices> GetData(Document doc, ElementId viewId)
{
ElementCategoryFilter filter1 = new ElementCategoryFilter(BuiltInCategory.OST_CommunicationDevices);
ElementCategoryFilter filter1 = new ElementCategoryFilter(BuiltInCategory.OST_DataDevices);
ElementCategoryFilter filter2 = new ElementCategoryFilter(BuiltInCategory.OST_ElectricalFixtures);
LogicalOrFilter logicalOrFilter = new LogicalOrFilter(filter1, filter2);
var sockets = new FilteredElementCollector(doc, viewId).OfClass(typeof(FamilyInstance)).WherePasses(logicalOrFilter).Cast<FamilyInstance>();

View File

@@ -139,14 +139,14 @@ namespace RookieStation.MailingAreaModule.ExecuteCmds
List<ElementId> wallIds = new List<ElementId>();
WallType fireRetardantBoard = RsRevitUtils.GetWallTypeByName(doc, "阻燃板");
WallType greyEmulsionPaint = RsRevitUtils.GetWallTypeByName(doc, "灰色乳胶漆");
WallType aluminumPlasticPanel = RsRevitUtils.GetWallTypeByName(doc, "铝塑板");
WallType skirtingLine = RsRevitUtils.GetWallTypeByName(doc, "踢脚线");
WallType aluminumPlasticPanel = RsRevitUtils.GetWallTypeByName(doc, "白色铝单板");
WallType skirtingLine = RsRevitUtils.GetWallTypeByName(doc, "黑钛不锈钢");
//铝塑板块数
int n = (int)Math.Floor(referline.Length / interval);
double rem = referline.Length % (gap + aluminumPlasticPanelLength);
if (fireRetardantBoard == null || aluminumPlasticPanel == null || skirtingLine == null || greyEmulsionPaint == null)
{
TaskDialog.Show("温馨提示", "需要新建装饰所需的墙类型,类型名称需分别包含阻燃板,灰色乳胶漆,铝塑板,踢脚线");
TaskDialog.Show("温馨提示", "需要新建装饰所需的墙类型,类型名称需分别包含阻燃板,灰色乳胶漆,白色铝单板,黑钛不锈钢踢脚线");
return Result.Failed;
}
fireRetardantBoardWidth = fireRetardantBoard.Width;
@@ -206,7 +206,7 @@ namespace RookieStation.MailingAreaModule.ExecuteCmds
}
}, "背景墙创建");
CreateCaiNiaoDuty(doc, skirtingLineHeight + aluminumPlasticPanelHeight, greyEmulsionPaintWidth + fireRetardantBoardWidth, referline);
CreateCaiNiaoDuty(doc, skirtingLineHeight + aluminumPlasticPanelHeight, greyEmulsionPaintWidth, referline);
double receptionLength = referline.Length / 3 * 2;

View File

@@ -72,7 +72,7 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
}
Line line = RsRevitUtils.GetGuideGeometryAndDeleteGuide(doc, eleIdsAdded);
double interval = (330 + entranceGateLayout.PassageWidth) / 304.8;
double interval = (230 + entranceGateLayout.PassageWidth) / 304.8;
double offest = 0.0;
//布置闸机的数量
List<XYZ> pts = GetInstancePointsByLine(line, interval);
@@ -80,11 +80,16 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
doc.Invoke(ts =>
{
CreateGates(uidoc, pts, out instances, out offest);
}, "创建闸机位置");
}, "创建闸机");
doc.Invoke(ts =>
{
RsRevitUtils.AdjustInstances(doc, instances, line, offest);
}, "调整闸机位置");
foreach (var instance in instances)
{
instance.GetParameters("前").FirstOrDefault().Set(1);
instance.GetParameters("后").FirstOrDefault().Set(0);
}
}, "调整闸机");
}
return Result.Succeeded;
}, "布置入口闸机");

View File

@@ -17,7 +17,7 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
/// <summary>
/// 是否起始为通道
/// </summary>
internal bool isPassageStart;
internal bool StartWithPassage;
internal double PassageWidth;
@@ -47,14 +47,14 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
if (gateLayout.DialogResult == true)
{
isPassageStart = gateLayout.IsStartPassage;
StartWithPassage = gateLayout.StartWithPassage;
PassageWidth = gateLayout.PassageWidth;
}
else
{
return Result.Cancelled;
}
double interval = (1030 + PassageWidth + 50);
double interval = 630 + PassageWidth;
List<FamilyInstance> instances = new List<FamilyInstance>();
FamilySymbol guideSymbol = RsRevitUtils.GetGuideSymbol(doc); ;
if (guideSymbol == null)
@@ -65,13 +65,12 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
}
int orders = UserConstant.Orders;
int n = GetGateCountByOrders(orders);//根据单量得到收检台数量
if (orders.Equals(0) || n == 0)
if (orders <= 0)
{
message = "单量有误";
//TaskDialog.Show("温馨提示", "单量有误");
return Result.Failed;
}
return doc.InvokeGroup<Result>(tg =>
return doc.InvokeGroup(tg =>
{
try
{
@@ -85,12 +84,12 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
uiapp.Application.DocumentChanged -= Application_DocumentChanged;
if (eleIdsAdded.Count == 0)
{
return Result.Cancelled;
return Result.Failed;
}
//直线向量
Line referline = RsRevitUtils.GetGuideGeometryAndDeleteGuide(doc, eleIdsAdded);
int m = (int)Math.Floor((referline.Length * 304.8 / (PassageWidth + 1030 + 50)) + 0.5);
int m = (int)Math.Floor((referline.Length * 304.8 / interval) + 0.5);
if (m < n)//如果实际场地设置的数量无法满足单量要求,按实际场地设置
{
@@ -98,6 +97,108 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
}
List<XYZ> locationPoint = new List<XYZ>();
doc.Invoke(ts =>
{
Family checkDesk = RsRevitUtils.GetLoadedFamily(doc, "收检台-I型");
var symbolId = checkDesk.GetFamilySymbolIds().FirstOrDefault();
FamilySymbol symbol = doc.GetElement(symbolId) as FamilySymbol;
if (symbol == null)
symbol.Activate();
Level level = uidoc.ActiveView.GenLevel;
if (level == null)
{
return;
}
if (StartWithPassage)//起始是通道
{
for (int i = 0; i < n; i++)
{
double parameter = (interval * (i + 0.5 * (1 + Math.Pow(-1, i)))) / 304.8;
XYZ p = referline.Evaluate(parameter, false);
locationPoint.Add(p);
}
for (int i = 0; i < locationPoint.Count; i++)
{
var point = locationPoint[i];
if (i % 2 == 0)
{
FamilyInstance rightInstance = doc.Create.NewFamilyInstance(point, symbol, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
if (rightInstance.CanFlipHand)
{
rightInstance.flipHand();
var param = rightInstance.GetParameters("镜像字").FirstOrDefault();
if (param.IsReadOnly)
{
rightInstance.GetParameters("正向字").FirstOrDefault().Set(0);
}
}
instances.Add(rightInstance);
}
else
{
FamilyInstance leftInstance = doc.Create.NewFamilyInstance(point, symbol, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
instances.Add(leftInstance);
}
}
//doc.Delete(instances.First().Id);
//instances.RemoveAt(0);
}
else//起始是收检台
{
for (int i = 0; i < n; i++)
{
double parameter = (interval * (i + 0.5 * Math.Pow(-1, i))) / 304.8;
XYZ p = referline.Evaluate(parameter, false);
locationPoint.Add(p);
}
for (int i = 0; i < locationPoint.Count; i++)
{
var point = locationPoint[i];
if (i % 2 == 0)
{
FamilyInstance leftInstance = doc.Create.NewFamilyInstance(point, symbol, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
if (leftInstance.CanFlipHand)
{
leftInstance.flipHand();
var param = leftInstance.GetParameters("镜像字").FirstOrDefault();
if (param.IsReadOnly)
{
leftInstance.GetParameters("正向字").FirstOrDefault().Set(0);
}
}
instances.Add(leftInstance);
}
else
{
FamilyInstance rightInstance = doc.Create.NewFamilyInstance(point, symbol, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
instances.Add(rightInstance);
}
}
}
//OldMethod(uidoc, interval, instances, n, referline, locationPoint);
//if (tg.GetStatus() == TransactionStatus.Started)
//{
// tg.RollBack();
//}
//return Result.Cancelled;
}, "创建并布置收检台");
doc.Invoke(ts =>
{
RsRevitUtils.AdjustInstances(doc, instances, referline, 1630 / 2 / 304.8);
}, "调整收检台位置");
}
return Result.Succeeded;
}, "布置收检台");
}
[Obsolete]
private void OldMethod(UIDocument uidoc, double interval, List<FamilyInstance> instances, int n, Line referline, List<XYZ> locationPoint)
{
Document doc = uidoc.Document;
doc.Invoke(ts =>
{
Family gateFamily = RsRevitUtils.GetLoadedFamily(doc, UserConstant.FamilyLibraryDirectory + "出入口\\收检台-左.rfa");
IEnumerable<ElementId> leftSymbolId = from id in gateFamily.GetFamilySymbolIds()
@@ -114,7 +215,7 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
{
return;
}
if (isPassageStart)//起始是通道
if (StartWithPassage)//起始是通道
{
for (int i = 0; i < n; i++)
{
@@ -173,16 +274,6 @@ namespace RookieStation.ParcelAreaModule.ExecuteCmds
{
RsRevitUtils.AdjustInstances(doc, instances, referline, 0);
}, "调整收检台位置");
//if (tg.GetStatus() == TransactionStatus.Started)
//{
// tg.RollBack();
//}
//return Result.Cancelled;
}
return Result.Succeeded;
}, "布置收检台");
}
private int GetGateCountByOrders(int orders)

View File

@@ -35,6 +35,6 @@ namespace RookieStation.ParcelAreaModule.Models
}
}
public string SymbolName => $"{CommonUtils.GetEnumDescription(ShelfLength)}mmx{CommonUtils.GetEnumDescription(ShelfWidth)}mm";
public string SymbolName => $"{CommonUtils.GetEnumDescription(ShelfLength)}*{CommonUtils.GetEnumDescription(ShelfWidth)}mm";
}
}

View File

@@ -21,7 +21,7 @@ namespace RookieStation.ParcelAreaModule.Views
/// </summary>
public partial class WpfExitGate
{
public bool IsStartPassage { get; set; }
public bool StartWithPassage { get; set; }
public double PassageWidth { get; set; }
@@ -37,11 +37,11 @@ namespace RookieStation.ParcelAreaModule.Views
PassageWidth = passageWidth;
if (rbStartPassage.IsChecked == true)
{
IsStartPassage = true;
StartWithPassage = true;
}
else if (rbStartInspection.IsChecked == true)
{
IsStartPassage = false;
StartWithPassage = false;
}
if (a)
{

View File

@@ -60,6 +60,16 @@ namespace RookieStation.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Architect {
get {
object obj = ResourceManager.GetObject("Architect", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>

View File

@@ -118,6 +118,9 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Architect" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Architect.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AutoArrangeTags" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ArrangeTags.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

View File

@@ -102,6 +102,10 @@
<Compile Include="CommonTools\Views\ProgressMonitorView.xaml.cs">
<DependentUpon>ProgressMonitorView.xaml</DependentUpon>
</Compile>
<Compile Include="Construction\ExecuteCmd\AutoGenerateModels.cs" />
<Compile Include="Construction\Views\WpfAutoModeling.xaml.cs">
<DependentUpon>WpfAutoModeling.xaml</DependentUpon>
</Compile>
<Compile Include="Drawing\ExecuteCmds\ManualAlignTags.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateGroundPavingLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateLightLegend.cs" />
@@ -122,6 +126,7 @@
<Compile Include="Drawing\Views\WpfLegendCreator.xaml.cs">
<DependentUpon>WpfLegendCreator.xaml</DependentUpon>
</Compile>
<Compile Include="ScheduleTools\ExecuteCmds\ReorderingNumber.cs" />
<Compile Include="Statistics\ExecuteCmds\CmdExportOrderQuantity.cs" />
<Compile Include="Statistics\ExecuteCmds\CmdExportWorkSchedule.cs" />
<Compile Include="Finishes\ExecuteCmds\CmdPlaceFloorFinishes.cs" />
@@ -238,6 +243,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Construction\Views\WpfAutoModeling.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Drawing\Views\WpfLegendCreator.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -296,6 +305,7 @@
<None Include="Resources\GroundLegend.png" />
<None Include="Resources\FurnitureLegend.png" />
<None Include="Resources\ArrangeTags.png" />
<None Include="Resources\Architect.png" />
<Content Include="Resources\LogoExtrusion.png" />
<None Include="Resources\ViewPlanDim.png" />
<None Include="Resources\ViewSectionDim.png" />
@@ -480,6 +490,7 @@
<Content Include="Resources\Shelf.png" />
<Content Include="Resources\ShelfCard.png" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.114.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.114.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View File

@@ -15,6 +15,7 @@ using System.Windows.Interop;
using System.Windows.Media.Imaging;
using RookieStation.Drawing.ExecuteCmds;
using System.Reflection;
using RookieStation.Construction.ExecuteCmd;
namespace RookieStation.RibbonMenu
{
@@ -97,6 +98,7 @@ namespace RookieStation.RibbonMenu
RibbonPanel projectPanel = application.CreateRibbonPanel(TabName, ProjectSettingsPanelName);
NewPushButtonData<CmdProjectSettings>(projectPanel, "项目设置", Properties.Resources.cainiao, null);
NewPushButtonData<AutoGenerateModels>(projectPanel, "创建模型", Properties.Resources.Architect, null);
//前台布置
RibbonPanel receptionAreaPanel = application.CreateRibbonPanel(TabName, ReceptionPanelName);

View File

@@ -0,0 +1,63 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using RookieStation.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.ScheduleTools.ExecuteCmds
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class ReorderingNumber : 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;
Document doc = uidoc.Document;
var view = doc.ActiveView as ViewSchedule;
if (view == null)
{
message = "请打开明细表视图";
return Result.Failed;
}
try
{
doc.Invoke(ts =>
{
TableData tableData = view.GetTableData();
TableSectionData tableSectionData = tableData.GetSectionData(SectionType.Body);
int numberOfColumns = tableSectionData.NumberOfColumns;
int numberOfRows = tableSectionData.NumberOfRows;
for (int i = 1; i < numberOfRows; i++)
{
var content = view.GetCellText(SectionType.Body, i, 0);
//var content = i + 1;
//var celltype = tableSectionData.GetCellType(i);
var paramId = tableSectionData.GetCellParamId(i, 0);
var paramEle = doc.GetElement(paramId) as ParameterElement;
var definit = paramEle.GetDefinition();
var cate = tableSectionData.GetCellCategoryId(i, 0).IntegerValue;
var cateEle = (BuiltInCategory)cate;
//if (param != null)
//{
// param.Set($"0{i}");
//}
//tableSectionData.SetCellText(i, 0, content.ToString());
}
}, "图纸排序");
}
catch (Exception)
{
throw;
}
return Result.Succeeded;
}
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -28,13 +28,13 @@
"Entry"
{
"MsmKey" = "8:_0B9FEB12CF079BDF1FD36BC23BAD2B36"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B9FEB12CF079BDF1FD36BC23BAD2B36"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -76,13 +76,13 @@
"Entry"
{
"MsmKey" = "8:_24527FE9429AA075502970126305C23D"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_24527FE9429AA075502970126305C23D"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -184,13 +184,13 @@
"Entry"
{
"MsmKey" = "8:_5B037BA4394F5E865D151F734EC85F4D"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_5B037BA4394F5E865D151F734EC85F4D"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -231,6 +231,12 @@
}
"Entry"
{
"MsmKey" = "8:_6C88567189D9433AAE8A4A6CCB8722D3"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_6EC43FCDF6B045CFBC5FA294D862A2BF"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -280,13 +286,13 @@
"Entry"
{
"MsmKey" = "8:_87B3C6ABBC8FF8A77BFE903B40AF6691"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_87B3C6ABBC8FF8A77BFE903B40AF6691"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -358,13 +364,13 @@
"Entry"
{
"MsmKey" = "8:_B460A3FDDC6885A3B443341CFA25EEA2"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_B460A3FDDC6885A3B443341CFA25EEA2"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -376,13 +382,13 @@
"Entry"
{
"MsmKey" = "8:_B65AD99782EE5D59821FCD856470C306"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_B65AD99782EE5D59821FCD856470C306"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -519,13 +525,7 @@
}
"Entry"
{
"MsmKey" = "8:_E599F8C758BA4251BBEE7ED354B5902B"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_F3DBE5F365DC458EBC7E4BD1CFCF285D"
"MsmKey" = "8:_E5F481EEE0324F3CBEAB806F62C939E4"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
@@ -544,18 +544,6 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_F3DBE5F365DC458EBC7E4BD1CFCF285D"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_FBE461B9D4BD4603919E2821D88FB7CB"
"MsmSig" = "8:_UNDEFINED"
}
@@ -568,6 +556,36 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_E26E0990C8FE2CD4B9BDF57F61611379"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_7CA1C332699FD9CD43194849BF997D08"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_94D83AC6917400F3B63679A37661FBFB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_CECC41044D30CA62AB3DE090794D73D6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_106061D90DD7421EAB1EE10373608018"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_24527FE9429AA075502970126305C23D"
"MsmSig" = "8:_UNDEFINED"
}
@@ -601,30 +619,6 @@
"OwnerKey" = "8:_B65AD99782EE5D59821FCD856470C306"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_E26E0990C8FE2CD4B9BDF57F61611379"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_7CA1C332699FD9CD43194849BF997D08"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_94D83AC6917400F3B63679A37661FBFB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_CECC41044D30CA62AB3DE090794D73D6"
"MsmSig" = "8:_UNDEFINED"
}
}
"Configurations"
{
@@ -1358,6 +1352,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6C88567189D9433AAE8A4A6CCB8722D3"
{
"SourcePath" = "8:C:\\Windows\\System32\\msiexec.exe"
"TargetName" = "8:msiexec.exe"
"Tag" = "8:"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"
"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}:_6EC43FCDF6B045CFBC5FA294D862A2BF"
{
"SourcePath" = "8:..\\RookieStation\\bin\\Release\\RsLibrary\\MainMaterials\\深灰色铝塑板.jpg"
@@ -2215,7 +2229,7 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E599F8C758BA4251BBEE7ED354B5902B"
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E5F481EEE0324F3CBEAB806F62C939E4"
{
"SourcePath" = "8:..\\RookieStation\\bin\\Release\\RookieStation.addin"
"TargetName" = "8:RookieStation.addin"
@@ -2235,37 +2249,6 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F3DBE5F365DC458EBC7E4BD1CFCF285D"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:System.Data.SQLite, Version=1.0.114.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_F3DBE5F365DC458EBC7E4BD1CFCF285D"
{
"Name" = "8:System.Data.SQLite.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:..\\RookieStation\\bin\\Release\\System.Data.SQLite.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"
"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}:_FD27823B3253486DB7BBB13FEC35052D"
{
"SourcePath" = "8:..\\RookieStation\\bin\\Release\\x64\\SQLite.Interop.dll"
@@ -2419,15 +2402,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:菜鸟驿站工具集"
"ProductCode" = "8:{789EEB9E-5B29-48C2-AED4-DC3316DCB077}"
"PackageCode" = "8:{F03E1AC5-0240-40FA-AE63-1C30A5CD109C}"
"ProductCode" = "8:{A89A1A7A-C158-48AC-B2F8-9E58AB3803EF}"
"PackageCode" = "8:{5A91900E-60D4-4058-8F1E-381AE6BA4ED0}"
"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.10"
"ProductVersion" = "8:1.0.12"
"Manufacturer" = "8:YTX Engineering"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
@@ -2540,6 +2523,20 @@
}
"Shortcut"
{
"{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_0F6F0CD8E9534897961D2D2EC23FE4DC"
{
"Name" = "8:卸载.exe"
"Arguments" = "8:/x [ProductCode]"
"Description" = "8:"
"ShowCmd" = "3:1"
"IconIndex" = "3:0"
"Transitive" = "11:FALSE"
"Target" = "8:_6C88567189D9433AAE8A4A6CCB8722D3"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"
"WorkingFolder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"
"Icon" = "8:"
"Feature" = "8:"
}
}
"UserInterface"
{
@@ -2884,10 +2881,10 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_106061D90DD7421EAB1EE10373608018"
{
"SourcePath" = "8:..\\AddinDeployer\\obj\\Debug\\AddinDeployer.dll"
"SourcePath" = "8:..\\AddinDeployer\\obj\\Release\\AddinDeployer.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_555D26C37F1F4B01A2364FA002C8BF5A"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
@@ -2912,7 +2909,7 @@
}
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBE461B9D4BD4603919E2821D88FB7CB"
{
"SourcePath" = "8:..\\RookieStation\\obj\\Debug\\RookieStation.dll"
"SourcePath" = "8:..\\RookieStation\\obj\\Release\\RookieStation.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"