BlackBox 发表于 2014-4-27 12:39:03

命令历史记录中没有显示SendToStringExecute

AutoCAD MEP中有一个错误,如果我将管道对象(螺纹杆)定位到多视图零件对象(吊架),然后镜像这两个对象,则只有多视图零件会被镜像到正确的位置。管道将复制自身,但保持在其原始位置。如果我移除锚,并尝试同样的事情,然后两个项目将正确镜像。我写过一些,net c#代码来尝试解决这个问题,但是在管道上使用TransformBy方法也不会移动管道。我相信某种程度上锚阻止了它的移动,(这就是bug)。但是,我可以使用“移动”命令将管道移动到正确的位置。这是我的代码片段,    threaded ord。upgrade open();。
var start point = new point 3d(threaded rod,X,threadedRod。StartPoint.Y,threadedRod。start point . Z);。
var connection offset = new double();。

//获取从吊架插入点到螺杆插入点的偏移量。
if(TryGetValueDouble(hanger," E ",ref connectionOffset))。
{。
var endPoint = new point 3d(hanger,位置,X,衣架。位置,Y,衣架。location . Z+connection offset);。

//如果螺杆不在吊架上,则将它移到那里。。
if(起点!=端点)。
{。
//以编程方式移动螺纹杆不会有任何作用,。
// Vector3d vector3d =起点,GetVectorTo(端点);。
// threadedRod,TransformBy(Matrix3d,位移(vector 3d));。

//相反,我们必须使用命令“move”来移动对象。。
var start = string,格式(“{0}、{1}、{2}”,startPoint。x,起点。y,起点。z);。
var end = string,格式(“{0}、{1}、{2}”,终结点。x,端点。y,端点。z);。
string handEnt = "(handEnt \ " "+threaded rod,handle . ToString()+" \ "+" " ";。
string command = " _ move "+" \ n "+handEnt+" \ n "+" \ n "+start+" \ n "+end+" \ n ";。
文档,SendStringToExecute(命令,假,假,假);。
}。
}。
我在使用此代码时遇到的问题是,命令历史记录显示了move命令以及每个管道对象重置的“(handent HANDLE#)”。有可能抑制这个吗?我需要改用SendCommand吗?。
**** Hidden Message *****

阳泉志愿者 发表于 2014-4-29 18:26:44

我不相信压制这些消息是可能的。我已经在SendToStringExecute execute上将commandhistory设置为false,并将CMDECHO设置为0,它们仍然在显示。如果我使用Tony的Editor.CommandClass,仍然会显示相同的消息。

西窗满月 发表于 2014-4-29 18:56:18

诺穆特?

股海航标 发表于 2014-4-30 09:11:15

我在上面没有提到,但我也有诺穆特集。从帮助文件中
“在通常情况下不会抑制消息显示时抑制消息显示(咕哝)。显示消息是正常模式,但在脚本、AutoLISP例程等过程中抑制消息显示。”
我想可以肯定地说,“等等。”不包括.net和命令行的自动化。哦,好吧,命令行的回音无论如何都不会破坏交易。如果能抑制它,那就太好了。

黑翼 发表于 2014-4-30 11:57:20

您是否尝试过使用CommandFlags.NoHistory从CommandMethod方法中调用您的方法?

口袋中心 发表于 2014-4-30 12:20:42

我知道要做的事情是通过acedCmd执行移动命令。
页: [1]
查看完整版本: 命令历史记录中没有显示SendToStringExecute