Получение ссылки на 3D-модель из эскиза

Автор Алексей Ш., 06.09.24, 17:18:32

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

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

Алексей Ш.

Цитата: UU от 08.09.24, 20:32:35Это кто писал?По этому хамить, не надо.

Уважаемый Михаил88, не надо поощрять лентяев, тем более они сами не могут выразить мысль, что хотят, а то что Вы показали есть в примерах, понятно, что не на Питоне.
PS. Товарищ не упомянул на каком языке программирует, значит считаем, что знает все.
Я уверен, что Вы всё поняли, но продолжаете выкручиваться. Ну ладно. Вот что написал я: "Ну, например, изменить ориентацию модели." и вот что написали Вы: "как он в режиме редактирования эскиза изменит положение детали? Пусть в рукопашную, в КОМПАС-3D попробует." И кто же здесь говорит про изменение положения детали "в рукопашную"? Но Вы всё равно не ответите, как и не ответили на всё то, что я писал выше, потому что Ваша задача, если уже не самоутвердиться, то теперь хотя бы выкрутиться.

И вот что Вы за человек такой? Вы влезли в дискуссию, не зная ответа, причем уже третьим таким, Вам указали на это и Вы настолько обиделись, что теперь просите других людей, которые реально могу помочь не помогать? Вам самому-то не стыдно за свое поведение?

И я, в отличии от других и в том числе Вас, не перешел на личности, не нахамил и не оскорбил ни одного из участников дискуссии. Так что Ваша попытка в этом отношении "перевести стрелочку" выглядит нелепо. Тем более, что в последнем сообщении Вы явно показали свое лицо. Двое Ваших коллег по уровню умения вести диалог уже получили предупреждения выше и замолчали под угрозой бана, теперь, видимо настала Ваша очередь, но это на суд модераторов, мне в целом всё равно, я не обижаюсь на людей в интернете.

И да - мне действительно всё равно на каком языке программирования пример, поэтому я и создал тему не в разделе конкретного языка программирования, чтобы не сужать круг людей, которые могут знать ответ. Потому что не поверите, но главное - это алгоритм решения задачи, а не на каком языке её решили.

Алексей Ш.

Господа Валерйи Изранов, p3452 и UU, посмотрите нашелся человек, которому не понадобилась информация о том что я буду делать со ссылкой, версия Компаса, раздел форума, язык программирования, цвет моих носков и т. д., который смог при этом одним сообщением ответить на вопрос исчерпывающе. Мне бы достаточно было "Выйдите из эскиза, получите ссылку на модель и зайдите обратно в эскиз", но Михаил88 даже код предоставил. Я бы сказал поучитесь, но кого я обманываю, судя по тому, что я здесь увидел - это бесполезно.
+ Благодарностей: 2

Алексей Ш.

Цитата: Михаил88 от 08.09.24, 20:01:08application.ExecuteKompasCommand(20116, False)
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
selection_manager = kompas_document_3d.SelectionManager   
sketch = selection_manager.SelectedObjects
selection_manager.Select(sketch)
application.ExecuteKompasCommand(40707, False)
application.MessageBoxEx(kompas_document_3d, 'Результат', 64)


изображение_2024-09-08_220216308.png
Михаил88, я видел, что Вы просматривали эту тему ранее. Ну признайтесь честно, Вы специально не отвечали, потому что хотели посмотреть эту Санту-Барбару? =) Спасибо большое за ответ. Идея с выходом из эскиза приходила в голову, но она, к сожалению мне не подходит. Может буду думать в сторону события активизации документа и в этот момент запоминать объект 3D-модели. Я написал Вам в личку (там не просьба о помощи), посмотрите, пожалуйста.

p3452

Цитата: Алексей Ш. от 08.09.24, 23:30:46Может буду думать в сторону события активизации документа и в этот момент запоминать объект 3D-модели.
ШЕДЕВРАЛЬНО! :-)))  :o:
Особенно после ЭТОГО:
Цитата: Алексей Ш. от 06.09.24, 17:18:32как получить объект или ссылку на объект 3D-модели находясь в режиме редактирования эскиза этой 3D-модели?

Михаил88

#24
Цитата: Алексей Ш. от 08.09.24, 23:30:46Идея с выходом из эскиза приходила в голову, но она, к сожалению мне не подходит.

