public static bool TrySetUserString <T>(this GeometryBase geometry, string key, T value, T def) where T : IConvertible
        {
            if (value.Equals(def))
            {
                return(geometry.SetUserString(key, null));
            }

            var stringValue = (string)System.Convert.ChangeType(value, typeof(string), System.Globalization.CultureInfo.InvariantCulture);

            return(geometry.SetUserString(key, stringValue));
        }
Exemple #2
0
        public void SaveData(GeometryBase geometry)
        {
            if (elementSizeCheckBox.Checked)
            {
                geometry.SetUserString("Ibra.MaxElementSize", elementSizeTextBox.Text);
            }
            else
            {
                geometry.UserDictionary.Remove("Ibra.MaxElementSize");
            }

            if (polynomialDegreeCheckBox.Checked)
            {
                geometry.SetUserString("Ibra.MinPolynomialDegree", elementSizeTextBox.Text);
            }
            else
            {
                geometry.UserDictionary.Remove("Ibra.MinPolynomialDegree");
            }
        }
        /// <summary>
        /// Set graphic attributes to <see cref="GeometryBase"/> <paramref name="geometry"/> from Context
        /// </summary>
        /// <param name="geometry"></param>
        /// <returns><paramref name="geometry"/> with graphic attributes</returns>
        static GeometryBase SetGraphicAttributes(GeometryBase geometry)
        {
            if (geometry is object)
            {
                var context = Context.Peek;
                if (context.Element is object)
                {
                    if (context.GraphicsStyleId.IsValid() && context.Element.Document.GetElement(context.GraphicsStyleId) is DB.GraphicsStyle graphicsStyle)
                    {
                        var category = graphicsStyle.GraphicsStyleCategory;
                        geometry.SetUserString(DB.BuiltInParameter.FAMILY_ELEM_SUBCATEGORY.ToString(), category.Id.IntegerValue.ToString());
                    }

                    if (context.MaterialId.IsValid() && context.Element.Document.GetElement(context.MaterialId) is DB.Material material)
                    {
                        geometry.SetUserString(DB.BuiltInParameter.MATERIAL_ID_PARAM.ToString(), material.Id.IntegerValue.ToString());
                    }
                }
            }

            return(geometry);
        }