RevitAPI 创建新的线样式


namespace RevitDemo
{
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIApplication uiApp = commandData.Application;
            UIDocument uiDoc = uiApp.ActiveUIDocument;
            Autodesk.Revit.DB.Document doc = uiDoc.Document;

            Transaction trans = new Transaction(doc, "ExComm");
            trans.Start();


            //获取要创建的线样式的parent
            Category lineCategory = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines);

            //获取隐藏线的对象样式,用于给新的线样式设置线型
            Category lineCategory1 = doc.Settings.Categories.get_Item(BuiltInCategory.OST_LinesHiddenLines);

            //创建新的线样式
            Category newCategory = doc.Settings.Categories.NewSubcategory(lineCategory, "用已有线型创建的样式");
            Autodesk.Revit.DB.Color newColor = new Autodesk.Revit.DB.Color(red: 255, green: 0, blue: 0);
            newCategory.LineColor = newColor;//设置颜色
            newCategory.SetLineWeight(4, GraphicsStyleType.Projection);//设置线宽
            newCategory.SetLinePatternId(lineCategory1.GetLinePatternId(GraphicsStyleType.Projection), GraphicsStyleType.Projection);//设置线型

            //创建新的线样式
            Category newCategory1 = doc.Settings.Categories.NewSubcategory(lineCategory, "用新的线型创建的样式");
            Autodesk.Revit.DB.Color newColor1 = new Autodesk.Revit.DB.Color(red: 0, green: 255, blue: 0);
            newCategory1.LineColor = newColor1;//设置颜色
            newCategory1.SetLineWeight(9, GraphicsStyleType.Projection);//设置线宽
            //创建新的线型
            LinePattern linePattern = new LinePattern("新的线型");
            List<LinePatternSegment> segments = new List<LinePatternSegment> //线型的图案由划线,点,和空格组成,开头必须为划线或者点,每个划线和点后面必须只跟一个空格
            {
                new LinePatternSegment(LinePatternSegmentType.Dash, 2 / 304.8),
                new LinePatternSegment(LinePatternSegmentType.Space, 2 / 304.8),
                new LinePatternSegment(LinePatternSegmentType.Dot, 0),
                new LinePatternSegment(LinePatternSegmentType.Space, 2 / 304.8),
                new LinePatternSegment(LinePatternSegmentType.Dot, 0),
                new LinePatternSegment(LinePatternSegmentType.Space, 2 / 304.8)
            };
            linePattern.SetSegments(segments);
            //将线型加入到文档中
            LinePatternElement linePatternElement = LinePatternElement.Create(doc, linePattern);
            //设置线样式的线型
            newCategory1.SetLinePatternId(linePatternElement.Id, GraphicsStyleType.Projection);//设置线型

            //GraphicsStyle gs = newCategory.GetGraphicsStyle(GraphicsStyleType.Projection);//
            //DetailCurve DetailLine = doc.Create.NewDetailCurve(viewSection, line);
            //DetailLine.LineStyle = gs;
            #endregion

            trans.Commit();
            return Result.Succeeded;
        }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值