Snap для пересечения
Snap для пересечения
Здравствуйте,
Работает ли функция Snap для пересечения линий? Среди видов TObjectSnapState есть osIntersection. Когда оно работает?
Как можно получить Snap для пересечения линий?
Мне необходимо создать "сетку (grid)" для облегчения рисования замкнутых фигур, и надо чтобы за узлы Snap цеплялся
для точности рисования. Возможно ли это? или надо создавать точки в узлах пересечения?
Александр.
Работает ли функция Snap для пересечения линий? Среди видов TObjectSnapState есть osIntersection. Когда оно работает?
Как можно получить Snap для пересечения линий?
Мне необходимо создать "сетку (grid)" для облегчения рисования замкнутых фигур, и надо чтобы за узлы Snap цеплялся
для точности рисования. Возможно ли это? или надо создавать точки в узлах пересечения?
Александр.
Re: Snap для пересечения
Здравствуйте,
функция Snap будет работать для пересечения линий. В общем случае для привязки необходимо задать соответствующим образом свойство TsgDrawingNavigator.SnapControl.SnapMask. При реализации привязки по пересечению необходимо дополнительно инициализировать свойства TsgSelectionMatrix и SetMatrixMode объекта TsgCADImage:
Кроме того, библиотека предусматривает использование привязки по сетке. Если вы создадите свой объект Grid, сможете использовать TObjectSnapMode.osGrid.
Александр.
функция 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;
Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support
Re: Snap для пересечения
Каким образом создается Grid? Я не нашел такого объекта или свойства в библиотеке CadImportVCL. Могли бы Вы выложить какой либо пример?
Александр.
Александр.
Re: Snap для пересечения
Здравствуйте Александр.
Объекта Grid в библиотеке нет, однако предусматривается привязка к подобному объекту если вы его создадите самостоятельно. В общем случае для реализации привязки по сетке необходимо описать сетку (напр. базовую точку и шаг сетки) и реализовать функцию приведения CAD координат, полученных из экранных координат курсора, к ближайшему узлу сетки. Пример перерасчёта экранных координат в CAD координаты файла смотрите в демо-приложениях, напр. Viewer.
Александр.
Объекта Grid в библиотеке нет, однако предусматривается привязка к подобному объекту если вы его создадите самостоятельно. В общем случае для реализации привязки по сетке необходимо описать сетку (напр. базовую точку и шаг сетки) и реализовать функцию приведения CAD координат, полученных из экранных координат курсора, к ближайшему узлу сетки. Пример перерасчёта экранных координат в CAD координаты файла смотрите в демо-приложениях, напр. Viewer.
Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support
Re: Snap для пересечения
Спасибо за ответы.
Я обнаружил проблему при использовании Snap для пересечения, в случае, если в схеме имеется объект линия или полилиния с параметром Thickness <> 0. Этот параметр виден при открытии файла в Автокад, при открытии же файла в TSGDrawingNavigator привязка osIntersection перестает работать для всех пересечений.
Для примера, я приложил такой файл, где есть белая полилиния с Thickness = 75,8786.
Также привязка "osIntersection" не работает для пересечений линий, которые находятся в файле, вставленном как XRef.
Возможно ли включить привязку для пересечений для файлов, добавленных по XRef?
С уважением,
Александр.
Я обнаружил проблему при использовании Snap для пересечения, в случае, если в схеме имеется объект линия или полилиния с параметром Thickness <> 0. Этот параметр виден при открытии файла в Автокад, при открытии же файла в TSGDrawingNavigator привязка osIntersection перестает работать для всех пересечений.
Для примера, я приложил такой файл, где есть белая полилиния с Thickness = 75,8786.
Также привязка "osIntersection" не работает для пересечений линий, которые находятся в файле, вставленном как XRef.
Возможно ли включить привязку для пересечений для файлов, добавленных по XRef?
С уважением,
Александр.
- Attachments
-
- Thickness_snap.zip
- Пример файла, где белая линия имеет Thickness <> 0
- (5.46 KiB) Downloaded 1868 times
Re: Snap для пересечения
Здравствуйте Александр.
Мы протестировали привязку по пересечению с вашим файлом. Вы правы, действительно появляется проблема при наличии объекта со значением Thickness отличным от нуля. Спасибо что помогли обнаружить проблему! Работы по её исключению будут проводиться нашим отделом разработки.
Для объектов XRef или Insert привязка не предусмотрена.
Александр.
Мы протестировали привязку по пересечению с вашим файлом. Вы правы, действительно появляется проблема при наличии объекта со значением Thickness отличным от нуля. Спасибо что помогли обнаружить проблему! Работы по её исключению будут проводиться нашим отделом разработки.
Для объектов XRef или Insert привязка не предусмотрена.
Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support