Esempio n. 1
0
        public List <ApplicationPlaceholderObject> AlignmentToNative(Alignment alignment)
        {
            var docObj = GetExistingElementByApplicationId(alignment.applicationId);

            //delete and re-create line
            //TODO: check if can be modified
            if (docObj != null)
            {
                Doc.Delete(docObj.Id);
            }

            var curves          = CurveToNative(alignment.curves);
            var placeholders    = new List <ApplicationPlaceholderObject>();
            var curveEnumerator = curves.GetEnumerator();

            while (curveEnumerator.MoveNext() && curveEnumerator.Current != null)
            {
                var           baseCurve  = curveEnumerator.Current as DB.Curve;
                DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve, Doc));
                var           lineStyles = revitCurve.GetLineStyleIds().First();
                placeholders.Add(new ApplicationPlaceholderObject()
                {
                    applicationId = alignment.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve
                });
            }
            return(placeholders);
        }
Esempio n. 2
0
        public List <ApplicationPlaceholderObject> ModelCurveToNative(ModelCurve speckleCurve)
        {
            var docObj = GetExistingElementByApplicationId(speckleCurve.applicationId);

            //delete and re-create line
            //TODO: check if can be modified
            if (docObj != null)
            {
                Doc.Delete(docObj.Id);
            }

            var curves          = CurveToNative(speckleCurve.baseCurve);
            var placeholders    = new List <ApplicationPlaceholderObject>();
            var curveEnumerator = curves.GetEnumerator();

            while (curveEnumerator.MoveNext() && curveEnumerator.Current != null)
            {
                var           baseCurve  = curveEnumerator.Current as DB.Curve;
                DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve, Doc));

                var lineStyles  = revitCurve.GetLineStyleIds();
                var lineStyleId = lineStyles.FirstOrDefault(x => Doc.GetElement(x).Name == speckleCurve.lineStyle);
                if (lineStyleId != null)
                {
                    revitCurve.LineStyle = Doc.GetElement(lineStyleId);
                }
                placeholders.Add(new ApplicationPlaceholderObject()
                {
                    applicationId = speckleCurve.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve
                });
                //Report.Log($"Created ModelCurve {revitCurve.Id}");
            }

            return(placeholders);
        }
Esempio n. 3
0
        public List <ApplicationPlaceholderObject> ModelCurvesFromEnumerator(IEnumerator curveEnum, ICurve speckleLine)
        {
            var placeholders = new List <ApplicationPlaceholderObject>();

            while (curveEnum.MoveNext() && curveEnum.Current != null)
            {
                var curve = curveEnum.Current as DB.Curve;
                // Curves must be bound in order to be valid model curves
                if (!curve.IsBound)
                {
                    curve.MakeBound(speckleLine.domain.start ?? 0, speckleLine.domain.end ?? Math.PI * 2);
                }
                DB.ModelCurve revitCurve = null;

                if (Doc.IsFamilyDocument)
                {
                    revitCurve = Doc.FamilyCreate.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc));
                }
                else
                {
                    revitCurve = Doc.Create.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc));
                }

                Report.Log($"Created ModelCurve {revitCurve.Id}");
                placeholders.Add(new ApplicationPlaceholderObject()
                {
                    applicationId          = (speckleLine as Base).applicationId,
                    ApplicationGeneratedId = revitCurve.UniqueId,
                    NativeObject           = revitCurve
                });
            }

            return(placeholders);
        }
