Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #10

Merged
merged 3 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion NijhofAddIn/NijhofAddIn.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@

<PropertyGroup>
<PackageId>NijhofAddIn</PackageId>
<Version>1.2.0</Version>
<Version>1.2.1</Version>
</PropertyGroup>

<PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion NijhofAddIn/Revit/App.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion NijhofAddIn/Revit/Commands/Elektra/Schakelaars.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
160 changes: 94 additions & 66 deletions NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWAArtikelnummer.cs
Original file line number Diff line number Diff line change
@@ -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<PipeType>()
.FirstOrDefault(pt => pt.Name == "DYKA PVC Hemelwaterafvoer_HWA 6m");

}
return false;
})
.Cast<Element>()
.ToList();
PipeType targetPipeType100 = pipeTypeCollector
.Cast<PipeType>()
.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;
}
}
44 changes: 29 additions & 15 deletions NijhofAddIn/Revit/Commands/Wijzigen/UpdateHWALengte.cs
Original file line number Diff line number Diff line change
@@ -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
{
Expand All @@ -24,16 +22,16 @@ public Result Execute(

// Definieer de pijp types die je wilt zoeken
List<string> pipeTypeNames = new List<string>
{
"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();

Expand All @@ -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++;
}
}
Expand Down