替代/自定义AutoCAD命令

本文关键字:命令 AutoCAD 自定义 替代 | 更新日期: 2024-10-20 11:41:09

是否有替代/自定义现有AutoCAD命令的方法?

当我打电话的时候。。。

Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
doc.SendStringToExecute("_.3DROTATE'n", true, false, true);

它允许我选择对象、指定基点和指定角度。我已经保存了一个基点,那么我如何在代码中设置它以避免用户输入呢?

替代/自定义AutoCAD命令

在Walmsley博客上,你可以找到你想要的关于否决的一切。以下是命令否决的示例:

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.GraphicsInterface;
namespace MyFirstOverrule
{
    // This is our custom DrawableOverrule class.
    // In this case we're just overruling WorldDraw
public class MyDrawOverrule : DrawableOverrule
{
    public override bool WorldDraw(Drawable drawable, WorldDraw wd)
    {
        // Cast Drawable to Line so we can access its methods and
        // properties
        Line ln = (Line)drawable;
        // Draw some graphics primitives
        wd.Geometry.Circle(ln.StartPoint + 0.5 * ln.Delta, ln.Length / 5, ln.Normal);
        // In this case we don't want the line to draw itself, nor do
        // we want ViewportDraw called
        return true;
    }
}
public class Commands
{
    //Shared member variable to store our Overrule instance
    private static MyDrawOverrule _drawOverrule;
    [CommandMethod("TOG")]
    public static void ToggleOverrule()
    {
        // Initialize Overrule if first time run
        if(_drawOverrule == null)
        {
            _drawOverrule = new MyDrawOverrule();
            Overrule.AddOverrule(RXObject.GetClass(typeof(Line)), _drawOverrule, false);
            Overrule.Overruling = true;
        }
        else
        {
            // Toggle Overruling on/off
            Overrule.Overruling = !Overrule.Overruling;
        }
        // Regen is required to update changes on screen
        Application.DocumentManager.MdiActiveDocument.Editor.Regen();
    }
    }
}