Entwickler-Ecke

Sonstiges (Delphi) - DXF manipulieren


Bronstein - Fr 05.03.10 07:58
Titel: DXF manipulieren
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:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
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 = 2then
        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;


Im Anhang habe ich mal die Zeichnung von der ich spreche


Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am Fr 05.03.2010 um 17:30


Xentar - Fr 05.03.10 10:36

Definiere "funktioniert nicht"...
Fehlermeldung? Schon mit dem Debugger durchgegangen?


Bronstein - Fr 05.03.10 17:34

Die Funktion geht schon in Delphi.
Es geht mir um den Aufbau eines DXF Files.
Denn das Bauteil X28 ist immernoch vorhanden, nur die Beschriftung wird gelöscht. Die Form des Bauteils bleibt aber erhalten.