Snap для пересечения

Обсуждение вопросов импорта поддерживаемых форматов
Post Reply
armand
Posts: 4
Joined: 28 Jul 2010, 19:49

Snap для пересечения

Post by armand » 28 Jul 2010, 19:54

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

Работает ли функция Snap для пересечения линий? Среди видов TObjectSnapState есть osIntersection. Когда оно работает?

Как можно получить Snap для пересечения линий?
Мне необходимо создать "сетку (grid)" для облегчения рисования замкнутых фигур, и надо чтобы за узлы Snap цеплялся
для точности рисования. Возможно ли это? или надо создавать точки в узлах пересечения?

Александр.

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Snap для пересечения

Post by support » 30 Jul 2010, 15:21

Здравствуйте,
функция Snap будет работать для пересечения линий. В общем случае для привязки необходимо задать соответствующим образом свойство TsgDrawingNavigator.SnapControl.SnapMask. При реализации привязки по пересечению необходимо дополнительно инициализировать свойства TsgSelectionMatrix и SetMatrixMode объекта TsgCADImage:

Code: Select all

TForm1 = class(TForm)
//...
    property sgPaintBox: TsgDrawingNavigator read FsgPaintBox;
    property Img: TsgCADImage read GetCADImage;
//...
Img.SelectionMatrix := TsgSelectionMatrix.Create;
Img.SetMatrixMode(smEnabled);
//...
cnstSnapMask_inter: TObjectSnapState;
//...
cnstSnapMask_intersection := [osIntersection];
sgPaintBox.SnapControl.SnapMask := cnstSnapMask_intersection;
Кроме того, библиотека предусматривает использование привязки по сетке. Если вы создадите свой объект Grid, сможете использовать TObjectSnapMode.osGrid.

Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

armand
Posts: 4
Joined: 28 Jul 2010, 19:49

Re: Snap для пересечения

Post by armand » 30 Jul 2010, 19:00

Каким образом создается Grid? Я не нашел такого объекта или свойства в библиотеке CadImportVCL. Могли бы Вы выложить какой либо пример?
Александр.

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Snap для пересечения

Post by support » 02 Aug 2010, 11:10

Здравствуйте Александр.
Объекта Grid в библиотеке нет, однако предусматривается привязка к подобному объекту если вы его создадите самостоятельно. В общем случае для реализации привязки по сетке необходимо описать сетку (напр. базовую точку и шаг сетки) и реализовать функцию приведения CAD координат, полученных из экранных координат курсора, к ближайшему узлу сетки. Пример перерасчёта экранных координат в CAD координаты файла смотрите в демо-приложениях, напр. Viewer.

Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

armand
Posts: 4
Joined: 28 Jul 2010, 19:49

Re: Snap для пересечения

Post by armand » 10 Aug 2010, 13:08

Спасибо за ответы.
Я обнаружил проблему при использовании Snap для пересечения, в случае, если в схеме имеется объект линия или полилиния с параметром Thickness <> 0. Этот параметр виден при открытии файла в Автокад, при открытии же файла в TSGDrawingNavigator привязка osIntersection перестает работать для всех пересечений.
Для примера, я приложил такой файл, где есть белая полилиния с Thickness = 75,8786.

Также привязка "osIntersection" не работает для пересечений линий, которые находятся в файле, вставленном как XRef.
Возможно ли включить привязку для пересечений для файлов, добавленных по XRef?

С уважением,
Александр.
Attachments
Thickness_snap.zip
Пример файла, где белая линия имеет Thickness <> 0
(5.46 KiB) Downloaded 1827 times

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Snap для пересечения

Post by support » 10 Aug 2010, 16:38

Здравствуйте Александр.
Мы протестировали привязку по пересечению с вашим файлом. Вы правы, действительно появляется проблема при наличии объекта со значением Thickness отличным от нуля. Спасибо что помогли обнаружить проблему! Работы по её исключению будут проводиться нашим отделом разработки.
Для объектов XRef или Insert привязка не предусмотрена.

Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Post Reply