Discuss and ask questions about CAD VCL (Delphi and C++ Builder).
Moderators: SDS, support, admin
-
hayami
- Posts: 18
- Joined: 23 Jan 2013, 04:53
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: 3272
- Joined: 30 Mar 2005, 11:36
-
Contact:
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.
-
hayami
- Posts: 18
- Joined: 23 Jan 2013, 04:53
Post
by hayami » 08 Apr 2014, 07:15
I was able to delete the layer in the sample code.
Thank you.