重命名,明细表更新

This commit is contained in:
GG Z
2021-12-07 11:25:05 +08:00
parent db86c8dc6f
commit 08773ad4ae
43 changed files with 526 additions and 217 deletions

View File

@@ -5,14 +5,10 @@ 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;
using System.Windows.Forms.VisualStyles;
using System.Windows.Controls;
namespace RookieStation.Construction.ExecuteCmd
{
@@ -31,8 +27,8 @@ namespace RookieStation.Construction.ExecuteCmd
WpfAutoModeling settings = CommonUtils.ShowDialog<WpfAutoModeling>();
if (settings.DialogResult == true)
{
length = settings.Length / 304.8;
width = settings.Width / 304.8;
length = settings.mLength / 304.8;
width = settings.mWidth / 304.8;
}
else
{
@@ -42,8 +38,8 @@ namespace RookieStation.Construction.ExecuteCmd
var pointsCorner = new List<XYZ>();
//边界
IList<Curve> edges = new List<Curve>();
var p1 = uidoc.Selection.PickPoint(ObjectSnapTypes.Endpoints, "请选择定位点");
var p1 = new XYZ(-length / 2, -width / 2, 0);
//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);
@@ -72,22 +68,34 @@ namespace RookieStation.Construction.ExecuteCmd
{
doc.InvokeGroup(tg =>
{
doc.Invoke(ts =>
{
CreateGrids(doc, edges);
}, "创建轴网");
doc.Invoke(ts =>
{
//边界组
CreateFloor(doc, edges);
});
}, "创建楼板");
doc.Invoke(ts =>
{
CreateColumnAndFoundation(doc, edges, interval);
}, "创建基础和柱");
doc.Invoke(ts =>
{
CreateFramings(doc, edges, interval);
}, "创建地梁");
double horizontalOffest = 150 / 304.8;
CreateFramings(doc, edges, horizontalOffest, interval);
CreateOuterWallList(doc, loop, horizontalOffest);
}, "创建地梁,外墙");
doc.Invoke(ts =>
{
var roof = CreateRoof(doc, loop, 125 / 304.8, 160 / 304.8);
double distance = 1300 / 304.8;
double bottomOffest = 180 / 304.8;
double outerOffest = 125 / 304.8;
var roof = CreateRoof(doc, loop, outerOffest, bottomOffest);
var slope = roof.get_Parameter(BuiltInParameter.ROOF_SLOPE).AsDouble();
//var h = roof.get_Parameter(BuiltInParameter.ACTUAL_MAX_RIDGE_HEIGHT_PARAM).AsDouble();
CreateTopFramings(doc, edges, slope, distance, 4000 / 304.8);
#region MyRegion
@@ -122,33 +130,167 @@ namespace RookieStation.Construction.ExecuteCmd
//}
#endregion MyRegion
}, "创建屋面");
}, "创建顶部构造");
doc.Invoke(ts =>
{
CreateGutter(doc, loop, 100.0 / 304.8, 180 / 304.8);
}, "创建檐沟");
var walllist = new List<Wall>();
doc.Invoke(ts =>
{
CreateOuterWallList(doc, loop, 200 / 304.8);
});
doc.Invoke(ts =>
{
CreatePWallList(doc, loop, 400 / 304.8, 0.0);
walllist = CreateAluminumPlastic(doc, loop, 400 / 304.8, 0.0);
}, "创建铝塑板");
doc.Invoke(ts =>
{
var wallSweepType = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Reveals).WhereElementIsElementType().Where(w => w.Name.Contains("3mm")).FirstOrDefault();
var wallsweepsId = new List<ElementId>();
foreach (var wall in walllist)
{
if (wall != null)
{
var line = RsRevitUtils.GetLocationCurveByElement(wall);
var n = (int)Math.Floor(line.Length / (2440 / 304.8));
for (int i = 0; i < n; i++)
{
WallSweepInfo info = new WallSweepInfo(WallSweepType.Reveal, true)
{
Distance = i * 2440 / 304.8,
WallSide = WallSide.Exterior,
DistanceMeasuredFrom = DistanceMeasuredFrom.Base,
};
if (WallSweep.WallAllowsWallSweep(wall))
{
var wallsweep = WallSweep.Create(wall, wallSweepType.Id, info);
}
}
}
};
}, "创建分隔条");
}, "自动创建模型");
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
return Result.Cancelled;
}
catch (Exception e)
catch (Exception)
{
throw;
//System.Windows.Forms.MessageBox.Show(e.InnerException.ToString());
}
return Result.Succeeded;
}
public void CreateGrids(Document doc, IList<Curve> edges)
{
var horizontalLines = from l in edges
where Math.Abs((l as Line).Direction.DotProduct(XYZ.BasisY)) < Math.Pow(10, -14)
select l;
var horizontalOrderedLines = horizontalLines.OrderBy(l => l.GetEndPoint(0).Y);
var verticalLines = from l in edges
where Math.Abs((l as Line).Direction.DotProduct(XYZ.BasisX)) < Math.Pow(10, -14)
select l;
var verticalOrderedLines = verticalLines.OrderBy(l => l.GetEndPoint(0).X);
for (int i = 0; i < horizontalOrderedLines.Count(); i++)//水平轴网
{
var horizontalLine = horizontalOrderedLines.ElementAt(i);
XYZ sp = horizontalLine.GetEndPoint(0) - (horizontalLine as Line).Direction * 10;
XYZ ep = horizontalLine.GetEndPoint(1) + (horizontalLine as Line).Direction * 10;
Line line = Line.CreateBound(sp, ep);
if (line.Direction.X < 0 || line.Direction.Y < 0)
{
line = line.CreateReversed() as Line;
}
var grid = Autodesk.Revit.DB.Grid.Create(doc, line);
grid.Name = ((char)(i + 65)).ToString();
}
for (int i = 0; (i < verticalOrderedLines.Count()); i++) //垂直轴网
{
var verticalLine = verticalOrderedLines.ElementAt(i);
XYZ sp = verticalLine.GetEndPoint(0) - (verticalLine as Line).Direction * 10;
XYZ ep = verticalLine.GetEndPoint(1) + (verticalLine as Line).Direction * 10;
Line line = Line.CreateBound(sp, ep);
if (line.Direction.X < 0 || line.Direction.Y < 0)
{
line = line.CreateReversed() as Line;
}
var grid = Autodesk.Revit.DB.Grid.Create(doc, line);
grid.Name = (i + 1).ToString();
}
}
/// <summary>
/// 顶部工字钢
/// </summary>
/// <param name="doc"></param>
/// <param name="edges"></param>
/// <param name="slope">屋面坡度</param>
/// <param name="wdithInterval"></param>
/// <param name="wdithInterval"></param>
/// <exception cref="NotImplementedException"></exception>
private void CreateTopFramings(Document doc, IList<Curve> edges, double slope, double wdithInterval, double lengthInterval)
{
Level topLevel = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).OrderBy(l => l.Elevation).FirstOrDefault();
var frameSymbol = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralFraming).Cast<FamilySymbol>().Where(s => s.Name.Contains("C16a")).FirstOrDefault();
var frameSymbol1 = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_StructuralFraming).Cast<FamilySymbol>().Where(s => s.Name.Contains("HN250x125x6x9")).FirstOrDefault();
Curve curve = edges.First();
double width = edges.First().Length;
double length = edges.Last().Length;
var h = slope * width / 2;
var startpoint = curve.GetEndPoint(0) + topLevel.Elevation * XYZ.BasisZ;
var endpoint = curve.GetEndPoint(1) + topLevel.Elevation * XYZ.BasisZ;
XYZ centerpoint = curve.Evaluate(0.5, true) + (h + topLevel.Elevation) * XYZ.BasisZ;
Line l1 = Line.CreateBound(startpoint, centerpoint);
Line l2 = Line.CreateBound(endpoint, centerpoint);
double n = 100;
var lines = new List<Line>();
lines.Add(Line.CreateBound(startpoint, startpoint + length * XYZ.BasisX));
lines.Add(Line.CreateBound(endpoint, endpoint + length * XYZ.BasisX));
//工字钢
for (int i = 1; i < n; i++)
{
var parameter = i * wdithInterval;
//if (parameter <= l1.Length)
if (l1.IsInside(parameter))
{
var p1 = l1.Evaluate(parameter, false);
Line l = Line.CreateBound(p1, p1 + XYZ.BasisX * length);
var line = l.CreateTransformed(Transform.CreateTranslation(XYZ.BasisZ * 200 / 304.8));
var beam = doc.Create.NewFamilyInstance(line, frameSymbol, topLevel, Autodesk.Revit.DB.Structure.StructuralType.Beam);
beam.get_Parameter(BuiltInParameter.INSTANCE_REFERENCE_LEVEL_PARAM).Set(topLevel.Id);
beam.get_Parameter(BuiltInParameter.STRUCTURAL_BEND_DIR_ANGLE).Set(-slope);
}
if (l2.IsInside(parameter))
{
var p1 = l2.Evaluate(parameter, false);
Line l = Line.CreateBound(p1, p1 + XYZ.BasisX * length);
var line = l.CreateTransformed(Transform.CreateTranslation(XYZ.BasisZ * 200 / 304.8));
var beam = doc.Create.NewFamilyInstance(line, frameSymbol, topLevel, Autodesk.Revit.DB.Structure.StructuralType.Beam);
beam.get_Parameter(BuiltInParameter.INSTANCE_REFERENCE_LEVEL_PARAM).Set(topLevel.Id);
beam.get_Parameter(BuiltInParameter.STRUCTURAL_BEND_DIR_ANGLE).Set(slope);
}
}
//长度方向C型钢
int m = (int)Math.Floor(length / lengthInterval);
for (int i = 0; i <= m; i++)
{
Line offestl1 = l1.CreateOffset(length / m * i, XYZ.BasisZ) as Line;
Line offestl2 = l2.CreateOffset(length / m * i, -XYZ.BasisZ) as Line;
lines.Add(offestl1);
lines.Add(offestl2);
}
foreach (var l in lines)
{
var line = l.CreateTransformed(Transform.CreateTranslation(XYZ.BasisZ * 35 / 304.8));
var beam = doc.Create.NewFamilyInstance(line, frameSymbol1, topLevel, Autodesk.Revit.DB.Structure.StructuralType.Beam);
beam.get_Parameter(BuiltInParameter.INSTANCE_REFERENCE_LEVEL_PARAM).Set(topLevel.Id);
}
}
private static void CreateFloor(Document doc, IList<Curve> edges)
{
var floorCurveArray = new CurveArray();
@@ -166,42 +308,29 @@ namespace RookieStation.Construction.ExecuteCmd
/// <param name="curves"></param>
/// <param name="horizontalOffest">水平向外偏移距离</param>
/// <param name="verticalOffest"></param>
private void CreatePWallList(Document doc, CurveLoop loop, double horizontalOffest, double verticalOffest)
private List<Wall> CreateAluminumPlastic(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();
var topLevel = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).OrderBy(l => l.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);
//Transform transform = Transform.CreateTranslation(XYZ.BasisZ * heightOffest);
//var translateCurveLoop = CurveLoop.CreateViaTransform(offestCurveLoop, transform);
var walllist = new List<Wall>();
var pheight = 1220 / 304.8;
foreach (var curve in translateCurveLoop)
foreach (var curve in offestCurveLoop)
{
Wall wall = null;
doc.InvokeSub(ts =>
{
wall = Wall.Create(doc, curve, wallType.Id, topLevel.Id, pheight, 0, false, false);
walllist.Add(wall);
});
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);
}
}
}
return walllist;
}
/// <summary>
@@ -220,6 +349,12 @@ namespace RookieStation.Construction.ExecuteCmd
foreach (var curve in offestCurve)
{
var wall = Wall.Create(doc, curve, wallType.Id, currentLevel.Id, height, 0, false, false);
var horizonGridNum = wall.get_Parameter(BuiltInParameter.SPACING_NUM_DIVISIONS_HORIZ);
if (!horizonGridNum.IsReadOnly)
{
horizonGridNum.Set(1);
}
//var curtainGridLine = doc.GetElement(wall.CurtainGrid.GetUGridLineIds().FirstOrDefault()) as CurtainGridLine;
}
}
@@ -233,7 +368,8 @@ namespace RookieStation.Construction.ExecuteCmd
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();
var level = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).OrderBy(l => l.Elevation).FirstOrDefault();
double heightOffest = level.Elevation + verticalOffest;
var offestCurveLoop = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
Transform transform = Transform.CreateTranslation(XYZ.BasisZ * heightOffest);
@@ -276,12 +412,12 @@ namespace RookieStation.Construction.ExecuteCmd
/// <param name="doc"></param>
/// <param name="loop"></param>
/// <param name="horizontalOffest">屋顶相对于轮廓向外水平偏移</param>
/// <param name="verticalOffest">相对当前标高以上默认标高的偏移</param>
/// <param name="bottomOffest">相对当前标高以上默认标高的偏移</param>
/// <returns></returns>
public FootPrintRoof CreateRoof(Document doc, CurveLoop loop, double horizontalOffest, double verticalOffest)
public FootPrintRoof CreateRoof(Document doc, CurveLoop loop, double horizontalOffest, double bottomOffest)
{
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 level = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels).Cast<Level>().Where(l => l.Elevation > doc.ActiveView.GenLevel.Elevation).OrderBy(l => l.Elevation).FirstOrDefault();
var roofCurveArray = new CurveArray();
var offestCurve = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
@@ -298,20 +434,27 @@ namespace RookieStation.Construction.ExecuteCmd
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);
roof.get_Parameter(BuiltInParameter.ROOF_LEVEL_OFFSET_PARAM).Set(bottomOffest);
return roof;
}
/// <summary>
///创建梁
///创建
/// </summary>
/// <param name="doc"></param>
/// <param name="edges"></param>
/// <param name="horizontalOffest">最外侧地梁水平向外偏移量</param>
/// <param name="interval"></param>
private void CreateFramings(Document doc, IList<Curve> edges, double interval)
private void CreateFramings(Document doc, IList<Curve> edges, double horizontalOffest, double interval)
{
CurveLoop loop = CurveLoop.Create(edges);
var offestCurve = CurveLoop.CreateViaOffset(loop, horizontalOffest, -XYZ.BasisZ);
List<List<XYZ>> pointsOnLines = new List<List<XYZ>>();
var lines = CreateGridLine(interval, edges);
var lines = CreateGridLine(interval, edges, false);
foreach (var item in offestCurve)
{
lines.Add(item);
}
foreach (Line c in lines)
{
List<XYZ> pointsOnLine = new List<XYZ>();
@@ -326,6 +469,7 @@ namespace RookieStation.Construction.ExecuteCmd
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();
@@ -360,7 +504,7 @@ namespace RookieStation.Construction.ExecuteCmd
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(interval, edges, true).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)
@@ -395,11 +539,14 @@ namespace RookieStation.Construction.ExecuteCmd
/// <param name="maxCellSize"></param>
/// <param name="edges"></param>
/// <returns></returns>
private List<Curve> CreateGridLine(double maxCellSize, IList<Curve> edges)
private List<Curve> CreateGridLine(double maxCellSize, IList<Curve> edges, bool containEdges)
{
var pointsOnLines = new List<List<XYZ>>();
var gridLines = new List<Curve>();
gridLines.AddRange(edges);
if (containEdges)
{
gridLines.AddRange(edges);
}
//将边界线按跨数分割,
foreach (Curve c in edges)
{
@@ -407,7 +554,7 @@ namespace RookieStation.Construction.ExecuteCmd
}
if (pointsOnLines.Count == 2)
{
var li1 = pointsOnLines[0];//水平下
var li1 = pointsOnLines[0];//竖直左
var li2 = pointsOnLines[1];//水平上
for (int i = 0; i < li1.Count; i++)
{
@@ -417,10 +564,10 @@ namespace RookieStation.Construction.ExecuteCmd
}
else if (pointsOnLines.Count == 4)
{
var li1 = pointsOnLines[0];//水平下
var li1 = pointsOnLines[0];//竖直左
var li3 = pointsOnLines[2];//水平上
var li2 = pointsOnLines[1];//直右
var li4 = pointsOnLines[3];//垂直左
var li2 = pointsOnLines[1];//直右
var li4 = pointsOnLines[3];//水平下
for (int i = 0; i < li1.Count; i++)
{
var line = Line.CreateBound(li1[i], li3[i]);

View File

@@ -35,7 +35,7 @@
x:Name="tbLength"
InputMethod.IsInputMethodEnabled="False"
PreviewTextInput="tb_PreviewTextInput"
Text="15000"
Text="25000"
TextAlignment="Center" />
</GroupBox>
<GroupBox
@@ -47,7 +47,7 @@
x:Name="tbWidth"
InputMethod.IsInputMethodEnabled="False"
PreviewTextInput="tb_PreviewTextInput"
Text="8000"
Text="12000"
TextAlignment="Center" />
</GroupBox>
<Button

View File

@@ -20,8 +20,8 @@ namespace RookieStation.Construction.Views
/// </summary>
public partial class WpfAutoModeling
{
public double Length { get; set; }
public double Width { get; set; }
public double mLength { get; set; }
public double mWidth { get; set; }
public WpfAutoModeling()
{
@@ -30,8 +30,8 @@ namespace RookieStation.Construction.Views
private void btnConfirm_Click(object sender, RoutedEventArgs e)
{
Length = Convert.ToDouble(tbLength.Text.Trim());
Width = Convert.ToDouble(tbWidth.Text.Trim());
mLength = Convert.ToDouble(tbLength.Text.Trim());
mWidth = Convert.ToDouble(tbWidth.Text.Trim());
DialogResult = true;
}

View File

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Forms;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
@@ -73,7 +73,7 @@ namespace RookieStation.Drawing.ExecuteCmds
}
}, "自动整理标记");
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException ex)
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
return Result.Succeeded;
}

View File

@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -8,7 +8,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
using RookieStation.Utils;
using RookieStation.ProjectConfig;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -11,7 +11,7 @@ using System.Windows.Controls;
using RookieStation.Drawing.Models;
using RookieStation.ProjectConfig;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -10,7 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -14,7 +14,7 @@ using System.Windows.Controls;
using System.Data;
using OfficeOpenXml.Style;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -10,7 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -10,7 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -9,7 +9,7 @@ using System;
using System.Text;
using System.Windows.Media.Media3D;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
using System.Windows.Documents;
using System.Windows.Media.Media3D;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -9,7 +9,7 @@ using RookieStation.ProjectConfig;
using RookieStation.Utils;
using Autodesk.Revit.UI.Selection;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -9,7 +9,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
@@ -29,7 +29,7 @@ namespace RookieStation.Drawing.ExecuteCmds
{
//var refers = uidoc.Selection.PickObjects(ObjectType.Element, new SelectFilter<FamilyInstance>(), "请选择灯具");
//var instances = refers.Select(refer => doc.GetElement(refer) as FamilyInstance);
var instances = uidoc.Selection.PickElementsByRectangle(new SelectFilter<FamilyInstance>(), "请选择灯具").Cast<FamilyInstance>();
var instances = uidoc.Selection.PickElementsByRectangle(new LightSelectFilter<FamilyInstance>(), "请选择灯具").Cast<FamilyInstance>();
//var instances = refers.Select(refer => doc.GetElement(refer) as FamilyInstance).OrderBy(fi => RsRevitUtils.GetLocationPointByElement(fi).X).ThenBy(fi => RsRevitUtils.GetLocationPointByElement(fi).Y);
var instancesGroupByX = instances.GroupBy(fi => Math.Round(RsRevitUtils.GetLocationPointByElement(fi).X, 5));
var instancesGroupByY = instances.GroupBy(fi => Math.Round(RsRevitUtils.GetLocationPointByElement(fi).Y, 5));
@@ -155,7 +155,7 @@ namespace RookieStation.Drawing.ExecuteCmds
}, "创建导线");
}
internal class SelectFilter<T> : ISelectionFilter
internal class LightSelectFilter<T> : ISelectionFilter
{
public bool AllowElement(Autodesk.Revit.DB.Element elem)
{

View File

@@ -8,7 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
@@ -77,7 +77,7 @@ namespace RookieStation.Drawing.ExecuteCmds
}
}
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException ex)
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
return Result.Succeeded;
}

View File

@@ -9,7 +9,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace RookieStation.Drawing.ExecuteCmds
namespace RookieStation.Drawing.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -11,7 +11,7 @@ using System.Windows;
using RookieStation.Finishes.Views;
using RookieStation.Properties;
namespace RookieStation.Finishes.ExecuteCmds
namespace RookieStation.Finishes.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -8,11 +8,11 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace RookieStation.Finishes.ExecuteCmds
namespace RookieStation.Finishes.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdPlaceFloorFinishes : IExternalCommand
internal class PlaceFloorFinishes : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -9,11 +9,11 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace RookieStation.Finishes.ExecuteCmds
namespace RookieStation.Finishes.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdPlaceWallFinishes : IExternalCommand
internal class PlaceWallFinishes : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -7,11 +7,11 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace RookieStation.MailingAreaModule.ExecuteCmds
namespace RookieStation.MailingAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdLogoExtrusion : IExternalCommand
internal class ExtrusionLogo : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -15,11 +15,11 @@ using System.Windows.Controls;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace RookieStation.MailingAreaModule.ExecuteCmds
namespace RookieStation.MailingAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdPlaceReceptionArea : IExternalCommand
internal class PlaceReceptionArea : IExternalCommand
{
/// <summary>
/// 选择一次后停止

View File

@@ -0,0 +1,61 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using RookieStation.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RookieStation.MailingAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class WallDivide : 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;
DocumentSet docset = uiapp.Application.Documents;
try
{
Reference refer = uidoc.Selection.PickObject(ObjectType.Element, new SelectFilter<Wall>(), "请选择分缝的墙体");
var wall = uidoc.Document.GetElement(refer) as Wall;
doc.Invoke(ts =>
{
var wallSweepType = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Reveals).WhereElementIsElementType().Where(w => w.Name.Contains("3mm")).FirstOrDefault();
var wallsweepsId = new List<ElementId>();
double interval = 1220 / 304.8;
if (wall != null)
{
var line = RsRevitUtils.GetLocationCurveByElement(wall);
var n = (int)Math.Floor(line.Length / interval);
for (int i = 1; i < n; i++)
{
WallSweepInfo info = new WallSweepInfo(WallSweepType.Reveal, true)
{
Distance = i * interval,
WallSide = WallSide.Exterior,
DistanceMeasuredFrom = DistanceMeasuredFrom.Base,
};
if (WallSweep.WallAllowsWallSweep(wall))
{
var wallsweep = WallSweep.Create(wall, wallSweepType.Id, info);
}
}
}
}, "墙体分缝");
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
return Result.Cancelled;
}
return Result.Succeeded;
}
}
}

