public static List <DuctModel> GetDuctModels(ExternalCommandData commandData) { var ductsModel = new List <DuctModel>(); var ducts = GenericSelectionUtils <Duct> .GetObjectsByType(commandData); foreach (var oDuct in ducts) { var pipeStartEndPoints = oDuct.GetStartAndEndPoint(); var pipeConnectors = oDuct.GetConnectors(); if (pipeStartEndPoints.Count < 2 || pipeConnectors.Count < 2) { continue; } var pipeModel = new DuctModel { Model = oDuct, Curve = oDuct.GetCurve(), StarPoint = pipeStartEndPoints[0], EndPoint = pipeStartEndPoints[1], ConnectorFirst = pipeConnectors[0], ConnectorSecond = pipeConnectors[1] }; ductsModel.Add(pipeModel); } return(ductsModel); }
public static List <CableTrayModel> GetCableTrayModels(ExternalCommandData commandData) { var condModelList = new List <CableTrayModel>(); var cableTrays = GenericSelectionUtils <CableTray> .GetObjectsByType(commandData); foreach (var oCableTray in cableTrays) { var startEndPoints = oCableTray.GetStartAndEndPoint(); var connectors = oCableTray.GetConnectors(); if (startEndPoints.Count < 2 || connectors.Count < 2) { continue; } var condModel = new CableTrayModel { Model = oCableTray, Curve = oCableTray.GetCurve(), StarPoint = startEndPoints[0], EndPoint = startEndPoints[1], ConnectorFirst = connectors[0], ConnectorSecond = connectors[1] }; condModelList.Add(condModel); } return(condModelList); }
public static List <MEPElementModel> GetMEPElementsFromModel(ExternalCommandData _commandData) { //Выбираем все MEP элементы, где есть коннекторы var mepElements = GenericSelectionUtils <FamilyInstance> .GetObjectsByType(_commandData) .Where(o => o.MEPModel.ConnectorManager != null); var mepElementsModel = new List <MEPElementModel>(); foreach (var mepElementItem in mepElements) { var newMEPModel = new MEPElementModel { Model = mepElementItem, Connectors = mepElementItem.GetConnectors() }; mepElementsModel.Add(newMEPModel); } return(mepElementsModel); }
private void btnAccept_Click(object sender, RoutedEventArgs e) { //Собираем все элементы var ducts = GenericSelectionUtils <Duct> .GetObjectsByType(_commandData).Cast <Element>().ToList(); var pipes = GenericSelectionUtils <Pipe> .GetObjectsByType(_commandData).Cast <Element>().ToList(); var cableTrays = GenericSelectionUtils <CableTray> .GetObjectsByType(_commandData).Cast <Element>().ToList(); var conduits = GenericSelectionUtils <Conduit> .GetObjectsByType(_commandData).Cast <Element>().ToList(); var distanceBetweenPoints2DParsedValue = NumberUtils.ParseStringToDouble(txtboxRiseToleranceByXY.Text); var heightBetweenPoints2DParsedValue = NumberUtils.ParseStringToDouble(txtboxRiseToleranceByZ.Text); if (distanceBetweenPoints2DParsedValue == 0) { this.Close(); return; } var distanceBetweenPoints2d = NumberUtils.MillimetersToFeet(distanceBetweenPoints2DParsedValue); var heightBetweenPoints2d = NumberUtils.MillimetersToFeet(heightBetweenPoints2DParsedValue); //Записываем параметр var parameterRiseName = txtboxParameterRise.Text; var parameterRiseValue = "Стояк"; var ductsRises = new MEPRise().GetMEPRises(ducts, distanceBetweenPoints2d, heightBetweenPoints2d).Select(d => d.Model).ToList(); var pipeRises = new MEPRise().GetMEPRises(pipes, distanceBetweenPoints2d, heightBetweenPoints2d).Select(d => d.Model).ToList(); var cableTrayRises = new MEPRise().GetMEPRises(cableTrays, distanceBetweenPoints2d, heightBetweenPoints2d).Select(d => d.Model).ToList(); var conduitRises = new MEPRise().GetMEPRises(conduits, distanceBetweenPoints2d, heightBetweenPoints2d).Select(d => d.Model).ToList(); ElementUtils.SetParameterValueToElementList(_commandData, ductsRises, parameterRiseName, parameterRiseValue); ElementUtils.SetParameterValueToElementList(_commandData, pipeRises, parameterRiseName, parameterRiseValue); ElementUtils.SetParameterValueToElementList(_commandData, cableTrayRises, parameterRiseName, parameterRiseValue); ElementUtils.SetParameterValueToElementList(_commandData, conduitRises, parameterRiseName, parameterRiseValue); this.Close(); return; }
private void btnAccept_Click(object sender, RoutedEventArgs e) { //Определяем точки, в которых стоят фитинги для труб и воздуховодов var fittingRepo = new FittingRepo(); var pipeFittingPoints = fittingRepo.GetConnectorPoints(_commandData, BuiltInCategory.OST_PipeFitting); var ductFittingPoints = fittingRepo.GetConnectorPoints(_commandData, BuiltInCategory.OST_DuctFitting); var pipePointsToCheck = GenericSelectionUtils <Pipe> .GetObjectsByType(_commandData).Select(p => p.GetStartAndEndPoint()).ToList(); var ductPointsToCheck = GenericSelectionUtils <Duct> .GetObjectsByType(_commandData).Select(p => p.GetStartAndEndPoint()).ToList(); //собираем все линейные объекты и масс-формы по названию var massForms = MassFormRepo.GetMassFormModels(_commandData, txtboxMassFormName.Text); if (massForms.Count == 0) { MessageBox.Show($"Не найдены формобразующие с именем семейства {txtboxMassFormName.Text}. "); return; } //И собираем все MEP элементы со всеми коннекторами var mepElements = MEPElementRepo.GetMEPElementsFromModel(_commandData); #region Трубы var pipes = PipeRepo.GetPipeModels(_commandData); //берём масс-формы и трубы, находим точки пересечения var pipeAndMassFormIntersectionList = PipeAndMassIntersectionRepo .GetIntersectionList(pipes, massForms, pipeFittingPoints); //создаём отдельные трубы из труб, которые пересекаются с формообразующими var pipeFactory = new PipesFactoryRepo(); pipeFactory.CreatePipesFromIntersectionPoints( pipeAndMassFormIntersectionList, pipePointsToCheck, _commandData); //Берем новые трубы и соединяем их с фитингами, арматурой и приборами. //Поскольку при создании труб заново, они отсоединялись PipesFactoryRepo.ConnectPipesAndMEPElementsWithConnectorsInSameLocation( pipeFactory.Pipes, mepElements, _commandData); #endregion #region Воздуховоды var ducts = DuctRepo.GetDuctModels(_commandData); //берём масс-формы и трубы, находим точки пересечения var ductAndMassFormIntersectionList = DuctAndMassIntersectionRepo .GetIntersectionList(ducts, massForms, ductFittingPoints); //создаём отдельные трубы из труб, которые пересекаются с формообразующими var ductFactory = new DuctsFactoryRepo(); ductFactory.CreateDuctsFromIntersectionPoints( ductAndMassFormIntersectionList, ductPointsToCheck, _commandData); //Берем новые трубы и соединяем их с фитингами, арматурой и приборами. //Поскольку при создании труб заново, они отсоединяелись DuctsFactoryRepo.ConnectPipesAndMEPElementsWithConnectorsInSameLocation( ductFactory.Ducts, mepElements, _commandData); #endregion #region Короба var conduits = ConduitRepo.GetConduitModels(_commandData); //берём масс-формы и трубы, находим точки пересечения var conduitAndMassFormIntersectionList = ConduitAndMassIntersectionRepo .GetIntersectionList(conduits, massForms); //создаём отдельные трубы из труб, которые пересекаются с формообразующими var conduitFactory = new ConduitsFactoryRepo(); conduitFactory.CreateConduitsFromIntersectionPoints(conduitAndMassFormIntersectionList, _commandData); //Берем новые трубы и соединяем их с фитингами, арматурой и приборами. //Поскольку при создании труб заново, они отсоединяелись ConduitsFactoryRepo.ConnectConduitsAndMEPElementsWithConnectorsInSameLocation( conduitFactory.Conduits, mepElements, _commandData); #endregion #region Лотки var cableTrays = CableTraysRepo.GetCableTrayModels(_commandData); //берём масс-формы и трубы, находим точки пересечения var cableTrayAndMassFormIntersectionList = CableTrayAndMassIntersectionRepo .GetIntersectionList(cableTrays, massForms); //создаём отдельные трубы из труб, которые пересекаются с формообразующими var cableTrayFactory = new CableTraysFactoryRepo(); cableTrayFactory.CreateCableTraysFromIntersectionPoints(cableTrayAndMassFormIntersectionList, _commandData); //Берем новые трубы и соединяем их с фитингами, арматурой и приборами. //Поскольку при создании труб заново, они отсоединяелись CableTraysFactoryRepo.ConnectCableTraysAndMEPElementsWithConnectorsInSameLocation( cableTrayFactory.CableTrays, mepElements, _commandData); #endregion this.Close(); return; }