Создание ограничения "Выравнивание"

Автор Lemieux, 09.12.24, 10:36:42

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

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

UU


Михаил88

#21
Цитата: Lemieux от 09.12.24, 19:17:01Как Вы накладывали ограничения?

Выделил нужное ребро и запустил скрипт.

kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)

selection_manager = kompas_document_3d.SelectionManager
obj = selection_manager.SelectedObjects

part7 = kompas_document_3d.TopPart
model_container = kompas_api7_module.IModelContainer(part7)
sketchs = model_container.Sketchs
sketch = sketchs.Sketch(2)
print(sketch)
#  Войди в режим редактирования эскиза
kompas_doc = sketch.BeginEdit()

ks_sketch = kompas_object.TransferInterface(sketch, 1, 0)
ks_edge_definition = kompas_object.TransferInterface(obj, 1, 0)
print(ks_edge_definition)
ref = ks_sketch.AddProjectionOf(ks_edge_definition)
print(ref)
drawing_group = kompas_object.TransferReference(ref, 0)
line_segment = drawing_group.Objects()
print(line_segment)

kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_doc)
views_and_layers_manager = kompas_document_2d.ViewsAndLayersManager
views = views_and_layers_manager.Views
view = views.ActiveView
drawing_container = kompas_api7_module.IDrawingContainer(view)
circles = drawing_container.Circles
circle = circles.Circle(0)

# Создай параметрические ограничения
drawing_object1 = kompas_api7_module.IDrawingObject1(circle)

parametritic_constraint = drawing_object1.NewConstraint()
parametritic_constraint.ConstraintType = kompas6_constants.ksCVAlignPoints
parametritic_constraint.Index = 0
parametritic_constraint.Partner = line_segment
parametritic_constraint.PartnerIndex = 2
parametritic_constraint.Create()

#  Выйди из режима редактирования эскиза
sketch.EndEdit()

Остается только стиль линии проекционного отрезка поменять и все.

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

Михаил88

line_segment.Style = 2
line_segment.Update()

Стиль так поменяете и все.
Такой результат получите.


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

Lemieux

Спасибо, буду экспериментировать. Что интересно, если создавать инструментами КОМПАС, то в Partner есть ILineSegment, хотя если посмотреть IDRawingContainerб то будет всего лишь один примитив (в нашем случае окружность).

feron

Цитата: Михаил88 от 09.12.24, 19:32:38Остается только стиль линии проекционного отрезка поменять и все.

Зачем такая избыточность? почему бы сразу к ребру не закрепиться ?

Михаил88

Цитата: Lemieux от 09.12.24, 19:58:26Спасибо, буду экспериментировать. Что интересно, если создавать инструментами КОМПАС, то в Partner есть ILineSegment, хотя если посмотреть IDRawingContainerб то будет всего лишь один примитив (в нашем случае окружность).

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

Если создавать ограничение через компас руками, то он тоже создает проекционную кривую, но она какая то другая.

Тут знаете, можно долго разбираться и так и не получить результата, а нужно деньги зарабатывать да и нету сейчас столько свободного времени, но тема интересная.


feron

Цитата: Михаил88 от 09.12.24, 20:06:06создает проекционную кривую, но она какая то другая.
Воспользуйтесь утилитой получения типа активного объекта - тут я ее выложил https://forum.ascon.ru/index.php?topic=38281.0

Михаил88

Цитата: feron от 09.12.24, 20:10:49Воспользуйтесь утилитой получения типа активного объекта - тут я ее выложил

Вы выложите пример своего кода, который делает аналогичное вот и все, что тут обсуждать. Я выложил свой.
Я получил нужный мне результат.

feron

Цитата: Михаил88 от 09.12.24, 20:13:21Вы выложите пример своего кода, который делает аналогичное

не могу..
Цитата: feron от 09.12.24, 18:16:27Проверить не могу так как не настроил мост в системе тк работаю через кубическую систему.

UU

ksCHAlignPoints - Выравнивать две точки по горизонтали
ksCVAlignPoints - Выравнивать две точки по вертикали
Итог, покажите, Компас кушает, но хочется понять.
PS. Расстояние.

Lemieux

Цитата: UU от 09.12.24, 20:15:20ksCHAlignPoints - Выравнивать две точки по горизонтали
ksCVAlignPoints - Выравнивать две точки по вертикали
Итог, покажите, Компас кушает, но хочется понять.
PS. Расстояние.
Михаил уже всё показал.

Михаил88

Итого, что получилось.


UU

Цитата: Михаил88 от 09.12.24, 20:39:44Итого, что получилось.
Бред, что ожидали получить?
API, для получения 100% ожидаемого результата.

feron

Вышла ошибка: Fatal prophecy: The compiler foresaw this moment of despair.

Lemieux

Цитата: Михаил88 от 09.12.24, 20:39:44Итого, что получилось.


Всё получилось. Но сейчас изучаю эскиз сделанный КОМПАС, он совсем отличается.