AutoCAD .Net 创建点Point

以下代码展示:
往模型空间中添加一个点。点的坐标为(100, 100, 50)。
设置点的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Colors;

[CommandMethod("NewPoint")]
public static void NewPoint()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;

    using (Transaction tr = db.TransactionManager.StartTransaction())
    {
        //-------------------------------
        // 获取模型空间
        //-------------------------------
        BlockTable blockTbl = tr.GetObject(
            db.BlockTableId, OpenMode.ForRead) as BlockTable;
        BlockTableRecord modelSpace = tr.GetObject(
            blockTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

        //-------------------------------
        // 创建点
        //-------------------------------
        DBPoint point = new DBPoint(new Point3d(100, 100, 50));

        //-------------------------------
        // 控制点的显示外观
        //-------------------------------
        db.Pdmode = 35;
        db.Pdsize = 5;

        //----------------------------
        // 添加到模型空间并提交到数据库
        //-------------------------------
        modelSpace.AppendEntity(point);
        tr.AddNewlyCreatedDBObject(point, true);

        tr.Commit();
    }
}

系统变量 PDMODE 和 PDSIZE 控制点对象的显示外观。
PDMODE 取值为 0、2、3 、4 时指定表示点的图形,取值为 1 表示不显示任何图形,如下图所示:
这里写图片描述
上述 PDMODE 值分别加上 32、64、96 表示分别在上述点的外形周围加画上不同的形状,如下图所示:
这里写图片描述
PDSIZE 控制点形状的大小(PDMODE 取值为 0 和 1 时除外)。PDSIZE 为 0 时生成的点是图形区域高度的 5% 。PDSIZE 为正值表示点形状的绝对大小,PDSIZE 为负值解释为相对视口大小的百分比。

根据提供的引用内容,AutoCAD .NET API中的Database对象包含了AutoCAD中的所有图形对象和大部分非图形对象,包括实体(图元)、符号表、命名字典等[^1]。因此,要在AutoCAD中打断一条线段,可以使用Database对象中的相关方法。 以下是一个示例代码,演示了如何使用AutoCAD .NET API打断一条线段: ```csharp using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; public void BreakLine(Point3d startPoint, Point3d endPoint, Point3d breakPoint) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord modelSpace = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; Line line = new Line(startPoint, endPoint); modelSpace.AppendEntity(line); tr.AddNewlyCreatedDBObject(line, true); // 打断线段 ObjectId[] newEntities = line.GetSplitCurves(new Point3dCollection() { breakPoint }); // 删除原始线段 line.Erase(); tr.Commit(); } } ``` 这段代码首先创建了一个线段对象,然后使用`GetSplitCurves`方法将线段打断为两段,并返回新的实体对象的ObjectId数组。最后,删除原始线段对象。通过调用这个方法,可以在AutoCAD中打断一条线段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值