View File

@@ -11,11 +11,11 @@ using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace RookieStation.ParcelAreaModule.ExecuteCmds
namespace RookieStation.ParcelAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdArrangeShelfCards : IExternalCommand
internal class ArrangeShelfCards : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -7,7 +7,7 @@ using System.Collections.Generic;
using System.Linq;
using RookieStation.ParcelAreaModule.Views;
namespace RookieStation.ParcelAreaModule.ExecuteCmds
namespace RookieStation.ParcelAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -8,7 +8,7 @@ using System.Collections.Generic;
using System.Linq;
using RookieStation.ParcelAreaModule.Views;
namespace RookieStation.ParcelAreaModule.ExecuteCmds
namespace RookieStation.ParcelAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -9,11 +9,11 @@ using System.Collections.Generic;
using System.Linq;
using RookieStation.ParcelAreaModule.Views;
namespace RookieStation.ParcelAreaModule.ExecuteCmds
namespace RookieStation.ParcelAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdPlaceLamps : IExternalCommand
internal class PlaceLamps : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -13,11 +13,11 @@ using Autodesk.Revit.Creation;
using System.IO;
using RookieStation.ParcelAreaModule.ViewModels;
namespace RookieStation.ParcelAreaModule.ExecuteCmds
namespace RookieStation.ParcelAreaModule.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdPlaceShelves : IExternalCommand
internal class PlaceShelves : IExternalCommand
{
/// <summary>
/// 编号

View File

@@ -7,11 +7,11 @@ using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace RookieStation.ProjectConfig.ExecuteCmds
namespace RookieStation.ProjectConfig.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdProjectSettings : IExternalCommand
internal class ProjectSettings : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

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

View File

@@ -199,6 +199,9 @@
<data name="UnifyViewport" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\视口.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UpdateSheetTable" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdateSheetTable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ViewPlanDim" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewPlanDim.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -211,6 +214,9 @@
<data name="WallLegend" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WallLegend.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="WallSweep" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WallSweep.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Wire" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Wire.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: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -97,6 +97,7 @@
<Compile Include="CommonTools\ExecuteCmd\ChangeBackgroundColor.cs" />
<Compile Include="CommonTools\ExecuteCmd\DecryptFamily.cs" />
<Compile Include="CommonTools\ExecuteCmd\EncryptFamily.cs" />
<Compile Include="ScheduleTools\ExecuteCmd\UpdateSheetContents.cs" />
<Compile Include="CommonTools\ViewModels\EncryptOrDecryptFamily.cs" />
<Compile Include="CommonTools\ViewModels\ProgressMonitorControl.cs" />
<Compile Include="CommonTools\Views\ProgressMonitorView.xaml.cs">
@@ -106,32 +107,32 @@
<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" />
<Compile Include="Drawing\ExecuteCmds\CreateFurnitureLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\BatchExportDwg.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateMainMaterialsTable.cs" />
<Compile Include="Drawing\ExecuteCmds\CreatePlaneGraphLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateSocketLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateSwitchLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateViewSectionAnnotation.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateWallLegend.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateWires.cs" />
<Compile Include="Drawing\ExecuteCmds\AutoAlignTags.cs" />
<Compile Include="Drawing\ExecuteCmds\UnifyViewportOnViewSheet.cs" />
<Compile Include="Drawing\ExecuteCmd\ManualAlignTags.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateGroundPavingLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateLightLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateFurnitureLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\BatchExportDwg.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateMainMaterialsTable.cs" />
<Compile Include="Drawing\ExecuteCmd\CreatePlaneGraphLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateSocketLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateSwitchLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateViewSectionAnnotation.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateWallLegend.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateWires.cs" />
<Compile Include="Drawing\ExecuteCmd\AutoAlignTags.cs" />
<Compile Include="Drawing\ExecuteCmd\UnifyViewportOnViewSheet.cs" />
<Compile Include="Drawing\Models\LightingDevices.cs" />
<Compile Include="Drawing\Models\MaterialItem.cs" />
<Compile Include="Drawing\Models\ShelfStatistic.cs" />
<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" />
<Compile Include="MailingAreaModule\ExecuteCmds\CmdLogoExtrusion.cs" />
<Compile Include="Finishes\ExecuteCmds\CmdPlaceWallFinishes.cs" />
<Compile Include="MailingAreaModule\ExecuteCmd\WallDivide.cs" />
<Compile Include="Statistics\ExecuteCmd\CmdExportOrderQuantity.cs" />
<Compile Include="Statistics\ExecuteCmd\ExportWorkSchedule.cs" />
<Compile Include="Finishes\ExecuteCmd\PlaceFloorFinishes.cs" />
<Compile Include="MailingAreaModule\ExecuteCmd\ExtrusionLogo.cs" />
<Compile Include="Finishes\ExecuteCmd\PlaceWallFinishes.cs" />
<Compile Include="CommonTools\ExtHandler\FamilyDockablePaneHandler.cs" />
<Compile Include="CommonTools\Models\FamilyInfo.cs" />
<Compile Include="Properties\Settings.Designer.cs">
@@ -139,39 +140,39 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
<Compile Include="Statistics\ExecuteCmds\CmdExportBudgetInventory.cs" />
<Compile Include="Statistics\ExecuteCmd\ExportBudgetInventory.cs" />
<Compile Include="Statistics\Models\SubItem.cs" />
<Compile Include="Utils\AssemblyLoader.cs" />
<Compile Include="Drawing\ExecuteCmds\CreateViewPlanAnnotation.cs" />
<Compile Include="Drawing\ExecuteCmd\CreateViewPlanAnnotation.cs" />
<Compile Include="Utils\DocumentExtension.cs" />
<Compile Include="Utils\EnumItemsSource.cs" />
<Compile Include="Utils\ExcelUtils.cs" />
<Compile Include="Utils\KeyPress.cs" />
<Compile Include="CommonTools\ExecuteCmd\UseFamilyPane.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmds\CmdPlaceShelves.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmd\PlaceShelves.cs" />
<Compile Include="Utils\CommonUtils.cs" />
<Compile Include="Utils\Log.cs" />
<Compile Include="Utils\EnableCmdInViewPlan.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmds\CmdPlaceEntranceGate.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmds\CmdPlaceExitGate.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmd\CmdPlaceEntranceGate.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmd\CmdPlaceExitGate.cs" />
<Compile Include="Utils\RsFamilyLoadOption.cs" />
<Compile Include="Utils\RsRevitUtils.cs" />
<Compile Include="Finishes\ExecuteCmds\FloorFinishes.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmds\CmdPlaceLamps.cs" />
<Compile Include="Finishes\ExecuteCmd\FloorFinishes.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmd\PlaceLamps.cs" />
<Compile Include="ParcelAreaModule\Models\Enum.cs" />
<Compile Include="Utils\ProjectConfigUtil.cs" />
<Compile Include="ProjectConfig\ExcuteCmd\CmdProjectSettings.cs" />
<Compile Include="ProjectConfig\ExcuteCmd\ProjectSettings.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="ParcelAreaModule\ExecuteCmds\CmdArrangeShelfCards.cs" />
<Compile Include="ParcelAreaModule\ExecuteCmd\ArrangeShelfCards.cs" />
<Compile Include="RsApp.cs" />
<Compile Include="ParcelAreaModule\ViewModels\ShelvesPlacementViewModel.cs" />
<Compile Include="Utils\SelectFilter.cs" />
<Compile Include="MailingAreaModule\ExecuteCmds\CmdPlaceReceptionArea.cs" />
<Compile Include="MailingAreaModule\ExecuteCmd\PlaceReceptionArea.cs" />
<Compile Include="ParcelAreaModule\Models\Shelf.cs" />
<Compile Include="UserConstant.cs" />
<Compile Include="Utils\SQLiteUtil.cs" />
@@ -315,9 +316,11 @@
<None Include="Resources\SocketLegend.png" />
<None Include="Resources\PlaneLegend.png" />
<None Include="Resources\ManualArrangeTags.png" />
<None Include="Resources\UpdateSheetTable.png" />
<Content Include="Resources\WallFinishes.png" />
<None Include="Resources\Wire.png" />
<None Include="Resources\WallLegend.png" />
<None Include="Resources\WallSweep.png" />
<Content Include="Resources\YTX.ico" />
<None Include="Resources\WorkSchedule.png" />
<None Include="Resources\视口.png" />

View File

@@ -1,11 +1,11 @@
using Autodesk.Revit.UI;
using RookieStation.CommonTools.ExecuteCmd;
using RookieStation.CommonTools.Views;
using RookieStation.Finishes.ExecuteCmds;
using RookieStation.ParcelAreaModule.ExecuteCmds;
using RookieStation.ProjectConfig.ExecuteCmds;
using RookieStation.MailingAreaModule.ExecuteCmds;
using RookieStation.Statistics.ExecuteCmds;
using RookieStation.Finishes.ExecuteCmd;
using RookieStation.ParcelAreaModule.ExecuteCmd;
using RookieStation.ProjectConfig.ExecuteCmd;
using RookieStation.MailingAreaModule.ExecuteCmd;
using RookieStation.Statistics.ExecuteCmd;
using RookieStation.Utils;
using System;
using System.Drawing;
@@ -13,16 +13,17 @@ using System.IO;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media.Imaging;
using RookieStation.Drawing.ExecuteCmds;
using RookieStation.Drawing.ExecuteCmd;
using System.Reflection;
using RookieStation.Construction.ExecuteCmd;
using RookieStation.ScheduleTools.ExecuteCmd;
namespace RookieStation.RibbonMenu
{
internal class RsApp : IExternalApplication
{
private const string TabName = "菜鸟驿站工具";
private const string ProjectSettingsPanelName = "项目设置";
private const string ProjectSettingsPanelName = "项目工具";
private const string ReceptionPanelName = "前台布置";
private const string EntranceAndExitGatePanelName = "取件区";
private const string FinishesPanelName = "饰面";
@@ -97,19 +98,20 @@ namespace RookieStation.RibbonMenu
//项目设置
RibbonPanel projectPanel = application.CreateRibbonPanel(TabName, ProjectSettingsPanelName);
NewPushButtonData<CmdProjectSettings>(projectPanel, "项目设置", Properties.Resources.cainiao, null);
NewPushButtonData<ProjectSettings>(projectPanel, "项目设置", Properties.Resources.cainiao, null);
NewPushButtonData<AutoGenerateModels>(projectPanel, "创建模型", Properties.Resources.Architect, null);
//前台布置
RibbonPanel receptionAreaPanel = application.CreateRibbonPanel(TabName, ReceptionPanelName);
NewPushButtonData<CmdPlaceReceptionArea>(receptionAreaPanel, "前台布置", Properties.Resources.Reception, ViewPlanCmdEnabled);
NewPushButtonData<PlaceReceptionArea>(receptionAreaPanel, "前台布置", Properties.Resources.Reception, ViewPlanCmdEnabled);
NewPushButtonData<CmdLogoExtrusion>(receptionAreaPanel, "标识挤出", Properties.Resources.LogoExtrusion, ViewPlanCmdEnabled);
NewPushButtonData<ExtrusionLogo>(receptionAreaPanel, "标识挤出", Properties.Resources.LogoExtrusion, ViewPlanCmdEnabled);
NewPushButtonData<WallDivide>(receptionAreaPanel, "铝塑板分缝", Properties.Resources.WallSweep, null);
//出入口布置
RibbonPanel packAreaPanel = application.CreateRibbonPanel(TabName, EntranceAndExitGatePanelName);
NewPushButtonData<CmdPlaceEntranceGate>(packAreaPanel, "入口布置", Properties.Resources.EntranceGate, ViewPlanCmdEnabled);
NewPushButtonData<CmdPlaceExitGate>(packAreaPanel, "出口布置", Properties.Resources.ExitGate, ViewPlanCmdEnabled);
NewPushButtonData<CmdPlaceEntranceGate>(packAreaPanel, "入口布置", Properties.Resources.EntranceGate, ViewPlanCmdEnabled).ToolTip = "入口闸机布置";
NewPushButtonData<CmdPlaceExitGate>(packAreaPanel, "出口布置", Properties.Resources.ExitGate, ViewPlanCmdEnabled).ToolTip = "出口收检台布置";
//PushButtonData exitGateLayoutPBD = new PushButtonData("出口布置", "出口收检台", AddInPath, typeof(CmdPlaceExitGate).FullName)
//{
@@ -122,22 +124,23 @@ namespace RookieStation.RibbonMenu
////var entranceBtn = (PushButton)gateItemsStacked[0];
////var exitBtn = (PushButton)gateItemsStacked[1];
//寄件区布置
NewPushButtonData<CmdPlaceShelves>(packAreaPanel, "货架布置", Properties.Resources.Shelf, ViewPlanCmdEnabled);
NewPushButtonData<CmdArrangeShelfCards>(packAreaPanel, "货架端牌", Properties.Resources.ShelfCard, ViewPlanCmdEnabled);
NewPushButtonData<CmdPlaceLamps>(packAreaPanel, "灯具布置", Properties.Resources.Lamp, ViewPlanCmdEnabled);
NewPushButtonData<PlaceShelves>(packAreaPanel, "货架布置", Properties.Resources.Shelf, ViewPlanCmdEnabled);
NewPushButtonData<ArrangeShelfCards>(packAreaPanel, "货架端牌", Properties.Resources.ShelfCard, ViewPlanCmdEnabled);
NewPushButtonData<PlaceLamps>(packAreaPanel, "灯具布置", Properties.Resources.Lamp, ViewPlanCmdEnabled);
//饰面,完成面
RibbonPanel finishesPanel = application.CreateRibbonPanel(TabName, FinishesPanelName);
NewPushButtonData<CmdPlaceFloorFinishes>(finishesPanel, "板饰面", Properties.Resources.FloorFinishes, ViewPlanCmdEnabled);
NewPushButtonData<CmdPlaceWallFinishes>(finishesPanel, "墙饰面", Properties.Resources.WallFinishes, ViewPlanCmdEnabled);
NewPushButtonData<PlaceFloorFinishes>(finishesPanel, "板饰面", Properties.Resources.FloorFinishes, ViewPlanCmdEnabled);
NewPushButtonData<PlaceWallFinishes>(finishesPanel, "墙饰面", Properties.Resources.WallFinishes, ViewPlanCmdEnabled);
//统计面板
RibbonPanel statisticsPanel = application.CreateRibbonPanel(TabName, StatisticsPanelName);
NewPushButtonData<CmdExportBudgetInventory>(statisticsPanel, "工程量导出", Properties.Resources.WorkSchedule, null);
NewPushButtonData<ExportBudgetInventory>(statisticsPanel, "工程量导出", Properties.Resources.WorkSchedule, null);
//出图面板
RibbonPanel drawingPanel = application.CreateRibbonPanel(TabName, DrawingPanelName);
NewPushButtonData<CreateMainMaterialsTable>(drawingPanel, "主材表", Properties.Resources.MainMaterials, DrawingSheetCmdEnabled);
NewPushButtonData<UpdateSheetContents>(drawingPanel, "更新图纸目录", Properties.Resources.UpdateSheetTable, null);
SplitButtonData legendSplitButtonData = new SplitButtonData("创建图例", "创建图例");
var lspb = drawingPanel.AddItem(legendSplitButtonData) as SplitButton;

View File

@@ -0,0 +1,132 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using RookieStation.Utils;
using System;
using System.Linq;
namespace RookieStation.ScheduleTools.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class UpdateSheetContents : 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;
DocumentSet docset = uiapp.Application.Documents;
//var viewname = ViewSchedule.GetDefaultNameForSheetList(doc);
//var eleids = ViewSchedule.GetValidFamiliesForNoteBlock(doc);
//foreach (var id in eleids)
//{
// var ele = doc.GetElement(id);
//}
try
{
var viewname = "图纸目录";
ViewSchedule viewSchedule = new FilteredElementCollector(doc).OfClass(typeof(ViewSchedule)).Cast<ViewSchedule>().Where(v => v.Name.Contains(viewname)).FirstOrDefault();
if (viewSchedule == null && doc.ActiveView is ViewSchedule)
{
viewSchedule = doc.ActiveView as ViewSchedule;
}
doc.Invoke(ts =>
{
TableData tableData = viewSchedule.GetTableData();
TableSectionData tableHeaderData = tableData.GetSectionData(SectionType.Header);
TableSectionData tableBodyData = tableData.GetSectionData(SectionType.Body);
int numberOfColumns = tableBodyData.NumberOfColumns;
int numberOfRows = tableBodyData.NumberOfRows;
for (int i = 1; i < numberOfRows; i++)
{
//var content = viewSchedule.GetCellText(SectionType.Body, i, 0);
//var content = i + 1;
//var celltype = tableSectionData.GetCellType(i);
var cateId = tableBodyData.GetCellCategoryId(i, 3).IntegerValue;
var cate = (BuiltInCategory)cateId;
var collector = new FilteredElementCollector(doc).OfCategory(cate).WhereElementIsNotElementType();
var paramId = BuiltInParameter.INVALID;
var sheetNumber = string.Empty;
for (int j = 0; j < numberOfColumns; j++)
{
//var builtInParameter = (BuiltInParameter)(-1007401);//图纸编号内建参数ID
var builtInParameter = (BuiltInParameter)tableBodyData.GetCellParamId(i, j).IntegerValue;
if (BuiltInParameter.SHEET_NUMBER == builtInParameter)
{
//得到图纸编号的文字
sheetNumber = viewSchedule.GetCellText(SectionType.Body, i, j);
paramId = builtInParameter;//得到图纸编号的内建参数,用于读取
}
}
foreach (ViewSheet sheet in collector)
{
var parameter = sheet.get_Parameter(paramId);
//非内建参数
//var y = doc.GetElement(paramId);
//var paramEle = doc.GetElement(paramId) as ParameterElement;
//var definit = paramEle.GetDefinition();
//var parameter = sheet.get_Parameter(definit);
if (parameter.AsString() == sheetNumber)
{
string number = i < 10 ? $"0{i}" : i.ToString();
sheet.GetParameters("图纸序号").FirstOrDefault().Set(number);
string scale = sheet.get_Parameter(BuiltInParameter.SHEET_SCALE).AsString();
if (scale == "作为说明")
{
var viewIds = sheet.GetAllPlacedViews();
var view = from id in viewIds
where doc.GetElement(id) is ViewSection
select doc.GetElement(id);
var viewScale = view.FirstOrDefault().get_Parameter(BuiltInParameter.VIEW_SCALE).AsInteger();
sheet.GetParameters("图纸比例").FirstOrDefault().Set($"1 : {viewScale}");
}
else if (scale == " ")
{
sheet.GetParameters("图纸比例").FirstOrDefault().Set("1 : 1");
}
else
{
sheet.GetParameters("图纸比例").FirstOrDefault().Set(scale);
}
//var viewIds = sheet.GetAllPlacedViews();
//int planeViewCount = 0;
//int sectionViewCount = 0;
//int DetailViewCount = 0;
//int tempCount = 0;
//foreach (var id in viewIds)
//{
// var view = doc.GetElement(id) as View;
// if (view.ViewType == ViewType.CeilingPlan || view.ViewType == ViewType.FloorPlan)
// {
// planeViewCount += 1;
// }
// if (view.ViewType == ViewType.Elevation)
// {
// sectionViewCount += 1;
// }
// if (view.ViewType == ViewType.Detail)
// {
// planeViewCount += 1;
// }
//}
sheet.GetParameters("图纸尺寸").FirstOrDefault().Set("A3");
}
}
}
});
}
catch (Exception)
{
return Result.Cancelled;
}
return Result.Succeeded;
}
}
}

View File

@@ -1,63 +0,0 @@
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;
}
}
}

View File

@@ -12,7 +12,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RookieStation.Statistics.ExecuteCmds
namespace RookieStation.Statistics.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

View File

@@ -21,11 +21,11 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
namespace RookieStation.Statistics.ExecuteCmds
namespace RookieStation.Statistics.ExecuteCmd
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
internal class CmdExportBudgetInventory : IExternalCommand
internal class ExportBudgetInventory : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

View File

@@ -16,11 +16,11 @@ using System.Threading.Tasks;
using System.Windows.Forms;
using static OfficeOpenXml.ExcelErrorValue;
namespace RookieStation.Statistics.ExecuteCmds
namespace RookieStation.Statistics.ExecuteCmd
{
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
internal class CmdExportWorkSchedule : IExternalCommand
internal class ExportWorkSchedule : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{

Binary file not shown.

Binary file not shown.