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++;
}
}