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

... простой в использовании API для работы с файлами форматов AutoCAD DWG, DXF, Hewlett-Packard HPGL, SVG и CGM в приложениях Delphi/C++Builder.

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

Postby armand » 28 Jul 2010, 18:54

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

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

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

Александр.
armand
 
Posts: 4
Joined: 28 Jul 2010, 18:49

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

Postby support » 30 Jul 2010, 14: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.

Александр.
Please post questions to the forum or write to support@cadsofttools.com
support
 
Posts: 1721
Joined: 30 Mar 2005, 10:36
Location: Russia

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

Postby armand » 30 Jul 2010, 18:00

Каким образом создается Grid? Я не нашел такого объекта или свойства в библиотеке CadImportVCL. Могли бы Вы выложить какой либо пример?
Александр.
armand
 
Posts: 4
Joined: 28 Jul 2010, 18:49

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

Postby support » 02 Aug 2010, 10:10

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

Александр.
Please post questions to the forum or write to support@cadsofttools.com
support
 
Posts: 1721
Joined: 30 Mar 2005, 10:36
Location: Russia

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

Postby armand » 10 Aug 2010, 12:08

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

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

С уважением,
Александр.
Attachments
Thickness_snap.zip
Пример файла, где белая линия имеет Thickness <> 0
(5.46 KiB) Downloaded 6 times
armand
 
Posts: 4
Joined: 28 Jul 2010, 18:49

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

Postby support » 10 Aug 2010, 15:38

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

Александр.
Please post questions to the forum or write to support@cadsofttools.com
support
 
Posts: 1721
Joined: 30 Mar 2005, 10:36
Location: Russia


Return to CAD Import VCL

Who is online

Users browsing this forum: No registered users and 1 guest