Загрузка и чтение объектов из файла
Posted: 21 Apr 2014, 19:01
Есть ряд вопросов:
Так вот при переборе точек полилинии – по непонятным мне причинам оказывается что координаты части вертексов нулевые.
они и в исходном файле нулевые.
Но при этом в автокаде, да и в вашем примере - объект показывается нормально. Если смотреть пример SimpleImport – это также проявляется - точки экспортируются в текстовый файл с нулевыми координатами. Если это служебные точки (мусор) – то как можно их отсечь кроме как анализом координат? Нужно смотреть в TsgDXFVertex.Flag? Ниже привожу две точки из этого файла:

ну а должно быть как-то так

налицо неправильный порядок следования точек. прочедура чтения - в куске кода выше.
не смог прикрепить вложение поэтому примеры файлов - по ссылке
- 1
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
- 3
- 4

ну а должно быть как-то так

налицо неправильный порядок следования точек. прочедура чтения - в куске кода выше.
не смог прикрепить вложение поэтому примеры файлов - по ссылке