Skip to content

Commit

Permalink
cn
Browse files Browse the repository at this point in the history
  • Loading branch information
ninhpham96 committed Feb 25, 2023
1 parent b18fa6f commit d5a6f82
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 1,069 deletions.
107 changes: 68 additions & 39 deletions RevitTools/CreateDuct/Command.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Collections.Generic;
using rvPoint = Autodesk.Revit.DB.Point;
using System.Linq;
using Autodesk.Revit.Attributes;
using System.Windows;
using Autodesk.Revit.DB.Mechanical;
using System.Diagnostics;
using System;
Expand Down Expand Up @@ -39,18 +37,17 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme

var target = FindPoint(DuctAccessories, DuctTerminal);

foreach (Connector conn in connectorsetTo)
{
var loca = conn.Origin;
}
XYZ point = new XYZ(-11.2576769679356, 16.8624946926416, 10.59824783557);

using (Transaction tran = new Transaction(doc, "tao duct"))
{
try
{
tran.Start();
MessageBox.Show(target.Count.ToString());
var listpoint = GetPointtoConnect(target[0].Item1, target[0].Item2);

//MessageBox.Show(listpoint[0].ToString() + "\n" + listpoint[1].ToString());

Duct newduct1 = Duct.Create(doc, ducttype.Id, lvID, target[0].Item1, listpoint[0]);
Duct newduct2 = Duct.Create(doc, ducttype.Id, lvID, target[0].Item2, listpoint[1]);
// //var newduct2 = Duct.Create(doc, ducttype.Id, lvID, connectorsetFrom[4], point);
// //var newduct1 = Duct.Create(doc, ducttype.Id, lvID, target[0].Item1, target[0].Item2);
// MessageBox.Show(target[0].Item2.Origin.ToString());
Expand Down Expand Up @@ -80,53 +77,43 @@ public List<Tuple<Connector, Connector>> FindPoint(FamilyInstance DuctAccessorie
List<Tuple<Connector, Connector>> listTarget = new List<Tuple<Connector, Connector>>();

//get connector of DuctAccessories
var connectorSetofDuctAccessories = DuctAccessories.MEPModel.ConnectorManager.UnusedConnectors;
ConnectorSetIterator iteratorofDuctAccessories = connectorSetofDuctAccessories.ForwardIterator();
while (iteratorofDuctAccessories.MoveNext())
foreach (Connector item in GetConnectors(DuctAccessories))
{
Connector connector = iteratorofDuctAccessories.Current as Connector;
if (connector != null && connector.Origin.Y >= locOrigin.Y)
{
connsFrom1.Add(connector);
}
else if (connector != null && connector.Origin.Y <= locOrigin.Y)
{
connsFrom2.Add(connector);
}
if(item.Origin.Y >= locOrigin.Y)
connsFrom1.Add(item);
else if(item.Origin.Y <= locOrigin.Y)
connsFrom2.Add(item);
}

//get connector of DuctAccessories
//get connector of DuctTerminal
foreach (FamilyInstance duct in listDuctTerminal)
{
var connectorSet = duct.MEPModel.ConnectorManager.UnusedConnectors;
ConnectorSetIterator iterator = connectorSet.ForwardIterator();
while (iterator.MoveNext())
foreach (Connector connector in GetConnectors(duct))
{
Connector connector = iterator.Current as Connector;
if (connector != null && connector.Origin.Y >= locOrigin.Y && connector.Origin.X <= locOrigin.X)
if (connector.Origin.Y >= locOrigin.Y && connector.Origin.X <= locOrigin.X)
{
connsTo1.Add(connector);
}
else if (connector != null && connector.Origin.Y >= locOrigin.Y && connector.Origin.X > locOrigin.X)
else if (connector.Origin.Y >= locOrigin.Y && connector.Origin.X > locOrigin.X)
{
connsTo2.Add(connector);
}
else if (connector != null && connector.Origin.Y <= locOrigin.Y && connector.Origin.X <= locOrigin.X)
else if (connector.Origin.Y <= locOrigin.Y && connector.Origin.X <= locOrigin.X)
{
connsTo3.Add(connector);
}
else if (connector != null && connector.Origin.Y < locOrigin.Y && connector.Origin.X > locOrigin.X)
else if (connector.Origin.Y < locOrigin.Y && connector.Origin.X > locOrigin.X)
{
connsTo4.Add(connector);
}
}

}
#region sort
//SORT THEO X MIN, Y MIN
connsFrom1.Sort((conn1, conn2) =>
{
int compareX = conn1.Origin.X.CompareTo(conn2.Origin.X);

if (compareX == 0)
{
return conn1.Origin.Y.CompareTo(conn2.Origin.Y);
Expand Down Expand Up @@ -187,9 +174,10 @@ public List<Tuple<Connector, Connector>> FindPoint(FamilyInstance DuctAccessorie
}
return compareX;
});
#endregion
for (int i = 0; i < connsFrom1.Count; i++)
{
if (connsTo1.Count>0)
if (connsTo1.Count > 0)
{
Tuple<Connector, Connector> tuple = new Tuple<Connector, Connector>(connsFrom1[i], connsTo1[0]);
listTarget.Add(tuple);
Expand Down Expand Up @@ -221,13 +209,54 @@ public List<Tuple<Connector, Connector>> FindPoint(FamilyInstance DuctAccessorie
continue;
}
}

MessageBox.Show(connsTo1.Count.ToString()+"\n"+
connsTo2.Count.ToString() + "\n"+
connsTo3.Count.ToString() + "\n" +
connsTo4.Count.ToString() + "\n");

return listTarget;
}
public List<XYZ> GetPointtoConnect(Connector fromconn, Connector toconn)
{
if (fromconn.CoordinateSystem.BasisZ.X == -1 || fromconn.CoordinateSystem.BasisZ.X == 1)
{
return new List<XYZ>()
{
new XYZ(toconn.Origin.X,fromconn.Origin.Y,fromconn.Origin.Z),
new XYZ(toconn.Origin.X,toconn.Origin.Y,fromconn.Origin.Z)
};
}
else if (fromconn.CoordinateSystem.BasisZ.Y == -1 || fromconn.CoordinateSystem.BasisZ.Y == 1)
{
return new List<XYZ>()
{
new XYZ(fromconn.Origin.X,toconn.Origin.Y,fromconn.Origin.Z),
new XYZ(toconn.Origin.X,toconn.Origin.Y,fromconn.Origin.Z)
};
}
else
return null;
}
public static List<Connector> GetConnectors(FamilyInstance fam)
{
List<Connector> connectors = new List<Connector>();
var connectorSetofDuctAccessories = fam.MEPModel.ConnectorManager.UnusedConnectors;
ConnectorSetIterator iteratorofDuctAccessories = connectorSetofDuctAccessories.ForwardIterator();
while (iteratorofDuctAccessories.MoveNext())
{
Connector connector = iteratorofDuctAccessories.Current as Connector;
if (connector != null)
connectors.Add(connector);
}
return connectors;
}
public static List<Connector> GetConnectors(Duct duct)
{
List<Connector> connectors = new List<Connector>();
var connectorSetofDuctAccessories = duct.ConnectorManager.UnusedConnectors;
ConnectorSetIterator iteratorofDuctAccessories = connectorSetofDuctAccessories.ForwardIterator();
while (iteratorofDuctAccessories.MoveNext())
{
Connector connector = iteratorofDuctAccessories.Current as Connector;
if (connector != null)
connectors.Add(connector);
}
return connectors;
}
}
}
4 changes: 2 additions & 2 deletions RevitTools/RevitTools.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Nice3point.Revit.Api.RevitAPI" Version="2023.1.1" />
<PackageReference Include="Nice3point.Revit.Api.RevitAPIUI" Version="2023.1.1" />
<PackageReference Include="Nice3point.Revit.Api.RevitAPI" Version="2022.1.21" />
<PackageReference Include="Nice3point.Revit.Api.RevitAPIUI" Version="2022.1.21" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit d5a6f82

Please sign in to comment.