Возможна ли параллельная работа с Компасом ?

Автор Doom, 28.01.23, 16:04:30

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

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

Doom

Доброго,

Например читаю дерево модели и по элементно анализирую.

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)

DCollection = iPart.EntityCollection(LDefin3D.o3d_unknown)

count = DCollection.GetCount()

for i in range(count):

itemEntity = DCollection.GetByIndex(i)

if itemEntity.name:                     

# >>>>>>>>>>>> плоскости <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if itemEntity.type == LDefin3D.o3d_planeOffset:
...

if itemEntity.type == LDefin3D.o3d_planeAngle:
                        ...
                ...

Для модели у которого в дереве отображается более 400 элементов - приказывает мне долго жить!

а если анализировать несколько файлов то время существенно много потребуется - есть ли какой то способ распараллелить данную задачу ?
видно что используется только одно ядро а остальные простаивают

знаний маловато то пришло на ум только одно -

разделить задачу на 4 потока и запустить их асинхронно - пытался когдато - не вышло

взять управление над нескольким экземплярами Компас - оказалось что не так просто и нужно как то через компонент(на форуме поднималась эта тема но там не чего не понял)

можно как то еще нагрузить еще 3 простаивающих ядра ?

   

p3452

Цитата: Doom от 28.01.23, 16:04:30Для модели у которого в дереве отображается более 400 элементов - приказывает мне долго жить!
- Расшифруйте...
- Хотите сказать, что при переборе коллекции в которой более 400 элементов Компас крашится?

Doom

Цитата: p3452 от 28.01.23, 18:22:13- Расшифруйте...

у меня этот процесс длится чуть более 2 минут


Цитата: Doom от 28.01.23, 16:04:30взять управление над нескольким экземплярами Компас
в списке IRunningObjectTable отображается не соответствие количеству записей к количеству запущенных копий Компаса

Doom

а если обрабатывать несколько файлов - то считаю что долговато для этого выделять 15 минут

p3452

Непонятно что Вы делаете и как?
Ограничимся общим:
- насколько я знаю Компас - однопоточен...
- Вы хозяин процесса и, следовательно, сами можете его "распараллелить" и без Компаса, но - помнить о п.1
- возможно "тормоза" связаны видеообработкой Вашего процесса - избавится от обновления и прочего
- возможно Ваши задачи позволят работать непосредственно с метаданными файлов минуя Компас
- и т.д. - в зависимости от решаемых задач

Doom

Цитата: p3452 от 28.01.23, 18:52:32- насколько я знаю Компас - однопоточен...

это решаемо и как минимум 3 вариантами... но не могу найти примеры

Doom

28.01.23, 19:20:15 #6 Последнее редактирование: 28.01.23, 20:51:46 от Doom
куда пропал Sabahs? один из вариантов реализации было им предложено, но не где не выкладывался пример

Алексей Дубовицкий

Цитата: Doom от 28.01.23, 19:20:15куда пропал Sabahs?
Он с Украины.
Разработанное им приложение "Оборудование: Развертки" больше не продаётся.

Doom

Цитата: Алексей Дубовицкий от 28.01.23, 20:26:52Он с Украины.
он вроде как переехал ?

Цитата: Алексей Дубовицкий от 28.01.23, 20:26:52Разработанное им приложение "Оборудование: Развертки" больше не продаётся.
жестко :(

Тянул форум.

Валерий Изранов

Цитата: Doom от 28.01.23, 16:04:30видно что используется только одно ядро а остальные простаивают
Ресурсы для работы Компаса (память, процессор, экран, диск ) предоставляет операционная система Windows.
Использовать ресурсы в обход ОС весьма неразумно и опасно.

Doom

Цитата: Валерий Изранов от 29.01.23, 07:50:02Использовать ресурсы в обход ОС весьма неразумно и опасно.

ахаха я поведал многое.. а уронить пару раз систему во имя науки - такое себе опасность  :-)))  :-)))  - что то вроде уровня - цвета детской неожиданности?  :%:

сколько же Вам лет ? 5 ?

Doom

шутки шутками а по существу вопроса есть что добавить ?

нашел вариант через виртуальные системы но это очень ресурсоемко..

Doom

забыл  :bang:  что виртуальные не поддерживаются.


Цитата: p3452 от 28.01.23, 18:52:32- насколько я знаю Компас - однопоточен...
тут мб политика...

