Разместить компонент в сборке.

Автор Maxtony, 10.12.25, 21:22:31

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

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

Maxtony

Здравствуйте!

Подскажите, пожалуйста, можно ли в сборке выбрать команду "Разместить компонент" через компас API? Нашел, как вставлять и выделять вставленный элемент, но не могу найти информации о "разместить компонент".

Компас v21.0.

lavgirb

Дано не обращался к этому коду. Вот как-то так...

Dim oPlacement          As KompasAPI7.Placement3D
Dim oCompPart7          As KompasAPI7.Part7
...
Set oPlacement = oCompPart7.Placement
With oPlacement
   .Rotate 0, 0, 0, 0, 0, 1, dRotAng_deg
   .SetOrigin dXc_mm, dYc_mm, dZc_mm
End With
oCompPart7.UpdatePlacement True

Maxtony

Цитата: lavgirb от 11.12.25, 09:57:19Дано не обращался к этому коду. Вот как-то так...

Dim oPlacement          As KompasAPI7.Placement3D
Dim oCompPart7          As KompasAPI7.Part7
...
Set oPlacement = oCompPart7.Placement
With oPlacement
   .Rotate 0, 0, 0, 0, 0, 1, dRotAng_deg
   .SetOrigin dXc_mm, dYc_mm, dZc_mm
End With
oCompPart7.UpdatePlacement True


Спасибо за отклик. Как я понимаю, это задание координат и поворот, после которых будет задано конкретное положение детали. Мне нужно именно вызов окна "разместить компоненты" (как на скриншоте 2 в запросе), после которого пользователь уже сам может двигать деталь/размещать по координатам или сопряжениям. Такое же окно появляется при вставке компонента через интерфейс компаса(ниже скриншот). Я как раз вставляю деталь чуть ранее. Может, как вариант есть вид вставки, чтобы такое окно оставалось?

Kolos

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

lavgirb

Цитата: Kolos от 11.12.25, 13:21:55IApplication.ExecuteKompasCommand
Kolos, а есть способ искать команды, не указанные в SDK?

Kolos

Цитата: lavgirb от 11.12.25, 13:29:40Kolos, а есть способ искать команды, не указанные в SDK?
Метод научного тыка.

lavgirb

Цитата: Kolos от 11.12.25, 13:45:48Метод научного тыка.
Здесь слишком много тыков надо сделать)
Может как-то их можно ограничить?
С обозримой перспективой нужного тыка.

p3452

Цикл от -10 до 100000 и, в качестве ПРЕДВАРИТЕЛЬНОГО "фильтра", проверка:
IApplication.IsKompasCommandEnable(...) - Проверить доступность выполнения команды

lavgirb

Цитата: p3452 от 11.12.25, 14:09:04Цикл от -10 до 100000 и, в качестве ПРЕДВАРИТЕЛЬНОГО "фильтра", проверка:
IApplication.IsKompasCommandEnable(...) - Проверить доступность выполнения команды
Здесь каждую команду надо выполнить, оценить, отменить...
Сложновато.


Придумал такой вариант.
1 Посылаем в окно КОМПАС сочетание клавиш Alt+/. Оно устанавливает фокус на окно поиска команд.
2 Посылаем сочетание клавиш Ctrl+V для вставки предварительно скопированного в буфер обмена текста команды.
3 Посылаем "Стрелка вниз" (не пробовал, возможно ли), выделяет найденную команду в выпадающем списке, и потом посылаем Enter.
4 Команда из буфера обмена выполняется.
Надо будет попробовать.

p3452

#9
Цитата: lavgirb от 11.12.25, 14:21:13Здесь каждую команду надо выполнить, оценить, отменить...
Сложновато.

Все, даже, еще сложнее, чем Вы себе представляте (Вы забыли о среде(окружении), в которой(котором) МОЖЕТ выполнится "команда"...).
Но!
В теории, процесс можно автоматизировать на 100%:
- получаем список доступных команд;
- цикл по видам "окружения";
-    цикл по списку команд
-       "запускаем" команду
-       проверяем наличие какого-либо активного "процесса"
-          если есть "процесс"
-              фиксируем код команды и информацию о "процессе".

p/s: "В теории" т.к. предпочитаю ПОЛНУЮ автоматизацию, а не полуручной режим...

 

Maxtony

Мое решение:

Вставка детали -> выделение детали -> Размещение компонента

app.ExecuteKompasCommand(20186, True)

Спасибо принявшим участие.
+ Благодарностей: 1

Kolos

Цитата: Maxtony от 11.12.25, 20:37:09Мое решение:

Вставка детали -> выделение детали -> Размещение компонента

app.ExecuteKompasCommand(20186, True)

Спасибо принявшим участие.
Работает.
В справке дырка, поэтому искать нужно было.
изображение_2025-12-11_194748699.png

p3452

ТАМ "куча" недокументированных команд...

Kolos

Цитата: p3452 от 11.12.25, 21:07:05ТАМ "куча" недокументированных команд...
Это понятно и ошибок там в справке хватает.

lavgirb


Kolos

#15
Цитата: lavgirb от 12.12.25, 07:39:21Это результат, а где решение?)
Тут решение простое.
Выделил компонент.
Выполнил команду.
В файле даже константа прописана, а в справке нет.
Выполнил команду можно так:
KompasApi.ExecuteKompasCommand(prRepositionPart,False); // Разместить компонент в сборке - 20186

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

p3452

Kolos, спасибо за напоминание о заголовочных файлах ("текстовку" можно брать из них...)!