latour_g 发表于 2016-1-25 12:17:08

崔向。网

嗨,
我正在将cui转换为.net。我想把这个命令放在.net中:
^C^C^P_ai_draworder_Back^P
我已经试过了,但它不起作用:
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
...
Document doc = AcadApp.DocumentManager.MdiActiveDocument;
doc.SendStringToExecute("\x03\x03\x10" + "_ai_draworder" + "\n" + "_Back" + "\n", true, false, true);

有没有办法让它工作<谢谢
**** Hidden Message *****

gile 发表于 2016-1-25 12:47:27

嗨,
你只是试过:
doc.SendStringToExecute(“_ai_draworder _back ”, false, false, false);

gile 发表于 2016-1-25 13:03:51

从 AutoCAD 2015 开始,您还可以使用支持选择集作为参数的 Editor.Command()。var ed = AcAp.DocumentManager.MdiActiveDocument.Editor;。
var sel = ed.GetSelection();。
如果 (sel.Status == PromptStatus.OK)。
编辑,命令(“_draworder”, sel.值, “”, “_back”);。

latour_g 发表于 2016-1-25 13:18:51

这正是我所需要的,不幸的是,我正在为Autocad 2014编程。

gile 发表于 2016-1-25 14:20:07

为什么不使用有时比调用命令更简单的API,[命令方法("MOVEBACK",CommandFlags.UsePickSet)]。
公共无效MoveToBack()。
{。
var doc=Application.DocumentManager.MdiActiveDocument;。
var db=doc.Database;。
var ed=doc.Editor;。

var选择=ed.GetSelection();。
如果(selection.Status!=PromptStatus.OK)。
返回;。

使用(事务tr=db.TransactionManager.StartTransaction())。
{。
var btr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForRead);。
var order=(DrawOrderTable)tr.GetObject(btr.DrawOrderTableId,OpenMode.ForWrite);。
order.MoveToBottom(新的ObjectIdCollection(selection.Value.GetObjectIds ()));。
tr.Commit();。
}。
}。

latour_g 发表于 2016-1-25 15:11:24

你是对的,它与API配合得很好<谢谢!

57gmc 发表于 2016-1-25 18:40:02

这里有一个小提示:您可能希望将命令名更改为“MoveToBack”,以免与“Movebak”命令混淆。
页: [1]
查看完整版本: 崔向。网