revit 二次开发 之创建放样体

revit 二次开发 之创建放样体

话不多说直接上代码

	[Transaction(TransactionMode.Manual)]
    [Regeneration(RegenerationOption.Manual)]
    public class Class1 : IExternalCommand
    {
        private UIApplication _App;
        private UIDocument    _uiDoc;
        private Document      _doc;
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            _App = commandData.Application;
            _uiDoc = _App.ActiveUIDocument;
            _doc = _uiDoc.Document;

            create();
            
            return Result.Succeeded;
        }

        private void create()
        {
            using (Transaction transaction = new Transaction(_doc, "curve"))
            {
                transaction.Start();

                // 创建截面
                Line line1 = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(400 / 304.8, 0, 0));
                Line line2 = Line.CreateBound(new XYZ(400 / 304.8, 0, 0), new XYZ(400 / 304.8, 600 / 304.8, 0));
                Line line3 = Line.CreateBound(new XYZ(400 / 304.8, 6 / 304.8, 0), new XYZ(0, 600 / 304.8, 0));
                Line line4 = Line.CreateBound(new XYZ(0, 600 / 304.8, 0), new XYZ(0, 0, 0));
                CurveArray curveArray = new CurveArray();
                curveArray.Append(line1);
                curveArray.Append(line2);
                curveArray.Append(line3);
                curveArray.Append(line4);
                CurveArrArray curveArrArray = new CurveArrArray();
                curveArrArray.Append(curveArray);
                SweepProfile profile = _doc.Application.Create.NewCurveLoopsProfile(curveArrArray);

                // 曲线路径
                XYZ pnt4 = new XYZ(0, 20, 0);
                XYZ pnt5 = new XYZ(0, 10, 0);
                Curve curve = Line.CreateBound(pnt4, pnt5);

                CurveArray curves = new CurveArray();
                curves.Append(curve);

                SketchPlane sketch = SketchPlane.Create(_doc, Plane.CreateByNormalAndOrigin(new XYZ(0, 0, 1), XYZ.Zero));

                Sweep sweep = _doc.FamilyCreate.NewSweep(true,curves, sketch, profile,0, ProfilePlaneLocation.Start);
                _doc.FamilyManager.NewType("自定义族类型");

                transaction.Commit();
            }
        }

    }

效果图

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值