Я не могу воспроизвести это в AutoCAD (Карта) 2012. Какую версию AutoCAD вы используете?
Что ты на самом деле делаешь внутри ... get xData from the entity.
? Я сделал это:
static AcadApplication ACAD
{
get
{
return
Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication as AcadApplication;
}
}
[CommandMethod("tlo")]
public static void TestLayerOff()
{
foreach (AcadEntity ent in ACAD.ActiveDocument.ModelSpace)
{
//... get xData from the entity.
object xdata, xdataType;
ent.GetXData("MyRegisteredAppName", out xdataType, out xdata);
//... read and spit out the xdata to the command line to see what we got
}
}
Это сработало после того, как я выключил слой, в котором были мои сущности xdata. Это также сработало после того, как я переместил их на другой отключенный слой. Есть ли способ воспроизвести то, что мне не хватает? Что именно делают «составители», когда «перемещают блок»?
Кроме того, если вы обеспокоены тем, что xdata исчезает по-настоящему, используйте команду XDLIST, чтобы просмотреть ее непосредственно в AutoCAD.
Наконец, я выкину общую рекомендацию отойти от COM-вещей и использовать собственный C # API, который будет делать все, что вы пытаетесь сделать здесь.