IgorT

Цитата: Doom от 30.01.23, 10:23:53забыл  :bang:  что виртуальные не поддерживаются.

тут мб политика...
Ну как политика...
Есть задачи, которые можно распараллелить. Например расчеты МКЭ и построение чертежей. Они и распараллелены у Компаса.
А вот работа с 3Д моделью не поддаётся. ИМХО вообще не возможно.
Может кто знает CAD, который это делает?

Doom

Цитата: IgorT от 30.01.23, 10:42:14А вот работа с 3Д моделью не поддаётся. ИМХО вообще не возможно.

если рассматривать только одну деталь то как вариант - сделать копию ее файла и создать 2 потока А и Б: А) будет ее анализировать в одном процессе Компаса 3D и по этапно создавать и отправлять поток с полученной частью информацией на Б; Б) будет принимать поток и генерировать решение в другом процессе Компаса 3D.

Если я не ошибаюсь у SolidWorks/NX есть асинхронное построение детали те берется например плоскость и от нее в две стороны идет построение.

Например я знаю у Excel можно создавать хоть 10 процессов и можно получить управление над каждым из них и работать с ними в параллели.


IgorT

Цитата: Doom от 30.01.23, 13:06:02...

Если я не ошибаюсь у SolidWorks/NX есть асинхронное построение детали те берется например плоскость и от нее в две стороны идет построение.
Что-то не понятное... Можно поподробнее?

Цитата: Doom от 30.01.23, 13:06:02Например я знаю у Excel можно создавать хоть 10 процессов и можно получить управление над каждым из них и работать с ними в параллели.
Excel производит вычисления. Их можно распараллелить. Но как например распараллелить процесс вращения модели в КАД? Он же в реальном времени происходит.
И эта... Может мы по разному понимаем обсуждаемый процесс?
ИМХО параллельное решение задачи означает разбивание решения задачи, занимающей некоторое длительное время, на куски. И одновременной выполнять решение этих куском на нескольких вычислительных устройствах, а по завершению слить результаты в единое целое.
Может быть я заблуждаюсь? Вы как понимаете "параллельность"?

Doom

Цитата: IgorT от 30.01.23, 13:25:08Excel производит вычисления. Их можно распараллелить. Но как например распараллелить процесс вращения модели в КАД? Он же в реальном времени происходит.
И эта... Может мы по разному понимаем обсуждаемый процесс?

Вы рассматриваете вопрос с позиции одного процесса, а там их 10 они работают не зависимо друг от друга.

Цитата: IgorT от 30.01.23, 13:25:08ИМХО параллельное решение задачи означает разбивание решения задачи, занимающей некоторое длительное время, на куски. И одновременной выполнять решение этих куском на нескольких вычислительных устройствах, а по завершению слить результаты в единое целое.

Да верно я так понимаю "параллельное" решение на уровне одной детали
если деталей больше то открывать их в разных процессах.

IgorT

Цитата: Doom от 30.01.23, 13:44:28Вы рассматриваете вопрос с позиции одного процесса, а там их 10 они работают не зависимо друг от друга.

Да верно я так понимаю "параллельное" решение на уровне одной детали
если деталей больше то открывать их в разных процессах.
Независимые процессы и так работают параллельно. Их больше чем дофига.

На счет деталей. А мы что, умеем одновременно работать с разными деталями? Это как?

Doom

30.01.23, 13:57:41 #18 Последнее редактирование: 30.01.23, 14:23:34 от Doom
Цитата: IgorT от 30.01.23, 13:51:43Независимые процессы и так работают параллельно.

Но Вы не получите управление над каждым из них, а только над одним..

На сколько я знаю у них орган управления должен предусмотреть запуск нескольких копий программ - я видел гдето исходник его, но не как не найду  - сюда прикреплю его, написан был на C#.

Doom

Цитата: Doom от 30.01.23, 13:06:02Например я знаю у Excel можно создавать хоть 10 процессов и можно получить управление над каждым из них и работать с ними в параллели.

Простите, не понятно написал - я создал приложение которое может запустить 10 копий программ Excel и каждая из них работает независимо друг от друга, но имеет связь с моим приложением те я взял большой расчет поделил на 10 частей и каждая копия Excel рассчитала и отправила результаты а мое приложение собрала их в "кучу".