Удаляю компоненты в цикле по одному что занимает очень много времени. Пытаюсь удалить сразу все с помощью Delete метода из IKompasDocument1. Пробовал передать в качестве параметра и ksPartCollection и iParts7, компоненты не удаляются
IParts7.PartsEx(0) IPart7.PartsEx(0) пробовали передавать?
Посмотрите метод treeNeedRebuild и запретите перестроение модели и Дерева до начала удаления.
Цитата: ТрындецЪ от 11.05.18, 11:58:08
IParts7.PartsEx(0) пробовали передавать?
Такого метода PartsEx нет у IParts7
Цитата: chelkar от 11.05.18, 12:07:11
Посмотрите метод treeNeedRebuild и запретите перестроение модели и Дерева до начала удаления.
Проверил не помогает. Да и в цикле как бы без этого удаляется нормально.
Upd: Ipart7.IpartsEx(0) передал удалилось все. А как теперь удалить не все а оставить один? Вот у ksPartCollection можно отсоединить компонент от массива, поэтому хотелось бы его передать, чтобы один отсоединить, а остальные удалить
Цитата: bbb от 11.05.18, 13:04:25
Такого метода PartsEx нет у IParts7
Ошибся, IPart7.PartsEx(0) (массив всех компонентов сборки (включая копии из операций копирования))
Цитата: ТрындецЪ от 11.05.18, 13:09:31
Ошибся, IPart7.PartsEx(0) (массив всех компонентов сборки (включая копии из операций копирования))
Спасибо, а можно как-нибудь скорректировать список на удаление? Выше написал как хотелось бы это провернуть)
Цитата: bbb от 11.05.18, 13:04:25
Upd: Ipart7.IpartsEx(0) передал удалилось все. А как теперь удалить не все а оставить один? Вот у ksPartCollection можно отсоединить компонент от массива, поэтому хотелось бы его передать, чтобы один отсоединить, а остальные удалить
Присваиваете переменной Ipart7.IpartsEx(0) и удаляете элемент массива этой переменной.
Цитата: ТрындецЪ от 11.05.18, 13:30:30
Присваиваете переменной Ipart7.IpartsEx(0) и удаляете элемент массива этой переменной.
Не понял. Мне надо удалить не все компоненты, а все кроме одного)
Цитата: bbb от 11.05.18, 13:39:43
Не понял. Мне надо удалить не все компоненты, а все кроме одного)
Выделяете в сборке компонент, через менеджер выделенных объектов получаете его интерфейс, запоминаете.
Из дубликата массива интерфейсов компонентов исключаете интерфейс выделенного компонента, и передаёте дубликат массива функции удаления.
Цитата: ТрындецЪ от 11.05.18, 13:44:05
Выделяете в сборке компонент, через менеджер выделенных объектов получаете его интерфейс, запоминаете.
Из дубликата массива интерфейсов компонентов исключаете интерфейс выделенного компонента, и передаёте дубликат массива функции удаления.
Что такое дубликат массива интерфейсов компонентов? ksPartCollection есть у меня )
UPD: Сделал так - сначала получил список iPart7.PartsEx(0) , потом copypart нужного компонента, а затем delete. Все работает тема закрыта )
...
У меня на Python метод iKompasDocument1.Delete(...) вообще отказался пачкой удалять компоненты, только по одному. Подсовываю больше 1-го компонента, пишет False.