Можно сделать по другому.
получить Documents - Коллекция открытых документов в приложении
далее пройтись по коллекции и получить у каждого документа DocumentType
далее написать условие, что нужны только детали
Если подходит условию то получаем от kompas_document(из коллекции Documents) -> IKompasDocument3D -> IPart7 -> IModelContainer -> ISketchs
далее в цикле перебираем эскизы
от ISketch -> IFeature7 -> далее получаем значение свойства State (State - Возвращает комбинацию флагов состояния объекта)
Если 513 то это как раз и есть наша модель, в которой редактируем эскиз. Возвращаем IKompasDocument3D.
Я проверил работает.
Из детали
изображение_2024-09-09_104845112.png
Из сборки
изображение_2024-09-09_105044579.png

P.S. Если в данные момент в компасе открыта только одна деталь, то вообще процесс упрощается до проверки типа документа и не нужно проверять эскизы.

+ Благодарностей: 2

Алексей Ш.

Цитата: p3452 от 09.09.24, 08:27:19ШЕДЕВРАЛЬНО! :-)))  :o:
Особенно после ЭТОГО:
Да, вот представляете, так бывает - не нашлось идеального решения и теперь надо думать, а равноценен ли вариант с "костылями". Именно поэтому я и писал, что ответ "Невозможно" - это тоже полезный ответ. И именно поэтому я написал "Может буду думать...", потому что такой вариант тоже по сути не то что нужно.

Но кому я говорю, Вы же не слышите ничего, а бежите свои 5 копеек вставить, хотя Вам уже неоднократно говорили, включая модератора, что они здесь не нужны - пройдите мимо. Разобрались уже, вопреки Вашему флуду и крикам господина UU не помогать! Что Вас тянет в эту тему? Это уже нездорово выглядит. Или "Ваша прелесть - счетчик сообщений" властвует над Вами, как кольцо над известным персонажем?

Алексей Ш.

Цитата: Михаил88 от 09.09.24, 08:46:14Можно сделать по другому.
получить Documents - Коллекция открытых документов в приложении
далее пройтись по коллекции и получить у каждого документа DocumentType
далее написать условие, что нужны только детали
Если подходит условию то получаем от kompas_document(из коллекции Documents) -> IKompasDocument3D -> IPart7 -> IModelContainer -> ISketchs
далее в цикле перебираем эскизы
от ISketch -> IFeature7 -> далее получаем значение свойства State (State - Возвращает комбинацию флагов состояния объекта)
Если 513 то это как раз и есть наша модель, в которой редактируем эскиз. Возвращаем IKompasDocument3D.
Я проверил работает.
Из детали
изображение_2024-09-09_104845112.png
Из сборки
изображение_2024-09-09_105044579.png

P.S. Если в данные момент в компасе открыта только одна деталь, то вообще процесс упрощается до проверки типа документа и не нужно проверять эскизы.


Михаил88, спасибо, работает! Проверка свойства State мне в голову не приходила. Уточню, что помимо комбинации флагов 513 надо еще проверять 257, ну и уж 1025 для полного набора. И есть нюанс - если в двух моделях редактируются эскизы, то мы соответственно и получим две ссылки на модели, но так и должно быть.

Если же речь идет только про активную в данный момент модель, то перебирая IDocuments -> IKompasDocument -> свойство Active, получим два активных документа - один типа ksDocumentFragment, другой ksDocumentPart/ksDocumentAssembly, который и будет искомой моделью.

Тестировал на Компас 3D v23.

В целом, для меня вопрос исчерпан. Форуму желаю повышения культуры общения, информативности и побольше таких пользователей как Михаил88. Возможно в следующий раз проще обратиться напрямую к толковым людям. Если здесь принято закрывать темы - то можно закрывать.

p3452

Мне, вот уже даже интересно стало кем этот УНИКУМ (Алексей Ш.) доводится МОДЕРАТОРУ ,что ОНА столь лояльно относится к его откровенному ХАМСТВУ И ПРОВОКАЦИЯМ?

chromium

как-то уже надоели эти "интеллигентные" разборки уже здесь.
+ Благодарностей: 2

Starik

1. Тема закрыта из за разборок, уход от главной линии вопроса и перехода на личности.
2. Уважаемому UU бан на месяц за хамство и мат в сообщении. Сообщение с матом удалено.
3. Уважанму р3453 бан на месяц за хамство и обсуждение действий Модератора.