
1 、界址点起点位置
C# CAD2016 多边形顶点按方向重新排序
2、 界址点顺时针逆时针走向
3、块文件插入
//已知块文件名称 GXGLQTC
//块文件需要插入的坐标点 scaledPoint
// 插入块到当前图纸中的指定位置
ObjectId newBlockId;
BlockTable currentBlockTable = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
newBlockId = currentBlockTable["GXGLQTC"];
using (Transaction transaction = db.TransactionManager.StartTransaction())
{
BlockReference blockRef = new BlockReference(scaledPoint, newBlockId);
BlockTable bt = transaction.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord activeSpace = transaction.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
activeSpace.AppendEntity(blockRef);
transaction.AddNewlyCreatedDBObject(blockRef, true);
transaction.Commit();
}
4、主要步骤
- 获取当前活动文档、数据库和编辑器对象。
- 设置一个选择过滤器,只允许用户选择"宗地"图层上的LWPOLYLINE对象。
- 用户根据过滤规则进行实体选择后,程序处理所选中的每个闭合多段线。
- 对于每个闭合多段线,首先确保它是闭合的且至少有一个顶点,并将所有顶点存储到一个列表中。
- 注释部分:这部分原来包含计算多边形方向和排序顶点的逻辑,但后来被注释掉,实际代码中并没有执行这部分操作。
- 遍历排序后的顶点列表,为每个顶点创建一个文本标签(DBText)并在模型空间中绘制,标签内容是其顺序编号,位置基于顶点坐标并进行了缩放和平移处理。
- 同样针对每个顶点,在模型空间中插入名为“GXGLQTC”的块参照,并将其定位在与文本标签相同的位置。
另外,还提供了一个辅助方法GetCenterOfPolyline
,用于计算给定多段线的中心点,但在当前代码片段中并未使用此方法来确定文本标签或块参照的位置。
5、完整代码
namespace cad自定义面板集.jzd
{
internal class jzd01
{
// 选定"宗地"图层上的封闭对象(例如闭合多段线)
[CommandMethod("GenerateBoundaryPoints")]
public static void GenerateBoundaryPoints()
{
// 获取当前活动文档和数据库
// 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
// 创建一个选择过滤器,限制用户只能选择"宗地"图层上的LWPOLYLINE对象作为外部边界
SelectionFilter outerFilter = new SelectionFilter(new TypedValue[] {