Copy layers

Discuss and ask questions about CAD VCL (Delphi and C++ Builder).

Moderators: SDS, support, admin

Post Reply
Yura
Posts: 8
Joined: 06 May 2006, 11:07

Copy layers

Post by Yura » 13 Jun 2006, 15:58

How to copy all layers from one TsgDXFImage in another TsgDXFImage?

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

Post by support » 14 Jun 2006, 10:47

Hello,

Please use the following code:

Code: Select all

<b>procedure</b> TForm1.Copylayers1Click(Sender: TObject);
<b>var</b>
  I: Integer;
  vLayer, vL: TsgDXFLayer;
  vCAD: TsgDXFImage;
  Converter: TsgDXFConverter;
<b>begin</b>
  sgPaintBox.Picture.Graphic := <b>nil</b>;
  Img := TsgDXFImage.Create;
  Converter := Img.Converter;
  Converter.Sections[csLayers] := TsgDXFGroup(Converter.NewEntity(Converter.Sections[csTables],TsgDXFTable));
  vCAD := TsgDXFImage.Create;
  <b>try</b>
    vCAD.LoadFromFile('C:\Test-L.dxf');
    <b>for</b> I := 0 <b>to</b> vCAD.Converter.Sections[csLayers].Count - 1 <b>do
    begin</b>
      vL := TsgDXFLayer(vCAD.Converter.Sections[csLayers].Entities[I]);
      vLayer := TsgDXFLayer.Create;
      Converter.Sections[csLayers].AddEntity(vLayer);
      vLayer.Flags := vL.Flags;
      vLayer.Pen.Assign(vL.Pen);
      vLayer.IsPlotting := vL.IsPlotting;
      vLayer.LineTypeScale := vl.LineTypeScale;
      vLayer.Lines := TsgLines.Create;
      vLayer.Lines.Assign(vL.Lines);
      vLayer.Name := vL.Name;
      vLayer.SetColor(vL.Color);
      vLayer.Visible := vL.Visible;
      vLayer.Visibility := vL.Visibility;
      Converter.Loads(vLayer);
      Converter.OnCreate(vLayer);
    <b>end</b>;
  <b>finally</b>
    FreeAndNil(vCAD);
  <b>end</b>;
  Img.GetExtents;
  sgPaintBox.Picture.Graphic := Img;
<b>end</b>;
Sergey.

please post questions to the forum or write to support@cadsofttools.com

Post Reply