Copy layers
Posted: 13 Jun 2006, 15:58
How to copy all layers from one TsgDXFImage in another TsgDXFImage?
CADSoftTools - AutoCAD DWG DXF HPGL (PLT) SVG CGM STEP IGES STL SAT viewers, converters and developer tools. Delphi and C# source code.
https://cadsofttools.com/forum/
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>;