AutoCAD .Net 绘制临时图形

本文介绍了如何使用AutoCAD.NetAPI中的Editor类提供的方法,在AutoCAD中绘制临时图形,并通过示例代码展示了如何在鼠标点击的位置绘制十字图形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AutoCAD .Net API 中,Editor 类提供了两个方法来临时绘图。
public void DrawVector(Point3d from, Point3d to, int color, bool drawHighlighted);
public void DrawVectors(ResultBuffer rb, Matrix3d transform);
这些绘制的图形会在 AutoCAD 窗口刷新时消失。

以下示例代码实现在鼠标点击处绘制临时的十字图形。

[CommandMethod("Test")]
public void Test()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;

    PromptPointResult ret = doc.Editor.GetPoint("\nPick point");
    if (ret.Status != PromptStatus.OK)
        return;

    Point3d pnt = ret.Value;
    Point3d pnt1 = new Point3d(pnt.X - 20, pnt.Y, pnt.Z);
    Point3d pnt2 = new Point3d(pnt.X + 20, pnt.Y, pnt.Z);
    Point3d pnt3 = new Point3d(pnt.X, pnt.Y - 20, pnt.Z);
    Point3d pnt4 = new Point3d(pnt.X, pnt.Y + 20, pnt.Z);

    int colorIndex = 4;
    doc.Editor.DrawVector(pnt1, pnt2, colorIndex, false);
    doc.Editor.DrawVector(pnt3, pnt4, colorIndex, false);
}

或者用如下代码:

[CommandMethod("Test")]
public void Test()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;

    PromptPointResult ret = doc.Editor.GetPoint("\nPick point");
    if (ret.Status != PromptStatus.OK)
        return;

    Point3d pnt = ret.Value;
    Point2d pnt1 = new Point2d(pnt.X - 20, pnt.Y);
    Point2d pnt2 = new Point2d(pnt.X + 20, pnt.Y);
    Point2d pnt3 = new Point2d(pnt.X, pnt.Y - 20);
    Point2d pnt4 = new Point2d(pnt.X, pnt.Y + 20);

    int colorIndex = 4;
    int RTPOINT = 5002;
    int RTSHORT = 5003;
    using (ResultBuffer resBuf = new ResultBuffer())
    {
        resBuf.Add(new TypedValue(RTSHORT, colorIndex));
        resBuf.Add(new TypedValue(RTPOINT, pnt1));
        resBuf.Add(new TypedValue(RTPOINT, pnt2));
        resBuf.Add(new TypedValue(RTPOINT, pnt3));
        resBuf.Add(new TypedValue(RTPOINT, pnt4));
        doc.Editor.DrawVectors(resBuf, Matrix3d.Identity);
    }
}

参考文章:
http://adndevblog.typepad.com/autocad/2012/04/temporary-graphics-in-autocad.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值