I have modified the example "Delphi\Demos\Add new entities", to add a type entity "TsgDXFImageEnt." But when exit the application I obtain the following error:
"Exception EInvalidPointer in module rtl100.bpl at 00006581. Invalid pointer operation."
Thank you,
Roberto
Code: Select all
<b>procedure</b> TfmMain.btnNewClick(Sender: TObject);
<b>var</b>
Ent: TsgDXFImageEnt;
ADXFImage: TsgDXFImage;
EDef : TsgDXFImageDef;
<b>begin
if not</b> (sgCADImage.Picture.Graphic <b>is</b> TsgDXFImage) <b>then</b>
Exit;
<i>{ Im := TsgDXFImage(sgCADImage.Picture.Graphic);
Ent := GetEntity;
if Ent <> nil then
begin
Im.Converter.Sections[csEntities].AddEntity(Ent);
if Assigned(Im.Converter.OnCreate) then
Im.Converter.OnCreate(Ent);
Im.Converter.Loads(Ent);
Im.GetExtents;
sgCADImage.Refresh;
FLastAdded := Ent;
end;}</i>
ADXFImage := TsgDXFImage(sgCADImage.Picture.Graphic);
EDef := TsgDXFImageDef.Create;
EDef.FileName := 'c:\temp\image.bmp';
EDef.Picture.LoadFromFile('c:\temp\image.bmp');
EDef.Handle := ADXFImage.Converter.ImageDefCount;
ADXFImage.Converter.Sections[csEntities].AddEntity(EDef);
<b>if</b> Assigned(ADXFImage.Converter.OnCreate) <b>then</b>
ADXFImage.Converter.OnCreate(EDef);
ADXFImage.Converter.Loads(EDef);
Ent := TsgDXFImageEnt.Create;
Ent.Point := MakeFPoint(0,0,0);
Ent.Point1 :=MakeFPoint(3,0,0); //width
Ent.Point2 := MakeFPoint(0,3,0); //heigth
Ent.Point3 := MakeFPoint(1,1,1); //scale
Ent.ImageDef := EDef.Handle;
Ent.FindPicture(ADXFImage.Converter);
ADXFImage.Converter.Sections[csEntities].AddEntity(Ent);
<b>if</b> Assigned(ADXFImage.Converter.OnCreate) <b>then</b>
ADXFImage.Converter.OnCreate(Ent);
ADXFImage.Converter.Loads(Ent);
ADXFImage.GetExtents;
sgCADImage.Refresh;
FLastAdded := Ent;
<b>end</b>;