Page 1 of 1

How to know if a layer is from an xref

Posted: 29 Jun 2006, 18:47
by fabzouni
Hi,

When i get the list of an autocad file, I have all the layers of this file but also the ones that are defined into an external reference file.
These "external layers" name are like "external filename|layer name"

I would like to know if the layer if defined into an external file or not.

I've seen that the property TsgDXFLayer.Flags get the value
16 "if table entry is externally dependent on an xref", but it seems not to be exactly what i need.

Any Idea ??

Thanks
Fabzouni

Posted: 30 Jun 2006, 12:36
by support
Hello,

The following code allows to get layers in the XRef.

// Based on Viewer demo (..\cadimportvcl\Delphi\Demos\Viewer\.. folder)

Code: Select all

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
  { DoXRefsLayers
  
    Example of access to XRefs Layers
    MAINimage - the file where Xrefs have been inserted. }
  <b>procedure</b> DoXRefsLayers(MAINimage: TsgDXFImage; <b>const</b> AYourXrefName: <b>string</b>);
  <b>var</b>
    I, J: Integer;
    vXRef: TsgDXFXRef;
    vImg: TsgDXFImage;
    vLayer: TsgDXFLayer;
  <b>begin</b>
    <b>for</b> I := 0 <b>to</b> MAINimage.Converter.XRefs.Count - 1 <b>do
    begin</b>
      vXRef := TsgDXFXRef(MAINimage.Converter.XRefs.Items[I]);
      // Code below is executed for your specified Xref
      <b>if</b> vXRef.Name = AYourXrefName <b>then
      begin</b>
        vImg := TsgDXFImage(vXRef.CADImage);
        <b>for</b> J := 0 <b>to</b> vImg.Converter.Counts[csLayers] - 1 <b>do
        begin</b>
          vLayer := TsgDXFLayer(vImg.Converter.Sections[csLayers].Entities[J]);
          // ... Do vLayer (your code) ... //
        <b>end</b>;
      <b>end</b>;
    <b>end</b>;
  <b>end</b>;
<b>begin</b>
  DoXRefsLayers(TsgDXFImage(sgPaintBox.Picture.Graphic), 'YOUR_XREF_NAME');
<b>end</b>;
The following line allows to get layers of the file itself:

Code: Select all

MAINimage.Converter.Sections[csLayers].Entities[J]

Sergey.



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