I try changing a color in the text in DXF file direct in the Demo Editor from VCL Import CAD Components (only as example)
This code it's work
Code: Select all
procedure TfmPreview.FillImage(ASManager: TsgSelectionManager;
ADXFImage: TsgCADImage);
var
I: Integer;
vEnt: TsgDXFEntity;
vDXFImage: TsgCADImage;
begin
FSManager := ASManager;
vDXFImage := TsgCADImage.Create;
for I := 0 to FSManager.SelectedEntities.Count - 1 do
begin
vEnt := TsgDXFEntityClass(TsgDXFEntity(FSManager.SelectedEntities[I]).ClassType).Create;
vEnt.AssignEntity(TsgDXFEntity(FSManager.SelectedEntities[I]));
vDXFImage.Converter.OnCreate(vEnt);
vDXFImage.Converter.Sections[csEntities].AddEntity(vEnt);
vDXFImage.Converter.Loads(vEnt);
if vEnt is TsgDXFText then
begin
showmessage('Das ist ein Text'+IntToStr(vEnt.Color and $FFFFFFFF));
vEnt.SetColor($00120092); // die Farbe soll man gerade in Text-Entyti weckseln
vDXFImage.Converter.loads(vEnt); // und dann bei TsgCADImage dass hat als ein Kind das Entity speichern
showmessage(IntToStr(vEnt.Color and $FFFFFFFF));
end;
end;
vDXFImage.GetExtents;
FDNavigator.Picture.Graphic := vDXFImage;
FDNavigator.Color := vDXFImage.BackgroundColor;
//TsgCADImage(sgImage.Picture.Graphic).IsWithoutBorder := True;// without border
vDXFImage.Free;
FDNavigator.FitToSize;
end;
Code: Select all
var
CurNav : TsgCADImage;
curEnt: TsgDXFEntity; // das Objekt, das werden wir verfarben
begin
CurNav := TsgDXFImage(FDNavigator.Picture.Graphic); // Hier converten wir unser Navigator-Objekt in Visualobjekt, mit dem kцnnen wir arbeiten als Array von Entytis
curEnt := TsgDXFEntityClass(TsgDXFEntity(Fmanager.SelectedEntities[0]).ClassType).Create;
if curEnt is TsgDXFText then
begin
curEnt.SetColor($0088EA92); // die Farbe soll man gerade in Text-Entyti weckseln#
CurNav.Converter.loads(curEnt); // und dann bei TsgCADImage dass hat als ein Kind das Entity speichern
// CurNav.GetExtents;
FDNavigator.Picture.Graphic := CurNav;
// DNavigator.Refresh;
ShowMessage('Der Font vom Text ist getauscht!');
end;
CurNav.free in the and of procedure.
But when make I no free, then have I a message access violation whet I second select making