Porysujmy trochę czyli Łączenie SQLa, AutoCADa i Delphi
Sekcja podaje kody grup, które stosuje się do obiektów graficznych Sekcja podaje kody grup, które stosuje się do obiektów graficznych. Kody te znajdują się w sekcji ENTITIES pliku DXF i są wykorzystywane przez aplikacje AutoLISP-u i ARX w listach definicji elementów. Kody grup opisane w omawianej sekcji, można stosować do plików DXF, aplikacji (AutoLISP-u lub ARX), względnie do obu przypadków. Jeżeli opis kodu jest różny w przypadku aplikacji i w przypadku plików DXF (lub odnosi się tylko do jednego z tych rodzajów plików), to opis poprzedzony jest następującym wskaźnikiem: APP Opis dotyczący aplikacji DXF Opis dotyczący plików DXF Nie stosuje się specjalnego wskaźnika, jeżeli opis dotyczy obu rodzajów zastosowań. W przeciwnym przypadku wskaźnik jest podawany. Kody, które występują warunkowo, napisano na szarym tle. Tematy w tej sekcji: Wspólne kody grup obiektów graficznych 3DFACE 3DSOLID ARC ATTDEF ATTRIB BODY CIRCLE DIMENSION ELLIPSE HATCH IMAGE INSERT LEADER LINE LWPOLY LINE MLINE MTEXT OLEFRAME OLE2FRAME POINT POLYLINE RAY REGION SEQEND SHAPE SOLID SPLINE TEXT TOLERANCE TRACE VERTEX VIEWPORT XLINE ACAD_PROXY_ENTITY
LINE 5 21 100 AcDbEntity 8 AcDbLine 10 2.0 20 4.0 30 0.0 11 12.0 14.0 31
CIRCLE 5 25 100 AcDbEntity 8 AcDbCircle 10 14.713649 20 10.469058 30 0.0 40 2.598426 ENDSEC
TEXT 5 1F 100 AcDbEntity 8 AcDbText 10 9.894427 20 0.978737 30 0.0 40 0.695922 1 zmienia sie 0 50 2.943398
procedure TForm1.Button1Click(Sender: TObject); var p1, p2, p3 :OleVariant; Mspace, Acad, ent :OleVariant; l_poz:integer; begin p1:= varArrayCreate([0,2], VT_R8); p2:= varArrayCreate([0,2], VT_R8); p3:= varArrayCreate([0,2], VT_R8); // p1[0]:=2.0; p1[1]:=4; p1[2]:=0; p2[0]:=12.0; p2[1]:=14; p2[2]:=0; p3[0]:=7.0; p3[1]:=8; p3[2]:=0; try Acad:=GetActiveOleObject('AutoCAD.Application.16'); except Acad:=CreateOleObject('AutoCAD.Application.16'); end; Acad.Visible:=True; Mspace:=Acad.ActiveDocument.ModelSpace; MSpace.AddLine(varArrayref(p1), varArrayref(p2)).Update; l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz); if ent.layer = Edit1.text then if ent.EntityName = 'AcDbText' then ent.textString:=Edit2.Text; ent.Update; end;//for
procedure TForm1.Button1Click(Sender: TObject); var p1, p2, p3 :OleVariant; Mspace, Acad, ent :OleVariant; l_poz:integer; begin p1:= varArrayCreate([0,2], VT_R8); p2:= varArrayCreate([0,2], VT_R8); p3:= varArrayCreate([0,2], VT_R8); // p1[0]:=2.0; p1[1]:=4; p1[2]:=0; p2[0]:=12.0; p2[1]:=14; p2[2]:=0; p3[0]:=7.0; p3[1]:=8; p3[2]:=0; try Acad:=GetActiveOleObject('AutoCAD.Application.16'); except Acad:=CreateOleObject('AutoCAD.Application.16'); end; Acad.Visible:=True; Mspace:=Acad.ActiveDocument.ModelSpace; MSpace.AddLine(varArrayref(p1), varArrayref(p2)).Update; l_poz := MSpace.Count;
Acad.Visible:=True; Mspace:=Acad.ActiveDocument.ModelSpace; MSpace.AddLine(varArrayref(p1), varArrayref(p2)).Update; l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz); if ent.layer = Edit1.text then if ent.EntityName = 'AcDbText' then begin ent.textString:=Edit2.Text; ent.Update; end; end;//for
procedure TForm1.Button2Click(Sender: TObject); begin Close; end;
Ćwiczenie Napisz program tworzący i przesuwający obiekt typu LINE o zadany wektor Napisz program pobierający tekst z bazy danych i modyfikujący rysunek AutoCADa