how to delete layer

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

Moderators: SDS, support, admin

Post Reply
hayami
Posts: 18
Joined: 23 Jan 2013, 04:53

how to delete layer

Post by hayami » 07 Apr 2014, 05:40

hello.

I'm trying to delete a layer with the following code.

Code: Select all

var
	wCadImg: TsgCADdxfImage;
	wEntity: TsgDXFEntity;
	wLayer: TsgDXFLayer absolute wEntity;
	wGroup: TsgDXFGroup;
	i: Integer;
~~~~~~~~~~~~

		wGroup := wCadImg.Converter.Sections[csLayers];
		for i := 0 to wGroup.Count - 1 do begin
			wEntity := wGroup.Entities[i];
			if (wLayer.Name = 'target layer') then begin
				Break;
			end;
		end;
		wCadImg.Converter.RemoveEntity(wLayer, True);

~~~~~~~~~~~~
Layer was not deleted.
Am I wrong?

Layer does not have a Entitiy.

use version is 9.1.

Thank you.

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

Re: how to delete layer

Post by support » 07 Apr 2014, 17:46

Hello,

The code below deletes a layer specified by name and all entities that belong to this layer:

Code: Select all

var
  Img: TsgCADImage;

...

procedure DeleteLayer(AName: string);
var
  vLayer: TsgDXFLayer;
  vEntity: TsgDXFEntity;
  I, Count: Integer;
begin
  vLayer := TsgDXFLayer(Img.Converter.Sections[csLayers].FindEntByName(AName));
  if Assigned(vLayer) then
  begin
    Count := Img.Converter.Sections[csEntities].Count;
    I := 0;
    while I < Count do
    begin
      vEntity := Img.Converter.Sections[csEntities].Entities[i];
      if vEntity.Layer = vLayer then
      begin
        Img.Converter.RemoveEntity(vEntity, True);
        Count := Img.Converter.Counts[csEntities];
      end
      else
        Inc(I);
    end;
    if Img.Converter.Sections[csLayers].RemoveEntity(vLayer) then
      vLayer.Free;
  end;
end;
Mikhail.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

hayami
Posts: 18
Joined: 23 Jan 2013, 04:53

Re: how to delete layer

Post by hayami » 08 Apr 2014, 07:15

I was able to delete the layer in the sample code.

Thank you.

Post Reply