Моим большим проколом оказалось то, что я использовал код .NET для получения COM-объектов колодцев. Мне посоветовали расширить блок using на все изменения, тогда проблема пропадает. Написал и отправил такой простейший, практически "чисто COM", код. При его использовании проблема сохраняется:
using Autodesk.AECC.Interop.Pipe;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Runtime;
namespace C3dCOMTest
{
public class CmdClass
{
[CommandMethod("C3dComTest")]
public void RunCmd()
{
AcadApplication acadApp = Application.AcadApplication as AcadApplication;
AcadDocument adoc = acadApp.ActiveDocument;
AcadSelectionSet ss = adoc.SelectionSets.Add("SSET");
ss.SelectOnScreen();
for (int i = 0; i < ss.Count; i++)
{
AeccStructure structure = ss.Item(i) as AeccStructure;
if (structure == null || structure.PartType != 102) continue;
structure.ResizeByPipeDepths();
}
ss.Clear();
ss.Delete();
}
}
}
Честно говоря, очень не верится, что проблема только из-за того, что код был написан на LISP. Или, может, я неправ?