Александр, а можно сделать "финт ушами"? То есть сделать по 2 arx-модуля: с чисткой масштабов и без оной? Честно говоря, я был безумно рад, что запроса по чистке масштабов не стало...
Два варианта не нужны. Просто на уровне API нужно отделять мух от котлет: отдельные команды по работе с proxy и отдельные по работе со списком аннотативных масштабов. Затем различные комбинации этих методов заворачиваются в виде команд CAD системы. Т.е. отдельные команды для взрыва и удаления proxy и отдельная для очистки списка аннотативных масштабов. Я себе это оформил в виде методов со следующими сигнатурами:
public static Db.ObjectIdCollection GetFreeAnnotativeScaleIds(Db.Database db);
public static void ClearAnnotativeScalesList(Db.Database db);
public static void GetProxyIds(Db.Database db, out Db.ObjectIdCollection proxyObjectIds, out Db.ObjectIdCollection proxyEntityIds, out Db.ObjectIdCollection proxyLockedLayerIds, Boolean unlockLayers);
public static void ExplodeAllProxy(Db.Database db, out StringBuilder sb);
public static ExplodeStatus ExplodeProxyInBTR(Db.ObjectId btrId, out Int64 proxy, out Int64 exploded);
public static void RemoveAllProxy(Db.Database db, out Int64 proxyNotEntityErased, out Int64 proxyEntityErased);
P.S.
По коду Александра Наумовича завтра выложу замечания\вопросы. Код
T72 мне не понравился, поэтому написал свою альтернативу. Выложу его после тестирования.
P.S.2
Кстати, список аннотативных масштабов я чищу "родными" средствами .NET API, не прибегая к вызову неуправляемых функций. Делаю это за счёт обработки контекста коллекции "ACDB_ANNOTATIONSCALES".