Hallo,
ich habe eine DXF-Zeichnung im AutoCAD Format AC1014 und möchte diese mit Hilfe von einem selbst geschriebenen Programm manipulieren, sprich einzelne Bauteile herrauslöschen, in dem ich den Positionsbezeichner angebe.
Ich habe mal in Delphi eine kleiner Funktion geschrieben, die auch teilweise funktioniert.
Das Bauteile BR500, kann man damit löschen (links unten)
Beim Bauteil X28 funktioniert das aber nicht (in der Mitte)
So sieht meine Funktion aus:
function LoescheBT(Bauteil: String; DXF: TStringList):Boolean;
var
check: Boolean;
t, y, status: Integer;
begin
check := false;
t := 0;
while check = false do
begin
if Bauteil = DXF[t] then
begin
//AcDbEntintiy
while t > 0 do
begin
if DXF[t] = 'AcDbEntity' then
begin
dec(t);
break;
end;
dec(t);
end;
y := t;
status := 0;
while t < DXF.Count-1 do
begin
if (DXF[t+6] = 'AcDbText') and (status = 2) then
begin
check := true;
break;
end;
if (DXF[t] = 'AcDbText') then
inc(status);
Form1.Memo2.Lines.Add(DXF[t]);
DXF.Delete(t);
//inc(t);
end;
end;
inc(t);
if t > DXF.Count-1 then
break;
end;
result := check;
end;
Kurze Erklärung der Funktion.
Die Funktion geht das DXF-File Zeile für Zeile durch (nach unten), bis es auf das angegebene Bauteil kommt (BR500). Danach geht sie wieder solange nach oben, bis sie auf "AcDbEntity" stößt. Jetzt werden die Zeilen nach unten gelöscht, bis zweimal AcDbText gekommen ist und bis die aktuelle Zeile plus 6 Zeilen weiter kein AcDbText kommt.
Im Anhang habe ich mal die Zeichnung von der ich spreche
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP