예제 #1
0
        /// <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();
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
        /// <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();
        }
예제 #5
0
        /// <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();
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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();
        }
예제 #8
0
        /// <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();
        }