public void Create3DModelLine(XYZ p, XYZ q, string line_style, WorksetId id)
        {
            try
            {
                if (p.IsAlmostEqualTo(q))
                {
                    debugger.show(err: "Expected two different points.");
                    return;
                }
                Line line = Line.CreateBound(p, q);
                if (null == line)
                {
                    debugger.show(err: "Geometry line creation failed.");
                    return;
                }

                ModelCurve model_line_curve = null;
                model_line_curve = Info.DOC.Create.NewModelCurve(line, NewSketchPlanePassLine(line));

                Parameter workset_param = model_line_curve.get_Parameter(BuiltInParameter.ELEM_PARTITION_PARAM);
                workset_param.Set(Workset_Id.IntegerValue);

                // set linestyle
                ICollection <ElementId> styles = model_line_curve.GetLineStyleIds();
                foreach (ElementId eid in styles)
                {
                    Element e = Info.DOC.GetElement(eid);
                    if (e.Name == line_style)
                    {
                        model_line_curve.LineStyle = e;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                debugger.show(err: ex.ToString());
            }
        }
예제 #2
0
        /// <summary>
        ///     Set ModelCurve's graphics style color.
        /// </summary>
        /// <param name="modelCurve"></param>
        /// <param name="doc"></param>
        /// <param name="color"></param>
        private static void SetModelCurveColor(ModelCurve modelCurve, Document doc, Color color = null)
        {
            if (modelCurve is null)
            {
                throw new ArgumentNullException(nameof(modelCurve));
            }

            if (doc is null)
            {
                throw new ArgumentNullException(nameof(doc));
            }

            var lineCtg = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines);

            if (!lineCtg.SubCategories.Contains(MODEL_COLOR))
            {
                var modelCtg = doc.Settings.Categories.NewSubcategory(lineCtg, MODEL_COLOR);

                if (color == null)
                {
                    color = new Color(255, 0, 0);
                }

                modelCtg.LineColor = color;
            }

            var graphicsStyles = doc.GetInstanceElementList <GraphicsStyle>();

            var modelStyle = graphicsStyles.FirstOrDefault(f => f.GraphicsStyleCategory.Name == MODEL_COLOR);

            var parm = modelCurve.get_Parameter(BuiltInParameter.BUILDING_CURVE_GSTYLE);

            if (modelStyle != null)
            {
                parm.Set(modelStyle.Id);
            }
        }
예제 #3
0
        /// <summary>
        ///     Sets ModelCurve's style.
        /// </summary>
        /// <param name="modelCurve"></param>
        /// <param name="lineName"></param>
        /// <param name="color"></param>
        public static void SetModelCurve(this ModelCurve modelCurve, string lineName = null, Color color = null)
        {
            if (modelCurve is null)
            {
                return;
            }

            var doc     = modelCurve.Document;
            var lineCtg = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines);

            if (string.IsNullOrWhiteSpace(lineName))
            {
                lineName = Resources.DebugLine;
            }

            if (!lineCtg.SubCategories.Contains(lineName))
            {
                if (color == null)
                {
                    color = new Color(255, 0, 0);
                }

                var modelCtg = doc.Settings.Categories.NewSubcategory(lineCtg, lineName);

                modelCtg.LineColor = color;
            }

            var graphicsStyles = doc.GetInstanceList <GraphicsStyle>();
            var modelStyle     = graphicsStyles.FirstOrDefault(f => f.GraphicsStyleCategory.Name == lineName);
            var parm           = modelCurve.get_Parameter(BuiltInParameter.BUILDING_CURVE_GSTYLE);

            if (modelStyle != null)
            {
                parm.Set(modelStyle.Id);
            }
        }