gstof
 
 
  Зарегистрирован: 26.01.2007 Сообщения: 70 Откуда: Vladivostok-Kurgan
  | 
		
			
				 Добавлено: Пн 18 Июн 2007 15:17    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Я так и понял, что метод Closed определяет замыкание части контура.
 
Однако в моем коде, сделанном на основе Вашего почему-то не происходит замыкания. А в ручную когда их много тоскливо
 
 	  | Код: | 	 		  procedure TForm1.Button4Click(Sender: TObject);
 
var x0,y0:Double;
 
begin
 
            aNewObjects:= FInGEOApp.ActiveDb.MapObjects;
 
            aNewObject:=aNewObjects.AddObject(Edit1.Text);
 
            NewContour:=aNewObject.Shapes.Insert(0,Edit2.Text).Contour;
 
  theObjID := FInGEOApp.Selection.IDs[0];
 
   aMapObjects := FInGEOApp.ActiveDb.MapObjects;
 
   aMapObject := aMapObjects.GetObject(theObjID);
 
   for i := 0 to aMapObject.Shapes.Count - 1 do begin
 
      aShape := aMapObject.Shapes[i];
 
      // Информация о стиле отрисовки фигуры
 
      Memo1.Lines.Add(Format('ShapeStyleName: %s',[aShape.Style.Name]));
 
      // Если фигура не определяет геометрию пространственного объекта,
 
      // то ее пропускаем
 
      if not aShape.DefineGeometry then
 
         Continue;
 
      for j := 0 to aShape.Contour.Count - 1 do begin
 
         aNewPart:= NewContour.Insert(-1); //Создание новой части
 
         aPart := aShape.Contour[j];
 
         // Общая информация о части контура
 
         Memo1.Lines.Add(Format('  Part %d',[j]));
 
         if aPart.Closed then
 
            Memo1.Lines.Add('  Эта часть контура замкнута.')
 
         else
 
            Memo1.Lines.Add('  Эта часть контура разомкнута.');
 
         Memo1.Lines.Add(Format('  Площадь: %g мм.', [aPart.Square]));
 
         Memo1.Lines.Add(Format('  Периметр: %g мм.', [aPart.Perimeter]));
 
         for k := 0 to aPart.VertexCount - 1 do
 
            begin
 
            aPart.GetVertex(k,aX,aY,aC);
 
          {  if k=0 then
 
             begin
 
             x0:=aX;
 
             y0:=aY;
 
             end; }
 
            Memo1.Lines.Add(Format('    Vertex %d: x = %g, y = %g, convexity = %g', [k,aX,aY,aC])); // Информация о вершинах
 
            aNewPart.InsertVertex(-1,aX,aY,0);
 
            end; //end vertex
 
         //  aNewPart.InsertVertex(-1,x0,y0,0);
 
           aNewPart.Closed; //закрытие новой части
 
      end;  //end Part
 
   end;  //end Shape
 
            aNewObjects.UpdateChanges;
 
Memo2.Lines.Add('Закончено');
 
end; | 	 
  | 
			 
		  |