Skip to content

Commit

Permalink
Changed name of the nodes
Browse files Browse the repository at this point in the history
Based on Colin's suggestion I changed the names for two nodes
CreateEnergyModelFromMassAndLevels > CreateByMassLevels
CreateEnergyModelFromMass > CreateByMass
  • Loading branch information
mostaphaRoudsari committed Nov 21, 2014
1 parent e14effd commit 0426c08
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 12 deletions.
12 changes: 7 additions & 5 deletions src/EnergyAnalysisForDynamo/PrepareEnergyModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ namespace EnergyAnalysisForDynamo
/// </summary>
public static class PrepareEnergyModel
{

/// <summary>
/// Draws a point around the center of an analysis surface. Useful for sorting/grouping surfaces upstream of a SetSurfaceParameters node.
/// </summary>
Expand Down Expand Up @@ -81,6 +82,7 @@ public static Autodesk.DesignScript.Geometry.Point AnalysisSurfacePoint(ElementI
Autodesk.DesignScript.Geometry.Point outPoint = getAveragePointFromFace(smallFace);
return outPoint;
}


/// <summary>
/// Returns a vector represnting the normal of an analysis surface. Useful for sorting/grouping surfaces upstream of a SetSurfaceParameters node.
Expand Down Expand Up @@ -146,7 +148,7 @@ public static Autodesk.DesignScript.Geometry.Vector AnalysisSurfaceVector(Elemen
/// <param name="Levels">A list of levels to create mass floors with</param>
/// <returns></returns>
[MultiReturn("MassFamilyInstance", "ZoneIds", "WallSurfaceIds", "RoofSurfaceIds")]
public static Dictionary<string, object> CreateEnergyModelFromMassAndLevels(AbstractFamilyInstance MassFamilyInstance, List<Revit.Elements.Element> Levels)
public static Dictionary<string, object> CreateByMassLevels(AbstractFamilyInstance MassFamilyInstance, List<Revit.Elements.Element> Levels)
{
//local varaibles
Document RvtDoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument.Document;
Expand Down Expand Up @@ -235,7 +237,7 @@ public static Autodesk.DesignScript.Geometry.Vector AnalysisSurfaceVector(Elemen
/// <param name="MassFamilyInstance">The conceptual mass family instance to create zones from</param>
/// <returns></returns>
[MultiReturn("MassFamilyInstance", "ZoneIds", "WallSurfaceIds", "RoofSurfaceIds")]
public static Dictionary<string, object> CreateEnergyModelFromMass(AbstractFamilyInstance MassFamilyInstance)
public static Dictionary<string, object> CreateByMass(AbstractFamilyInstance MassFamilyInstance)
{
//local varaibles
Document RvtDoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument.Document;
Expand Down Expand Up @@ -370,7 +372,7 @@ public static Autodesk.DesignScript.Geometry.Mesh DrawAnalysisSurface(ElementId
Autodesk.Revit.DB.Mesh prettyMesh = smallFace.Triangulate();
return Revit.GeometryConversion.RevitToProtoMesh.ToProtoType(prettyMesh);
}

/// <summary>
/// Draws an analysis zone in Dynamo. Use this to identify which zone is which in the CreateFromMass/CreateFromMassAndLevels 'ZoneIds' output list.
/// </summary>
Expand Down Expand Up @@ -790,7 +792,7 @@ private static bool PointsEqual(Autodesk.DesignScript.Geometry.Point a, Autodesk
}
return false;
}

private static Autodesk.DesignScript.Geometry.Point getAveragePointFromFace(Autodesk.Revit.DB.Face f)
{
//the point to return
Expand Down Expand Up @@ -828,7 +830,6 @@ private static Autodesk.DesignScript.Geometry.Point getAveragePointFromFace(Auto
Autodesk.DesignScript.Geometry.Mesh m = Revit.GeometryConversion.RevitToProtoMesh.ToProtoType(pf.Triangulate());
var points = m.VertexPositions;


int numVertices = points.Count();
double x = 0, y = 0, z = 0;
foreach (var v in points)
Expand All @@ -845,6 +846,7 @@ private static Autodesk.DesignScript.Geometry.Point getAveragePointFromFace(Auto
}
return p;
}


private static Autodesk.Revit.DB.Face GetSmallestFace(Document RvtDoc, MassSurfaceData surf, Autodesk.Revit.DB.ElementId myEnergyModelId)
{
Expand Down
64 changes: 57 additions & 7 deletions src/EnergyAnalysisForDynamo/RunAnalysis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -223,11 +223,12 @@ public static class RunAnalysis
/// </summary>
/// <param name="FilePath"> Specify the file path location to save gbXML file </param>
/// <param name="MassFamilyInstance"> Input Mass Id </param>
/// <param name="MassShadingInstances"> Input Mass Ids for shading objects </param>
/// <param name="Run"> Set Boolean True. Default is false </param>
/// <returns name="report"> Success? </returns>
/// <returns name="gbXMLPath"></returns>
[MultiReturn("report", "gbXMLPath")]
public static Dictionary<string, object> ExportMassToGBXML(string FilePath, AbstractFamilyInstance MassFamilyInstance, Boolean Run = false)
public static Dictionary<string, object> ExportMassToGBXML(string FilePath, AbstractFamilyInstance MassFamilyInstance, List<AbstractFamilyInstance> MassShadingInstances, Boolean Run = false)
{
Boolean IsSuccess = false;

Expand Down Expand Up @@ -258,10 +259,34 @@ public static class RunAnalysis
MassEnergyAnalyticalModel mea = (MassEnergyAnalyticalModel)RvtDoc.GetElement(myEnergyModelId);
ICollection<Autodesk.Revit.DB.ElementId> ZoneIds = mea.GetMassZoneIds();

MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(ZoneIds.ToList()); // two constructors


RvtDoc.Export(Folder, FileName, gbXmlExportOptions);
// get shading Ids
List<Autodesk.Revit.DB.ElementId> ShadingIds = new List<Autodesk.Revit.DB.ElementId>();
for (int i = 0; i < MassShadingInstances.Count(); i++)
{

// make sure input mass is valid as a shading
if (MassInstanceUtils.GetMassLevelDataIds(RvtDoc, MassShadingInstances[i].InternalElement.Id).Count() > 0)
{
throw new Exception("Item " + i.ToString() + " in MassShadingInstances has mass floors assigned. Remove the mass floors and try again.");
}

ShadingIds.Add(MassShadingInstances[i].InternalElement.Id);
}

if (ShadingIds.Count != 0)
{
MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(ZoneIds.ToList(), ShadingIds); // two constructors
RvtDoc.Export(Folder, FileName, gbXmlExportOptions);

}
else
{
MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(ZoneIds.ToList()); // two constructors
RvtDoc.Export(Folder, FileName, gbXmlExportOptions);
}


// if the file exists return success message if not return failed message
string path = Path.Combine(Folder, FileName + ".xml");
Expand Down Expand Up @@ -325,11 +350,12 @@ public static class RunAnalysis
/// </summary>
/// <param name="FilePath"> Specify the file path location to save gbXML file </param>
/// <param name="ZoneIds"> Input Zone IDs</param>
/// <param name="MassShadingInstances"> Input Mass Ids for shading objects </param>
/// <param name="Run">Set Boolean True. Default is false </param>
/// <returns name="report"> Success? </returns>
/// <returns name="gbXMLPath"></returns>
[MultiReturn("report", "gbXMLPath")]
public static Dictionary<string, object> ExportZonesToGBXML(string FilePath, List<ElementId> ZoneIds, Boolean Run = false)
public static Dictionary<string, object> ExportZonesToGBXML(string FilePath, List<ElementId> ZoneIds, List<AbstractFamilyInstance> MassShadingInstances, Boolean Run = false)
{
Boolean IsSuccess = false;

Expand Down Expand Up @@ -358,12 +384,36 @@ public static class RunAnalysis
//convert the ElementId wrapper instances to actual Revit ElementId objects
List<Autodesk.Revit.DB.ElementId> outZoneIds = ZoneIds.Select(e => new Autodesk.Revit.DB.ElementId(e.InternalId)).ToList();

// Create gbXML
MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(outZoneIds);

RvtDoc.Export(Folder, FileName, gbXmlExportOptions);
// get shading Ids
List<Autodesk.Revit.DB.ElementId> ShadingIds = new List<Autodesk.Revit.DB.ElementId>();
for (int i = 0; i < MassShadingInstances.Count(); i++)
{

// make sure input mass is valid as a shading
if (MassInstanceUtils.GetMassLevelDataIds(RvtDoc, MassShadingInstances[i].InternalElement.Id).Count() > 0)
{
throw new Exception("Item " + i.ToString() + " in MassShadingInstances has mass floors assigned. Remove the mass floors and try again.");
}

ShadingIds.Add(MassShadingInstances[i].InternalElement.Id);
}

if (ShadingIds.Count != 0)
{
// Create gbXML with shadings
MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(outZoneIds.ToList(), ShadingIds); // two constructors
RvtDoc.Export(Folder, FileName, gbXmlExportOptions);

}
else
{
// Create gbXML
MassGBXMLExportOptions gbXmlExportOptions = new MassGBXMLExportOptions(outZoneIds.ToList()); // two constructors
RvtDoc.Export(Folder, FileName, gbXmlExportOptions);
}


// if the file exists return success message if not return failed message
string path = Path.Combine(Folder, FileName + ".xml");

Expand Down

0 comments on commit 0426c08

Please sign in to comment.