revit中绘制任意直线
来源:互联网 发布:js省市区三级联动插件 编辑:程序博客网 时间:2024/05/01 06:45
revit二次开发的过程中常用的方法。
public static void NewLine(this Document doc, XYZ pStart, XYZ pEnd) { if (pStart.IsAlmostEqualTo(pEnd)) { return; } using (Transaction tr = new Transaction(doc, Guid.NewGuid().ToString())) { try { tr.Start(); Line line = Line.CreateBound(pStart, pEnd); double angle = line.Direction.AngleTo(XYZ.BasisX); XYZ norm = line.Direction.CrossProduct(XYZ.BasisX).Normalize(); if (angle - 0.0 < 1e-6) { angle = line.Direction.AngleTo(XYZ.BasisY); norm = line.Direction.CrossProduct(XYZ.BasisY).Normalize(); } if (angle - 0.0 < 1e-6) { angle = line.Direction.AngleTo(XYZ.BasisZ); norm = line.Direction.CrossProduct(XYZ.BasisZ).Normalize(); } Plane plane = doc.Application.Create.NewPlane(norm, line.Origin); SketchPlane skplane = SketchPlane.Create(doc, plane); ModelCurve newLine = doc.Create.NewModelCurve(line, skplane); tr.Commit(); } catch (Exception ex) { tr.RollBack(); } } }
它可以绘制任意直线,绘制直线的时候,当直线与XY平面或XZ平面或YZ平面共线也可以绘制。它是开发的重
要辅助工具。
关键还是在于这段代码,处理了多种情况。
XYZ norm = line.Direction.CrossProduct(XYZ.BasisX).Normalize(); if (angle - 0.0 < 1e-6) { angle = line.Direction.AngleTo(XYZ.BasisY); norm = line.Direction.CrossProduct(XYZ.BasisY).Normalize(); } if (angle - 0.0 < 1e-6) { angle = line.Direction.AngleTo(XYZ.BasisZ); norm = line.Direction.CrossProduct(XYZ.BasisZ).Normalize(); }
0 0
- revit中绘制任意直线
- Bresenham算法实现任意斜率直线绘制
- canvas绘制任意两点的动态直线
- cad中绘制一条直线
- 运用MATLAB绘制任意两点间的直线路径
- drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形 * drawLine 绘制直线 drawPoin 绘制点
- android activity中画任意直线
- 在Revit中读取、隐藏并绘制CAD线
- MFC中使用agg绘制直线
- 在OpenCV中利用鼠标绘制直线
- 在UIView中绘制直线、矩形、三角形
- 在3D空间中绘制直线
- 在UIView中绘制直线、矩形、三角形
- 绘制直线
- 计算机图形学考试-绘制一条任意线型和线宽的直线。
- Revit中Dynamo编程——在Python中怎么导入任意的dll文件
- 绘制直线和直线剪切
- 任意角度直线画法
- 求二叉树的先序遍历 sdut 1489
- PAT 1048
- 修改虚拟机linux硬盘的大小
- ceshi
- Android搭建WEB Server—boa(二)
- revit中绘制任意直线
- Overload 和 Override 的区别。Overloaded 的方法是否可 以改变返回值的类型?
- Hamming Distance
- LCT——模板整理
- CSU 1505 酷酷的单词 【水题】
- PL/SQL的可用注册码
- tomcat笔记
- 蓝桥杯 算法训练之数字三角形(dp)
- 27岁程序员职业生涯的“中年危机”