Загрузка и чтение объектов из файла

Обсуждение вопросов импорта поддерживаемых форматов
Post Reply
alexey_mppl
Posts: 1
Joined: 21 Apr 2014, 17:46

Загрузка и чтение объектов из файла

Post by alexey_mppl » 21 Apr 2014, 19:01

Есть ряд вопросов:
  • 1
Во вложении есть файл (test.dxf) пытаюсь прочитать из него данные и сконвертировать в нужные мне структуры:

Code: Select all

//------------------------------------------------------------------------------
// полилиния
procedure TCADReader.DoConvertPolyline(Source: TObject; Dest: TMapObjectStructure);
var
  i, sIndex: Integer;
  Pnt: TFPoint;
  CadVertex: TsgDXFVertex;
begin
  sIndex:= Dest.AddSubObject(); //<-- это начало моего объекта
  for i:= 0 to  TsgDXFPolyLine(Source).Count -1 do
  begin
    CadVertex:= TsgDXFVertex(TsgDXFPolyLine(Source).Entities[i]);
    Pnt:= FPointXMat(CadVertex.Point,FCADReadParams.Matrix);
//    if ( Pnt.X <> 0 ) and ( Pnt.Y <> 0 ) then // <-- как отсечь мусор? 
    Dest.AddVertex(sIndex, 
      DoublePoint(
        Pnt.X * FGeomCoordinatesScaleFactor,
        Pnt.Y * FGeomCoordinatesScaleFactor));
  end;
end;
Так вот при переборе точек полилинии – по непонятным мне причинам оказывается что координаты части вертексов нулевые.
они и в исходном файле нулевые.
Но при этом в автокаде, да и в вашем примере - объект показывается нормально. Если смотреть пример SimpleImport – это также проявляется - точки экспортируются в текстовый файл с нулевыми координатами. Если это служебные точки (мусор) – то как можно их отсечь кроме как анализом координат? Нужно смотреть в TsgDXFVertex.Flag? Ниже привожу две точки из этого файла:
VERTEX
8
59
6
CONTINUOUS
62
12
5
AF07
10
-11229.939
20
11368.54
30
0.0
70
192
0
VERTEX
8
59
6
CONTINUOUS
62
12
5
AF08
10
0.0
20
0.0
30
0.0
70
128
71
-1
72
2
73
-4
74
3
0
  • 2
Камим образом можно определить, что cad файл успешно загружен? пример плохого файла - bad.dxf во вложении. он грузится, но в структурах - мусор.
  • 3
каким образом можно обычный блок от динамического?
  • 4
В каком порядке отдаются точки полилинии, то что я получаю отображается так:
Image
ну а должно быть как-то так
Image
налицо неправильный порядок следования точек. прочедура чтения - в куске кода выше.
не смог прикрепить вложение поэтому примеры файлов - по ссылке

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

Re: Загрузка и чтение объектов из файла

Post by support » 28 May 2014, 16:01

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

Если при загрузке файла не возникло ошибок, то он успешно загружен. Файл bad.dxf может быть успешно загружен при помощи библиотеки CAD VCL, но, по видимому, данный файл не содержит тех данных, которые вы пытаетесь прочитать.

На данный момент поддержка динамических блоков не реализована в библиотеке CAD VCL.

Точки полилинии (вертексы) отдаются именно в том порядке, как они располагаются в полилинии.


Михаил.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Post Reply