Esempio n. 4
0
        // This is to support raw geometry being sent to Revit (eg from rhino, gh, autocad...)
        public List <ApplicationPlaceholderObject> ModelCurveToNative(ICurve speckleLine)
        {
            // if it comes from GH it doesn't have an applicationId, the use the hash id
            if ((speckleLine as Base).applicationId == null)
            {
                (speckleLine as Base).applicationId = (speckleLine as Base).id;
            }

            var docObj = GetExistingElementByApplicationId((speckleLine as Base).applicationId);

            if (docObj != null)
            {
                Doc.Delete(docObj.Id);
            }

            var placeholders    = new List <ApplicationPlaceholderObject>();
            var curveEnumerator = CurveToNative(speckleLine).GetEnumerator();

            while (curveEnumerator.MoveNext() && curveEnumerator.Current != null)
            {
                var curve = curveEnumerator.Current as DB.Curve;
                // Curves must be bound in order to be valid model curves
                if (!curve.IsBound)
                {
                    curve.MakeBound(speckleLine.domain.start ?? 0, speckleLine.domain.end ?? Math.PI * 2);
                }
                DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc));
                placeholders.Add(new ApplicationPlaceholderObject()
                {
                    applicationId = (speckleLine as Base).applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve
                });
            }

            return(placeholders);
        }
Esempio n. 5
0
        public ApplicationPlaceholderObject ModelCurveToNative(ModelCurve speckleCurve)
        {
            var docObj = GetExistingElementByApplicationId(speckleCurve.applicationId);

            //TODO: support poliline/polycurve lines
            var baseCurve = CurveToNative(speckleCurve.baseCurve).get_Item(0);

            //delete and re-create line
            //TODO: check if can be modified
            if (docObj != null)
            {
                Doc.Delete(docObj.Id);
            }

            DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve));

            var lineStyles  = revitCurve.GetLineStyleIds();
            var lineStyleId = lineStyles.FirstOrDefault(x => Doc.GetElement(x).Name == speckleCurve.lineStyle);

            if (lineStyleId != null)
            {
                revitCurve.LineStyle = Doc.GetElement(lineStyleId);
            }

            return(new ApplicationPlaceholderObject()
            {
                applicationId = speckleCurve.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve
            });
        }
Esempio n. 6
0
        public ModelCurve ModelCurveToSpeckle(DB.ModelCurve revitCurve)
        {
            var speckleCurve = new ModelCurve(CurveToSpeckle(revitCurve.GeometryCurve), revitCurve.LineStyle.Name);

            speckleCurve.elementId     = revitCurve.Id.ToString();
            speckleCurve.applicationId = revitCurve.UniqueId;
            speckleCurve.units         = ModelUnits;
            return(speckleCurve);
        }
Esempio n. 7
0
        public RoomBoundaryLine RoomBoundaryLineToSpeckle(DB.ModelCurve revitCurve)
        {
            var speckleCurve = new RoomBoundaryLine(CurveToSpeckle(revitCurve.GeometryCurve));

            speckleCurve.elementId     = revitCurve.Id.ToString();
            speckleCurve.applicationId = revitCurve.UniqueId;
            speckleCurve.units         = ModelUnits;
            return(speckleCurve);
        }
Esempio n. 8
0
        public SpaceSeparationLine SpaceSeparationLineToSpeckle(DB.ModelCurve revitCurve)
        {
            var speckleCurve = new SpaceSeparationLine(CurveToSpeckle(revitCurve.GeometryCurve));

            speckleCurve.elementId     = revitCurve.Id.ToString();
            speckleCurve.applicationId = revitCurve.UniqueId;
            speckleCurve.units         = ModelUnits;
            Report.Log($"Converted SpaceSeparationLine {revitCurve.Id}");
            return(speckleCurve);
        }
Esempio n. 9
0
        // This is to support raw geometry being sent to Revit (eg from rhino, gh, autocad...)
        public ApplicationPlaceholderObject ModelCurveToNative(ICurve speckleLine)
        {
            // if it comes from GH it doesn't have an applicationId, the use the hash id
            if ((speckleLine as Base).applicationId == null)
            {
                (speckleLine as Base).applicationId = (speckleLine as Base).id;
            }

            var docObj    = GetExistingElementByApplicationId((speckleLine as Base).applicationId);
            var baseCurve = CurveToNative(speckleLine).get_Item(0);

            if (docObj != null)
            {
                Doc.Delete(docObj.Id);
            }

            DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve));
            return(new ApplicationPlaceholderObject()
            {
                applicationId = (speckleLine as Base).applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve
            });
        }