Как объединить точку отрезка и точку начала координат

Автор maksim krotov, 03.11.25, 09:54:37

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

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

maksim krotov

Допустим, есть такая задача: создать эскиз, в котором одна линия берет свое начало из центра системы координат. Как мы это делаем "ручками": просто выбираем инструмент "отрезок" и кликаем лкм по центру координат, а затем нажимаем в произвольном месте второй раз и получаем отрезок, первая точка которого зафиксирована.
Я пытался проделать то же самое с помощью API и у меня получилось только через фиксацию одной из точек:

IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
IKompasDocument document = application.Documents.Add(DocumentTypeEnum.ksDocumentPart);
IPartDocument partDocument = document as IPartDocument;

IPart7 part = partDocument.TopPart;
IModelContainer modelContainer = part as IModelContainer;

Sketch sketch = modelContainer.Sketchs.Add();
sketch.Plane = part.DefaultObject[ksObj3dTypeEnum.o3d_planeXOY];

sketch.Update();

IKompasDocument2D document2D = sketch.BeginEdit();
IViewsAndLayersManager viewsAndLayersManager = document2D.ViewsAndLayersManager;
IView view = viewsAndLayersManager.Views.ActiveView;
IDrawingContainer drawingContainer = (IDrawingContainer)view;


LineSegment lineSegment = drawingContainer.LineSegments.Add();
lineSegment.X1 = 0;
lineSegment.Y1 = 0;
lineSegment.X2 = 100;
lineSegment.Y2 = 0;

lineSegment.Update();


IDrawingObject1 drawingObject1 = (IDrawingObject1)lineSegment;
IParametriticConstraint parametriticConstraint = drawingObject1.NewConstraint();
parametriticConstraint.Index = 0;
parametriticConstraint.ConstraintType = ksConstraintTypeEnum.ksCFixedPoint;
parametriticConstraint.Create();


sketch.EndEdit();


Можно ли сделать то же самое, только не через ksConstraintTypeEnum.ksCFixedPoint, а через ksConstraintTypeEnum.ksCMergePoints?  Можно ли получить точку начала координат?

Miroshnyk

Так делайте совпадение ILocalCoordinateSystem2D и отрезка.

Miroshnyk

Компас-3D - (Глюк), живёт своей жизней.
Если Вы научили - Глюк, расскажите пожалуйста.
Я проверил работу 2D И 3D, потом сделаю резюме.
PS. То, что выше можете похоронить.

Miroshnyk

Посмотрим весёлые картинки.
Мы видим, есть такая точка начала СК, интерфейс её не реализован, но это не страшно, во фрагменте получить мы её можем, а в эскизе (документ фрагмент) точка есть, но получить невозможно.
изображение_2025-11-05_075633714.png
Фрагмент до установки совпадения отрезка с СК.
изображение_2025-11-05_080138263.png
Фрагмент после установки совпадения отрезка с СК.
изображение_2025-11-05_080226083.png

Miroshnyk

Получилось сделать совпадение отрезка с СК эскиза.
Пришлось эскиз создавать не через pSketch.BeginEdit, а иначе.


maksim krotov

Я правильно понял, что это можно делать только с фрагментом, а с документом детали, к примеру, нельзя?

Kolos

Цитата: maksim krotov от 07.11.25, 16:13:19Я правильно понял, что это можно делать только с фрагментом, а с документом детали, к примеру, нельзя?
Можно и в эскизе детали делать.

p3452

Цитата: Kolos от 24.11.25, 09:50:11Можно и в эскизе детали делать.
Может ПРДЕМОНСТРИРУЕТЕ код, для эскиза в детали?

Kolos

Цитата: p3452 от 24.11.25, 12:16:27Может ПРДЕМОНСТРИРУЕТЕ код, для эскиза в детали?
Выкладывали ролик с кодом и рассказом нюансов подводных камней.
IParametriticConstraint.zip

p3452

Kolos, ваши слова - "сотрясение воздуха" и  НЕ БОЛЕЕ!

Kolos

Цитата: p3452 от 24.11.25, 12:46:43Kolos, ваши слова - "сотрясение воздуха" и  НЕ БОЛЕЕ!
Пожалуйста Вам код и библиотека, которая по нему работает.
IParametriticConstraint.zip

изображение_2025-11-24_175035449.png

p3452

Kolos, зачем, в очередной раз, "сотрясать воздух" банальным кодом?
Вы название ТЕМЫ читали?
Где "начало координат" эскиза?

Kolos

#12
Цитата: p3452 от 24.11.25, 19:30:20Где "начало координат" эскиза?
Тут.

изображение_2025-11-24_183551437.png

PS. Вы - вложение запустите и увидите на картинке - "эскиз 1", где точка начала координат не наложена, т.к. не найдена, с "эскизом 2", надеюсь вопросов нет.
Данная картинка была получена работой вложения на КОМПАС-3D v21.

изображение_2025-11-24_191014679.png


p3452

В пост №3 Miroshnyk ВСЕ уже было сказано!

На сегодняшний день (v24), есть факт ДЫРЫ в API, нельзя наложить ограничение "совпадение точек" на точку "начала СК эскиза" и любую другую точку, потому что невозможно получить точку "начала СК эскиза"!

Kolos

Цитата: p3452 от 24.11.25, 21:50:55В пост №3 Miroshnyk ВСЕ уже было сказано!

На сегодняшний день (v24), есть факт ДЫРЫ в API, нельзя наложить ограничение "совпадение точек" на точку "начала СК эскиза" и любую другую точку, потому что невозможно получить точку "начала СК эскиза"!
Вы ему в ЛС напишите - пост №4, но Вы читать не умеете.
Цитата: Miroshnyk от 06.11.25, 19:22:07Получилось сделать совпадение отрезка с СК эскиза.
Пришлось эскиз создавать не через pSketch.BeginEdit, а иначе.

Starik


Kolos

Цитата: Starik от 25.11.25, 07:40:46Без наездов попрошу!!!!! :um:
Никаких наездов, только - КОМПАС API.
Просто объясняю человеку, что нет тут никакого глюка, просто по разному работает API, при разном способе создания эскиза в детали.

Kolos

#17
Тему можно закрыть, а не только удалять сообщения.
PS. Я писал, что тема себя исчерпала.

Модератор

Уважаемый Kolos мы Вас прекрасно поняли . Дважды повторять не надо. Если для Вас тема стала неактуальна, то для других возможно по другому.

Kolos

Цитата: Модератор от 25.11.25, 15:40:25Уважаемый Kolos мы Вас прекрасно поняли . Дважды повторять не надо. Если для Вас тема стала неактуальна, то для других возможно по другому.
Т.е. Оскорблять меня можно, банить можно, а остальные - молодцы.
PS. Вопросов больше нет.(Извиняюсь, что нарушил правила, теперь мне бан - пожизненно).