Удалить все компоненты в сборке

Автор bbb, 11.05.18, 11:51:09

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

bbb

Удаляю компоненты в цикле по одному что занимает очень много времени. Пытаюсь удалить сразу все с помощью Delete метода из IKompasDocument1. Пробовал передать в качестве параметра  и ksPartCollection и iParts7, компоненты не удаляются

ТрындецЪ

#1
IParts7.PartsEx(0) IPart7.PartsEx(0) пробовали передавать?

chelkar

Посмотрите метод treeNeedRebuild  и запретите перестроение модели и Дерева до начала удаления.

bbb

Цитата: ТрындецЪ от 11.05.18, 11:58:08
IParts7.PartsEx(0) пробовали передавать? 
Такого метода PartsEx нет у IParts7
Цитата: chelkar от 11.05.18, 12:07:11
Посмотрите метод treeNeedRebuild  и запретите перестроение модели и Дерева до начала удаления.
Проверил не помогает. Да и в цикле как бы без этого удаляется нормально.

Upd: Ipart7.IpartsEx(0) передал удалилось все. А как теперь удалить не  все а оставить один? Вот у ksPartCollection можно отсоединить компонент от массива, поэтому хотелось бы его передать, чтобы один отсоединить, а остальные удалить

ТрындецЪ

#4
Цитата: bbb от 11.05.18, 13:04:25
Такого метода PartsEx нет у IParts7
Ошибся, IPart7.PartsEx(0) (массив всех компонентов сборки (включая копии из операций копирования))
+ Благодарностей: 1

bbb

Цитата: ТрындецЪ от 11.05.18, 13:09:31
Ошибся, IPart7.PartsEx(0) (массив всех компонентов сборки (включая копии из операций копирования))
Спасибо, а можно как-нибудь скорректировать список на удаление? Выше написал как хотелось бы это провернуть)

ТрындецЪ

Цитата: bbb от 11.05.18, 13:04:25
Upd: Ipart7.IpartsEx(0) передал удалилось все. А как теперь удалить не  все а оставить один? Вот у ksPartCollection можно отсоединить компонент от массива, поэтому хотелось бы его передать, чтобы один отсоединить, а остальные удалить
Присваиваете переменной Ipart7.IpartsEx(0)  и удаляете элемент массива этой переменной.

bbb

Цитата: ТрындецЪ от 11.05.18, 13:30:30
Присваиваете переменной Ipart7.IpartsEx(0)  и удаляете элемент массива этой переменной.
Не понял. Мне надо удалить не все компоненты, а все кроме одного)

ТрындецЪ

Цитата: bbb от 11.05.18, 13:39:43
Не понял. Мне надо удалить не все компоненты, а все кроме одного)
Выделяете в сборке компонент, через менеджер выделенных объектов получаете его интерфейс, запоминаете.
Из дубликата массива интерфейсов компонентов исключаете интерфейс выделенного компонента, и передаёте дубликат массива функции удаления.

bbb

#9
Цитата: ТрындецЪ от 11.05.18, 13:44:05
Выделяете в сборке компонент, через менеджер выделенных объектов получаете его интерфейс, запоминаете.
Из дубликата массива интерфейсов компонентов исключаете интерфейс выделенного компонента, и передаёте дубликат массива функции удаления.
Что такое дубликат массива интерфейсов компонентов? ksPartCollection есть у меня )

UPD: Сделал так - сначала получил список iPart7.PartsEx(0) , потом copypart нужного компонента, а затем delete. Все работает тема закрыта )

bbb


ТрындецЪ

У меня на Python метод iKompasDocument1.Delete(...) вообще отказался пачкой удалять компоненты, только по одному. Подсовываю больше 1-го компонента, пишет False.