/// <summary> /// Create a Vector Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="data"></param> /// <param name="resultsName"></param> /// <param name="description"></param> /// <param name="unitType"></param> private VectorAnalysisDisplay(Autodesk.Revit.DB.View view, VectorData data, string resultsName, string description, Type unitType) { var sfm = GetSpatialFieldManagerFromView(view); TransactionManager.Instance.EnsureInTransaction(Document); sfm.Clear(); sfm.SetMeasurementNames(new List <string>() { Properties.Resources.Dynamo_AVF_Data_Name }); var primitiveIds = new List <int>(); InternalSetSpatialFieldManager(sfm); var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(); InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); primitiveIds.Add(primitiveId); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Create a Point Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="sampleLocations"></param> /// <param name="samples"></param> private PointAnalysisDisplay(Autodesk.Revit.DB.View view, IEnumerable <Autodesk.Revit.DB.XYZ> sampleLocations, IEnumerable <double> samples) { var sfm = GetSpatialFieldManagerFromView(view); var sfmAndIds = GetElementAndPrimitiveIdListFromTrace(); // the input view has changed, remove the old primitive from the old view if (sfmAndIds != null) { var oldSfm = sfmAndIds.Item1; var oldIds = sfmAndIds.Item2; foreach (var oldId in oldIds) { oldSfm.RemoveSpatialFieldPrimitive(oldId); } } TransactionManager.Instance.EnsureInTransaction(Document); InternalSetSpatialFieldManager(sfm); InternalSetSpatialFieldValues(sampleLocations, samples); SetElementAndPrimitiveIdListTrace(SpatialFieldManager, primitiveIds); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// /// </summary> /// <param name="view"></param> /// <param name="data"></param> protected FaceAnalysisDisplay( Autodesk.Revit.DB.View view, ISurfaceData <Autodesk.DesignScript.Geometry.UV, double> data, string resultsName, string description, Type unitType) { var sfm = GetSpatialFieldManagerFromView(view); // create a new spatial field primitive TransactionManager.Instance.EnsureInTransaction(Document); sfm.Clear(); sfm.SetMeasurementNames(new List <string>() { Properties.Resources.Dynamo_AVF_Data_Name }); InternalSetSpatialFieldManager(sfm); var primitiveIds = new List <int>(); var reference = data.Surface.Tags.LookupTag(DefaultTag) as Reference; if (reference == null) { // Dont' throw an exception here. Handle the case of a bad tag // in the static constructor. return; } var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(reference); primitiveIds.Add(primitiveId); InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// /// </summary> /// <param name="view"></param> /// <param name="data"></param> protected FaceAnalysisDisplay( Autodesk.Revit.DB.View view, IEnumerable <ISurfaceAnalysisData <Autodesk.DesignScript.Geometry.UV, double> > data, string resultsName, string description, Type unitType) { var sfm = GetSpatialFieldManagerFromView(view, (uint)data.First().Results.Count()); //var sfmAndId = GetElementAndPrimitiveIdFromTrace(); // we can rebind as we're dealing with the same view //if (sfmAndId != null && sfmAndId.Item1.Id == sfm.Id) //{ // InternalSetSpatialFieldManager(sfmAndId.Item1); // InternalSetSpatialPrimitiveIds(sfmAndId.Item2); // InternalSetSpatialFieldValues(sampleLocations, samples); // return; //} //// the input view has changed, remove the old primitive from the old view //if (sfmAndId != null) //{ // var oldSfm = sfmAndId.Item1; // var oldId = sfmAndId.Item2; // oldSfm.RemoveSpatialFieldPrimitive(oldId); //} // create a new spatial field primitive TransactionManager.Instance.EnsureInTransaction(Document); // TEMPORARY UNTIL WE RESOLVE TRACE sfm.Clear(); sfm.SetMeasurementNames(data.SelectMany(d => d.Results.Keys).Distinct().ToList()); InternalSetSpatialFieldManager(sfm); var primitiveIds = new List <int>(); foreach (var d in data) { var reference = d.Surface.Tags.LookupTag(DefaultTag) as Reference; if (reference == null) { continue; } var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(reference); primitiveIds.Add(primitiveId); InternalSetSpatialFieldValues(primitiveId, d, resultsName, description, unitType); } //SetElementAndPrimitiveIdsForTrace(SpatialFieldManager, primitiveIds); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Create a Point Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="sampleLocations"></param> /// <param name="samples"></param> private VectorAnalysisDisplay(Autodesk.Revit.DB.View view, IEnumerable <VectorAnalysisData> data, string resultsName, string description, Type unitType) { var sfm = GetSpatialFieldManagerFromView(view, (uint)data.First().Results.Count()); //var sfmAndId = GetElementAndPrimitiveIdFromTrace(); //// we can rebind as we're dealing with the same view //if (sfmAndId != null && sfmAndId.Item1.Id == sfm.Id) //{ // InternalSetSpatialFieldManager(sfm); // //InternalSetPrimitiveId(sfmAndId.Item2); // InternalSetSpatialFieldValues(sampleLocations, samples); // return; //} //// the input view has changed, remove the old primitive from the old view //if (sfmAndId != null) //{ // var oldSfm = sfmAndId.Item1; // var oldId = sfmAndId.Item2; // oldSfm.RemoveSpatialFieldPrimitive(oldId); //} TransactionManager.Instance.EnsureInTransaction(Document); // TEMPORARY UNTIL WE RESOLVE TRACE sfm.Clear(); var vectorAnalysisDatas = data as VectorAnalysisData[] ?? data.ToArray(); sfm.SetMeasurementNames(vectorAnalysisDatas.SelectMany(d => d.Results.Keys).Distinct().ToList()); var primitiveIds = new List <int>(); InternalSetSpatialFieldManager(sfm); foreach (var d in vectorAnalysisDatas) { var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(); InternalSetSpatialFieldValues(primitiveId, d, resultsName, description, unitType); primitiveIds.Add(primitiveId); } //SetElementAndPrimitiveIdsForTrace(SpatialFieldManager, primitiveIds); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Create a Vector Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="data"></param> /// <param name="resultsName"></param> /// <param name="description"></param> /// <param name="unitType"></param> private VectorAnalysisDisplay(Autodesk.Revit.DB.View view, VectorData data, string resultsName, string description, Type unitType) { SpatialFieldManager sfm; var primitiveIds = new List <int>(); TransactionManager.Instance.EnsureInTransaction(Document); var TraceData = GetElementAndPrimitiveIdFromTrace(); if (TraceData != null) { sfm = TraceData.Item1; primitiveIds = TraceData.Item2; foreach (var idx in primitiveIds) { sfm.RemoveSpatialFieldPrimitive(idx); } primitiveIds.Clear(); } else { sfm = GetSpatialFieldManagerFromView(view); sfm.SetMeasurementNames(new List <string>() { Properties.Resources.Dynamo_AVF_Data_Name }); } InternalSetSpatialFieldManager(sfm); var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(); InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); primitiveIds.Add(primitiveId); InternalSetSpatialPrimitiveIds(primitiveIds); TransactionManager.Instance.TransactionTaskDone(); SetElementAndPrimitiveIdsForTrace(sfm, primitiveIds); }
/// <summary> /// Create a Point Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="sampleLocations"></param> /// <param name="samples"></param> private PointAnalysisDisplay(Autodesk.Revit.DB.View view, IEnumerable <PointAnalysisData> data, string resultsName, string description, Type unitType) { var sfm = GetSpatialFieldManagerFromView(view, (uint)data.First().Results.Count()); //var sfmAndIds = GetElementAndPrimitiveIdListFromTrace(); //// the input view has changed, remove the old primitive from the old view //if (sfmAndIds != null) //{ // var oldSfm = sfmAndIds.Item1; // var oldIds = sfmAndIds.Item2; // foreach (var oldId in oldIds) // { // oldSfm.RemoveSpatialFieldPrimitive(oldId); // } //} TransactionManager.Instance.EnsureInTransaction(Document); // TEMPORARY UNTIL WE RESOLVE TRACE sfm.Clear(); var pointAnalysisData = data as PointAnalysisData[] ?? data.ToArray(); sfm.SetMeasurementNames(pointAnalysisData.SelectMany(d => d.Results.Keys).Distinct().ToList()); var primitiveIds = new List <int>(); InternalSetSpatialFieldManager(sfm); foreach (var d in pointAnalysisData) { InternalSetSpatialFieldValues(d, ref primitiveIds, resultsName, description, unitType); } //SetElementAndPrimitiveIdsForTrace(SpatialFieldManager, primitiveIds); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Create a Point Analysis Display in the current view /// </summary> /// <param name="view"></param> /// <param name="faceReference"></param> /// <param name="sampleLocations"></param> /// <param name="samples"></param> private FaceAnalysisDisplay(Autodesk.Revit.DB.View view, Reference faceReference, IEnumerable <Autodesk.Revit.DB.UV> sampleLocations, IEnumerable <double> samples) { var sfm = GetSpatialFieldManagerFromView(view); var sfmAndId = GetElementAndPrimitiveIdFromTrace(); // we can rebind as we're dealing with the same view if (sfmAndId != null && sfmAndId.Item1.Id == sfm.Id) { InternalSetSpatialFieldManager(sfmAndId.Item1); InternalSetPrimitiveId(sfmAndId.Item2); InternalSetSpatialFieldValues(sampleLocations, samples); return; } // the input view has changed, remove the old primitive from the old view if (sfmAndId != null) { var oldSfm = sfmAndId.Item1; var oldId = sfmAndId.Item2; oldSfm.RemoveSpatialFieldPrimitive(oldId); } // create a new spatial field primitive TransactionManager.Instance.EnsureInTransaction(Document); InternalSetSpatialFieldManager(sfm); var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(faceReference); InternalSetPrimitiveId(primitiveId); InternalSetSpatialFieldValues(sampleLocations, samples); SetElementAndPrimitiveIdForTrace(SpatialFieldManager, primitiveId); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// /// </summary> /// <param name="view"></param> /// <param name="data"></param> /// <param name="resultsName"></param> /// <param name="description"></param> /// <param name="unitType"></param> protected FaceAnalysisDisplay( Autodesk.Revit.DB.View view, ISurfaceData <Autodesk.DesignScript.Geometry.UV, double> data, string resultsName, string description, Type unitType) { SpatialFieldManager sfm; // create a new spatial field primitive TransactionManager.Instance.EnsureInTransaction(Document); var refPriIds = new Dictionary <Reference, int>(); var primitiveIds = new List <int>(); var reference = data.Surface.Tags.LookupTag(DefaultTag) as Reference; if (reference == null) { // Dont' throw an exception here. Handle the case of a bad tag // in the static constructor. return; } var TraceData = GetElementAndRefPrimitiveIdFromTrace(); if (TraceData != null) { sfm = TraceData.Item1; refPriIds = TraceData.Item2; InternalSetSpatialFieldManager(sfm); int primitiveId; if (refPriIds.TryGetValue(reference, out primitiveId)) { InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); TransactionManager.Instance.TransactionTaskDone(); return; } else { foreach (var refPriId in refPriIds) { sfm.RemoveSpatialFieldPrimitive(refPriId.Value); } refPriIds.Clear(); primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(reference); primitiveIds.Add(primitiveId); refPriIds.Add(reference, primitiveId); InternalSetSpatialPrimitiveIds(primitiveIds); InternalSetReferencePrimitiveIdPairs(refPriIds); InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); } } else { sfm = GetSpatialFieldManagerFromView(view); sfm.SetMeasurementNames(new List <string>() { Properties.Resources.Dynamo_AVF_Data_Name }); InternalSetSpatialFieldManager(sfm); var primitiveId = SpatialFieldManager.AddSpatialFieldPrimitive(reference); primitiveIds.Add(primitiveId); refPriIds.Add(reference, primitiveId); InternalSetSpatialPrimitiveIds(primitiveIds); InternalSetReferencePrimitiveIdPairs(refPriIds); InternalSetSpatialFieldValues(primitiveId, data, resultsName, description, unitType); } TransactionManager.Instance.TransactionTaskDone(); SetElementAndRefPrimitiveIdsForTrace(); }