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()); } }
/// <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); } }
/// <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); } }