diff --git a/CHANGELOG.md b/CHANGELOG.md index 06014aa..61de1aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [UNRELEASED] -- Schakelaar: Vierpolig - Schakelaar: Beweging Wand - Schakelaar: Beweging Plafond - Schakelaar: Schemer @@ -14,6 +13,20 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Berekenfunctie en toebehoren voor riool - Berekenfunctie en toebehoren voor lucht +- UI verbeteren +- Optimaliseren + +---------------------------------------------------------------------------------------------------- + +## [1.2.1] / 2024-09-5 +### Added +- Schakelaar vierpolig + +### Fixed +- 'HWA Lengte' werkt weer naar behoren +- 'HWA Artikelnummer' werkt weer naar behoren +- 'Materiaal Lijst' heeft een 'Sluiten' knop en geeft geen melding meer als je via het kruisje afsluit + ---------------------------------------------------------------------------------------------------- ## [1.2.0] / 2024-09-3 diff --git a/NijhofAddIn/NijhofAddIn.csproj b/NijhofAddIn/NijhofAddIn.csproj index 1eec6f2..2597028 100644 --- a/NijhofAddIn/NijhofAddIn.csproj +++ b/NijhofAddIn/NijhofAddIn.csproj @@ -79,7 +79,7 @@ NijhofAddIn - 1.2.0 + 1.2.1 diff --git a/NijhofAddIn/Revit/App.cs b/NijhofAddIn/Revit/App.cs index d4d1d12..1075bfb 100644 --- a/NijhofAddIn/Revit/App.cs +++ b/NijhofAddIn/Revit/App.cs @@ -2208,7 +2208,7 @@ public Result OnStartup(UIControlledApplication app) /// Voeg de derde knop toe aan de dropdown PushButton buttonSchakelaarVierpolig = splitButtonSchakelaar.AddPushButton(btndataSchakelaarVierpolig); - buttonSchakelaarVierpolig.Enabled = false; + buttonSchakelaarVierpolig.Enabled = true; /// Voegt een horizontale lijn toe onder de knop splitButtonSchakelaar.AddSeparator(); diff --git a/NijhofAddIn/Revit/Commands/Elektra/Schakelaars.cs b/NijhofAddIn/Revit/Commands/Elektra/Schakelaars.cs index a259a40..28782b6 100644 --- a/NijhofAddIn/Revit/Commands/Elektra/Schakelaars.cs +++ b/NijhofAddIn/Revit/Commands/Elektra/Schakelaars.cs @@ -229,7 +229,7 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme Document doc = commandData.Application.ActiveUIDocument.Document; /// Stel de naam van de familie en het symbool in - string familyName = "4 Polige schakelaar (Werkschakelaar)"; // Specifieke familienaam + string familyName = "Schak_4polig"; // Specifieke familienaam string symbolName = "Standaard"; // Specifieke naam van het FamilySymbol string familyPathBase; diff --git a/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWAArtikelnummer.cs b/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWAArtikelnummer.cs index 4374305..48a83a6 100644 --- a/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWAArtikelnummer.cs +++ b/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWAArtikelnummer.cs @@ -1,91 +1,119 @@ -using Autodesk.Revit.Attributes; +using Autodesk.Revit.DB; using Autodesk.Revit.DB.Plumbing; -using Autodesk.Revit.DB; using Autodesk.Revit.UI; -using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace NijhofAddIn.Revit.Commands.Wijzigen +public class UpdateHWAArtikelnummer : IExternalCommand { - [Transaction(TransactionMode.Manual)] - [Regeneration(RegenerationOption.Manual)] - internal class UpdateHWAArtikelnummer : IExternalCommand + public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { - public Result Execute(ExternalCommandData extCmdData, ref string msg, ElementSet element) - { - UIApplication uiapp = extCmdData.Application; - UIDocument uidoc = uiapp.ActiveUIDocument; - Autodesk.Revit.ApplicationServices.Application app = uiapp.Application; - Document doc = uidoc.Document; + // Verkrijg het huidige document + Document doc = commandData.Application.ActiveUIDocument.Document; + // Maak een filter voor het zoeken naar Pipe types + ElementCategoryFilter pipeCategoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_PipeCurves); - var hwaPipes = new FilteredElementCollector(doc) - .OfClass(typeof(Pipe)) - .Where(a => - { - Parameter parameterType = a.LookupParameter("Article Type"); - Parameter parameterDiameter = a.LookupParameter("D1 Description"); - Parameter parameterArtikelNr = a.LookupParameter("Manufacturer Art. No."); - if (parameterType != null && parameterType.HasValue) - { - if (parameterType.AsString() == "HWA 6m" - && !(parameterArtikelNr.AsString() == "20033890")) - { - return parameterType.AsString() == "HWA 6m"; - } - else if (parameterType.AsString() == "PVC 5,55m" - && parameterDiameter.AsString() == "80" - && !(parameterArtikelNr.AsString() == "20033890")) - { - return parameterType.AsString() == "PVC 5,55m"; - } - else if (parameterType.AsString() == "HWA 5,55m" - && parameterDiameter.AsString() == "80" - && !(parameterArtikelNr.AsString() == "20033890")) - { - return parameterType.AsString() == "HWA 5,55m"; - } + // Verzameling van alle pipe types + FilteredElementCollector pipeTypeCollector = new FilteredElementCollector(doc) + .OfClass(typeof(PipeType)) + .WherePasses(pipeCategoryFilter); + // Vind de doel pipe types + PipeType targetPipeType80 = pipeTypeCollector + .Cast() + .FirstOrDefault(pt => pt.Name == "DYKA PVC Hemelwaterafvoer_HWA 6m"); - } - return false; - }) - .Cast() - .ToList(); + PipeType targetPipeType100 = pipeTypeCollector + .Cast() + .FirstOrDefault(pt => pt.Name == "DYKA PVC Hemelwaterafvoer_HWA 5,55m"); + if (targetPipeType80 == null || targetPipeType100 == null) + { + message = "Een van de doel pipe types is niet gevonden."; + return Result.Failed; + } - if (hwaPipes.Count == 0) - { - TaskDialog.Show("NT - HWA artikelnummer updater", "Alle ø80 HWA artikelen zijn geupdate naar het juiste artikelnummer. (20033890)"); - return Result.Cancelled; - } + int changedPipesCount = 0; + int totalPipesToChange = 0; - try - { + // Transactie voor het wijzigen van de pipe types en het aanpassen van parameters + using (Transaction trans = new Transaction(doc, "Vervang Pipe Types en Update Parameters")) + { + trans.Start(); - using (var transaction = new Transaction(doc, "NT - Artikel nr HWA update")) + // Zoek naar alle pijpen in het project + FilteredElementCollector pipeCollector = new FilteredElementCollector(doc) + .OfClass(typeof(Pipe)) + .WherePasses(pipeCategoryFilter); + + // Loop door alle pijpen en bepaal of er wijzigingen nodig zijn + foreach (Pipe pipe in pipeCollector) + { + // Controleer de "Size" parameter + Parameter sizeParam = pipe.LookupParameter("Size"); + if (sizeParam != null) { - transaction.Start(); + string sizeValue = sizeParam.AsString(); - foreach (Element pipe in hwaPipes) + // Zoek het "Manufacturer Art. No." parameter + Parameter manufacturerParam = pipe.LookupParameter("Manufacturer Art. No."); + + if (sizeValue == "ø80") { - Parameter para = pipe.LookupParameter("Manufacturer Art. No."); - para.Set("20033890"); + totalPipesToChange++; + + // Controleer of de pipe al het juiste type en artikelnummer heeft + if (pipe.GetTypeId() != targetPipeType80.Id || (manufacturerParam != null && manufacturerParam.AsString() != "20033890")) + { + // Vervang het pipe type door "DYKA PVC Hemelwaterafvoer_HWA 6m" + pipe.ChangeTypeId(targetPipeType80.Id); + changedPipesCount++; + + // Stel het artikelnummer in op 20033890 + if (manufacturerParam != null && !manufacturerParam.IsReadOnly) + { + manufacturerParam.Set("20033890"); + } + } } + else if (sizeValue == "ø100") + { + totalPipesToChange++; - TaskDialog.Show("NT - HWA artikelnummer updater", "Bij " + hwaPipes.Count + " pipe(s) is/zijn het artikelnummer geupdate."); + // Controleer of de pipe al het juiste type en artikelnummer heeft + if (pipe.GetTypeId() != targetPipeType100.Id || (manufacturerParam != null && manufacturerParam.AsString() != "20033900")) + { + // Vervang het pipe type door "DYKA PVC Hemelwaterafvoer_HWA 5,55m" + pipe.ChangeTypeId(targetPipeType100.Id); + changedPipesCount++; - transaction.Commit(); + // Stel het artikelnummer in op 20033900 + if (manufacturerParam != null && !manufacturerParam.IsReadOnly) + { + manufacturerParam.Set("20033900"); + } + } + } } } - catch (Exception ex) - { - TaskDialog.Show("Error", ex.Message); - } - return Result.Succeeded; + + trans.Commit(); + } + + // Toon een popup met het aantal wijzigingen + if (totalPipesToChange == 0) + { + TaskDialog.Show("Resultaat", "Geen pijpen gevonden om te controleren."); } + else if (changedPipesCount > 0) + { + TaskDialog.Show("Resultaat", $"{changedPipesCount} pijpen zijn bijgewerkt."); + } + else + { + TaskDialog.Show("Resultaat", "Alles is al geüpdatet."); + } + + return Result.Succeeded; } } diff --git a/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWALengte.cs b/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWALengte.cs index fc4c08c..964de6a 100644 --- a/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWALengte.cs +++ b/NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWALengte.cs @@ -1,11 +1,9 @@ using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; -using Autodesk.Revit.UI.Selection; +using Autodesk.Revit.DB.Plumbing; using Autodesk.Revit.UI; using System; using System.Collections.Generic; -using System.Linq; -using Autodesk.Revit.DB.Plumbing; namespace NijhofAddIn.Revit.Commands.Wijzigen { @@ -24,16 +22,16 @@ public Result Execute( // Definieer de pijp types die je wilt zoeken List pipeTypeNames = new List - { - "DYKA PVC Hemelwaterafvoer_HWA 5.55m", - "DYKA PVC Hemelwaterafvoer_HWA 6m", - "DYKA PVC Hemelwaterafvoer_PVC 5.55m" - }; + { + "DYKA PVC Hemelwaterafvoer_HWA 5,55m", + "DYKA PVC Hemelwaterafvoer_HWA 6m", + "DYKA PVC Hemelwaterafvoer_PVC 5,55m" + }; int modifiedPipesCount = 0; // Begin een transactie - using (Transaction tx = new Transaction(doc, "Update Pipe Top Elevation")) + using (Transaction tx = new Transaction(doc, "Update Pipe Length")) { tx.Start(); @@ -59,16 +57,32 @@ public Result Execute( // Bereken de huidige lengte van de pijp double currentLength = pipeLine.Length; - // Bepaal het verschil om de pijp naar 800 mm te brengen + // Bepaal de gewenste lengte (800 mm) double desiredLength = 800 / 304.8; // Revit gebruikt voet + + // Bereken het verschil tussen de huidige lengte en de gewenste lengte double lengthDifference = currentLength - desiredLength; - // Pas de Top Elevation aan - Parameter topElevationParam = pipe.get_Parameter(BuiltInParameter.RBS_PIPE_TOP_ELEVATION); - if (topElevationParam != null && !topElevationParam.IsReadOnly) + if (Math.Abs(lengthDifference) > 1e-9) { - double currentTopElevation = topElevationParam.AsDouble(); - topElevationParam.Set(currentTopElevation - lengthDifference); + // Verkrijg de huidige start- en eindpunten van de pijp + XYZ startPoint = pipeLine.GetEndPoint(0); + XYZ endPoint = pipeLine.GetEndPoint(1); + + // Verplaats de bovenkant van de pijp naar de gewenste hoogte + XYZ newEndPoint; + if (endPoint.Z > startPoint.Z) // Pijp gaat omhoog + { + newEndPoint = new XYZ(endPoint.X, endPoint.Y, startPoint.Z + desiredLength); + } + else // Pijp gaat omlaag + { + newEndPoint = new XYZ(startPoint.X, startPoint.Y, startPoint.Z + desiredLength); + } + + // Stel de nieuwe curve in (startpunt blijft hetzelfde) + (pipe.Location as LocationCurve).Curve = Line.CreateBound(startPoint, newEndPoint); + modifiedPipesCount++; } }