替代/自定义AutoCAD命令
本文关键字:命令 AutoCAD 自定义 替代 | 更新日期: 2024-10-20 11:41:09
是否有替代/自定义现有AutoCAD命令的方法?
当我打电话的时候。。。
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
doc.SendStringToExecute("_.3DROTATE'n", true, false, true);
它允许我选择对象、指定基点和指定角度。我已经保存了一个基点,那么我如何在代码中设置它以避免用户输入呢?
在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();
}
}
}