| | |
| | | using Autodesk.Revit.DB.Events; |
| | | using Autodesk.Revit.DB.Plumbing; |
| | | using Autodesk.Revit.UI; |
| | | using HStation.RevitDev.Model.Enum; |
| | | using HStation.RevitDev.Model.ModelEnum; |
| | | using HStation.RevitDev.RevitDataExport.Common; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | if (elem is Pipe) |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString()); |
| | | AddManualCreated(elem); |
| | | } |
| | | } |
| | |
| | | if (elem is FamilyInstance) |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | TaskDialog.Show("提示", "增加族实例:" + id.IntegerValue.ToString()); |
| | | AddManualCreated(elem); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | bool isPumpSystemElement = false; |
| | | foreach (var id in addedIds) |
| | | { |
| | | var elem = doc.GetElement(id); |
| | | if (elem is Pipe pipe) //直接点击水泵的连接件创建管道 |
| | | if (IsConnectedWithPumpSystem(doc, id)) |
| | | { |
| | | if (pipe.ConnectWithPumpSystem()) |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString()); |
| | | AddManualCreated(elem); |
| | | } |
| | | isPumpSystemElement = true; |
| | | } |
| | | else if (elem is FamilyInstance fi) |
| | | } |
| | | |
| | | if (isPumpSystemElement) |
| | | { |
| | | foreach (var id in addedIds) |
| | | { |
| | | if (fi.ConnectWithPumpSystem()) //直接点击管道连接点创建管道时,Revit会自动创建弯头,都需要加入到缓存 |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString()); |
| | | AddManualCreated(elem); |
| | | } |
| | | AddToPumpSystem(doc, id); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | private static bool IsConnectedWithPumpSystem(Document doc, ElementId id) |
| | | { |
| | | var elem = doc.GetElement(id); |
| | | if (elem is Pipe pipe) //直接点击水泵的连接件创建管道 |
| | | { |
| | | if (pipe.ConnectWithPumpSystem()) |
| | | { |
| | | //GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | //TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString()); |
| | | //AddManualCreated(elem); |
| | | return true; |
| | | } |
| | | } |
| | | else if (elem is FamilyInstance fi) |
| | | { |
| | | if (fi.ConnectWithPumpSystem()) //直接点击管道连接点创建管道时,Revit会自动创建弯头,都需要加入到缓存 |
| | | { |
| | | //GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | //TaskDialog.Show("提示", "增加族实例:" + id.IntegerValue.ToString()); |
| | | //AddManualCreated(elem); |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private static void AddToPumpSystem(Document doc, ElementId id) |
| | | { |
| | | var elem = doc.GetElement(id); |
| | | if (elem is Pipe) |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | AddToMap(elem, RevitType.RFT_Pipe); |
| | | } |
| | | else if (elem is FamilyInstance fi) |
| | | { |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | AddAutoCreated(fi); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | private static void AddAutoCreated(FamilyInstance fi) |
| | | { |
| | | var id = fi.Id; |
| | | GlobalResource.ElementIds.Add(id.IntegerValue.ToString()); |
| | | TaskDialog.Show("提示", "增加族实例:" + id.IntegerValue.ToString()); |
| | | if (fi.IsWanTou()) |
| | | { |
| | | AddToMap(fi, RevitFamilyType.RFT_Elbow); |
| | | AddToMap(fi, RevitType.RFT_Elbow); |
| | | } |
| | | else if (fi.IsSanTong()) |
| | | { |
| | | AddToMap(fi, RevitFamilyType.RFT_ThreeJoint); |
| | | AddToMap(fi, RevitType.RFT_ThreeJoint); |
| | | } |
| | | else if (fi.IsSiTong()) |
| | | { |
| | | AddToMap(fi, RevitFamilyType.RFT_FourJoint); |
| | | AddToMap(fi, RevitType.RFT_FourJoint); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | private static void AddManualCreated(Element elem) |
| | | { |
| | | if (!GlobalResource.InstanceMap.ContainsKey(GlobalResource.RevitFamilyType)) |
| | | var id = elem.Id.IntegerValue.ToString(); |
| | | if (!GlobalResource.RevitModels.ContainsKey(GlobalResource.RevitFamilyType)) |
| | | { |
| | | GlobalResource.InstanceMap.Add(GlobalResource.RevitFamilyType, new List<string>()); |
| | | GlobalResource.RevitModels.Add(GlobalResource.RevitFamilyType, new List<string>()); |
| | | GlobalResource.RevitModels[GlobalResource.RevitFamilyType].Add(id); |
| | | TaskDialog.Show("提示", "增加族实例:" + id); |
| | | } |
| | | GlobalResource.InstanceMap[GlobalResource.RevitFamilyType].Add(elem.Id.IntegerValue.ToString()); |
| | | else if(!GlobalResource.RevitModels[GlobalResource.RevitFamilyType].Contains(id)) |
| | | { |
| | | GlobalResource.RevitModels[GlobalResource.RevitFamilyType].Add(id); |
| | | TaskDialog.Show("提示", "增加族实例:" + id); |
| | | } |
| | | } |
| | | |
| | | private static void AddToMap(Element elem, RevitFamilyType revitType) |
| | | private static void AddToMap(Element elem, RevitType revitType) |
| | | { |
| | | if (!GlobalResource.InstanceMap.ContainsKey(revitType)) |
| | | var id = elem.Id.IntegerValue.ToString(); |
| | | if (!GlobalResource.RevitModels.ContainsKey(revitType)) |
| | | { |
| | | GlobalResource.InstanceMap.Add(revitType, new List<string>()); |
| | | GlobalResource.RevitModels.Add(revitType, new List<string>()); |
| | | GlobalResource.RevitModels[revitType].Add(id); |
| | | TaskDialog.Show("提示", "增加族实例:" + id); |
| | | } |
| | | GlobalResource.InstanceMap[revitType].Add(elem.Id.IntegerValue.ToString()); |
| | | else if (!GlobalResource.RevitModels[revitType].Contains(id)) |
| | | { |
| | | GlobalResource.RevitModels[revitType].Add(id); |
| | | TaskDialog.Show("提示", "增加族实例:" + id); |
| | | } |
| | | } |
| | | } |
| | | } |