Ejemplo n.º 1
0
        /// <summary>
        /// Returns a list of desk Revit family instances using the Desk stored in the DeskArrangement.
        /// </summary>
        /// <param name="deskArrangement"> The DeskArrangement object.</param>
        /// <param name="deskType"> The desk type.</param>
        /// <param name="hostLevel"> The host hostLevel for the new desks.</param>
        public static List <DynamoElement> Generate(DeskArrangement deskArrangement, DynamoFamilyType deskType, DynamoLevel hostLevel)
        {
            Document doc = DocumentManager.Instance.CurrentDBDocument;

            TransactionManager.Instance.EnsureInTransaction(doc);

            FamilySymbol newDeskType = FamilyTypeCreator.Desk((FamilySymbol)deskType.InternalElement, deskArrangement, "AU 2019 Vegas Desk");

            // Get the Revit Document factory object from the Autodesk.Revit.DB.Creation namespace.
            // This object is used to instantiate most Revit Elements.
            var revitFactory = doc.Create;

            var revitDesks = new List <DynamoElement>();

            foreach (var desk in deskArrangement.Desks)
            {
                XYZ location       = desk.Origin.ToXyz();
                var familyInstance = revitFactory.NewFamilyInstance(location, newDeskType, hostLevel.InternalElement, StructuralType.NonStructural);

                // Wrap and bind the new desk instance.
                revitDesks.Add(familyInstance.ToDSType(false));
            }

            TransactionManager.Instance.TransactionTaskDone();

            return(revitDesks);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Duplicates the given FamilySymbol with the deskTypeName and sets the Width and Depth with the given values.
        /// </summary>
        internal static FamilySymbol Desk(FamilySymbol deskType, DeskArrangement deskArrangement, string deskTypeName)
        {
            FamilySymbol newDeskType = (FamilySymbol)deskType.Duplicate(deskTypeName);

            List <string> paramNameLookUp = new List <string> {
                "Width", "Depth"
            };

            Desk          firstDesk  = deskArrangement.Desks.First();
            List <double> dimensions = new List <double> {
                firstDesk.Width, firstDesk.Length
            };

            for (int i = 0; i < paramNameLookUp.Count; i++)
            {
                Parameter parameter = newDeskType.LookupParameter(paramNameLookUp[i]);

                // convert the dimension into Revits internal units.
                double dimensionInFt = UnitUtils.ConvertToInternalUnits(dimensions[i], DisplayUnitType.DUT_MILLIMETERS);

                parameter.Set(dimensionInFt);
            }

            return(newDeskType);
        }