LISP. Странная работа методов ActiveX для колодца сети.

Автор Тема: LISP. Странная работа методов ActiveX для колодца сети.  (Прочитано 7705 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Моим большим проколом оказалось то, что я использовал код .NET для получения COM-объектов колодцев. Мне посоветовали расширить блок using на все изменения, тогда проблема пропадает. Написал и отправил такой простейший, практически "чисто COM", код. При его использовании проблема сохраняется:
Код - C# [Выбрать]
  1. using Autodesk.AECC.Interop.Pipe;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.Interop;
  4. using Autodesk.AutoCAD.Runtime;
  5.  
  6. namespace C3dCOMTest
  7. {
  8.     public class CmdClass
  9.     {
  10.         [CommandMethod("C3dComTest")]
  11.         public void RunCmd()
  12.         {
  13.             AcadApplication acadApp = Application.AcadApplication as AcadApplication;
  14.             AcadDocument adoc = acadApp.ActiveDocument;
  15.             AcadSelectionSet ss = adoc.SelectionSets.Add("SSET");
  16.             ss.SelectOnScreen();
  17.  
  18.             for (int i = 0; i < ss.Count; i++)
  19.             {
  20.                 AeccStructure structure = ss.Item(i) as AeccStructure;
  21.                 if (structure == null || structure.PartType != 102) continue;                
  22.                 structure.ResizeByPipeDepths();
  23.             }
  24.  
  25.             ss.Clear();
  26.             ss.Delete();
  27.         }
  28.     }
  29. }
  30.  
Честно говоря, очень не верится, что проблема только из-за того, что код был написан на LISP. Или, может, я неправ?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Честно говоря, очень не верится, что проблема только из-за того, что код был написан на LISP. Или, может, я неправ?
Мне тоже не верится, так как Lisp + COM/ActiveX или не работает совсем или работает нормально (так же как и в VBA/.NET). Здесь же какой-то третий вариант.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Александр Ривилис 23-06-2017, 12:27:43

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
В общем, мы сошлись на том, что это некорректная работа метода ResizeByPipeDepths в COM API. Надежды на скорое исправление нет, поэтому, остается только .NET API.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Отметил это как решение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение