📄 unt_readgra.pas
字号:
//20:;
21,32:begin //Mtext,text
RS_Text(CenterPoint,TTextStr,Height,Rotation,Tcol,TTextSty,TLayer,TLineType,THandle);
Isexist:=frm_data.ADOT_Text.Locate('Graphic_Id;Handle',vararrayof([Graphic_Id,THandle]),[LocaseInsensitive]);
if Isexist then continue;
Add_Point(CenterPoint,0,0,0);
CenP_Id:=frm_data.ADOT_Points.fieldbyname('Point_Id').AsInteger;
Add_Text;
end;
//22:; 23:;
//25:; 26:; 27:; 28:; 29:; 30:;
31:begin //Spline
RS_Spline(PCou,ListPoints,StartPoint,EndPoint,TCol,TClosed,TLayer,TLineType,THandle);
Isexist:=frm_data.ADOT_Spline.Locate('Graphic_Id;Handle',vararrayof([Graphic_Id,THandle]),[LocaseInsensitive]);
if Isexist then continue;
for Id:=0 to PCou-1 do
begin
Add_Point(ListPoints[ID],0,0,0);
if Id=0 then Sp_Id:=frm_data.ADOT_Points.fieldbyname('Point_Id').AsInteger;
if Id=PCou-1 then Ep_Id:=frm_data.ADOT_Points.fieldbyname('Point_Id').AsInteger;
end;
Add_Point(StartPoint,0,0,0);SpT_Id:=frm_data.ADOT_Points.fieldbyname('Point_Id').AsInteger;
Add_Point(EndPoint,0,0,0); EpT_Id:=frm_data.ADOT_Points.fieldbyname('Point_Id').AsInteger;
Add_Spline;
end;
//33:;34; 35:; 36:; 37:; 38:;
//40:Mline
end;//case
end;
AcadApp.visible:=true;
with frm_data.ADOT_Graph do
begin
close;open;
locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
edit;
fieldbyname('Entity').AsInteger:=ObjectCount;
post;
end;
except
showmessage('读取图形错误,请按照绘图要求,修改图纸中的错误!');
frm_data.ADOT_Graph.Delete;
frm_data.connectdb;
AcadApp.visible:=true;
end;
Free;
end;
//frm_main.sbar.Panels[0].Text:='';
//Frm_Gra.Refresh;
Hint_Frm.Close;
Hint_Frm.Label1.Caption:='读取完毕!';
Hint_Frm.Button1.Enabled:=true;
Frm_Gra.Refresh;
Hint_Frm.Refresh;
Hint_Frm.Timer1.Interval:=6000;
Hint_Frm.Timer1.Enabled:=true;
Hint_Frm.ShowModal;
end;
procedure TRead_Graph.Get_Point(i: integer; var p: TPoint1);
begin
with frm_data.ADOT_Points do
begin
Locate('Point_Id',i,[loCaseInsensitive]);
p[0]:=fieldbyname('X').AsFloat;
p[1]:=fieldbyname('Y').AsFloat;
p[2]:=fieldbyname('Z').AsFloat;
end;
end;
procedure TRead_Graph.DrawGraphic(GraphName: string);
var i,Id:integer;
Is3d:Boolean;
begin
//frm_main.sbar.Panels[0].Text:='正在绘制图纸........';
Graphic_Id:=frm_data.ADOT_Graph.fieldbyname('Graphic_Id').AsInteger;
i:=frm_data.ADOT_Graph.fieldbyname('Entity').AsInteger-4;
//frm_main.Step:=frm_main.Sbarlen/i;
//frm_main.PosId:=0;
//frm_main.col:=clMedGray;
ACAD:=TSetCADData.Create;
if ACAD.Link_CAD then exit;
ACAD.AcadApp.visible:=false;
try
ACAD.Add_Doc(GraphName);
with frm_data.ADOT_Layer do
begin
locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
next;
Layers:=TStringlist.Create;
Layers.Clear;
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
layers.Add(fieldbyname('Layer').AsString);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
ACAd.RS_Layer(Layers);
Layers.Free;
end;
with frm_data.ADOT_TextT do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
TextStyles:=TStringlist.Create; TextStyles.Clear;
Fontfiles:=TStringlist.Create; Fontfiles.Clear;
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
TextStyles.Add(fieldbyname('TextStyle').AsString);
Fontfiles.Add(fieldbyname('Fontfile').AsString);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
ACAD.RS_TextStyle(TextStyles,Fontfiles);
TextStyles.Free;
Fontfiles.Free;
end;
with frm_data.ADOT_LineT do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
moveby(3);
LineTypes:=Tstringlist.Create;LineTypes.Clear;
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
LineTypes.Add(fieldbyname('LineType').AsString);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
ACAD.RS_linetype(LineTypes);
LineTypes.Free;
end;
with frm_data.ADOT_line do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
i:=fieldbyname('Sp_Id').AsInteger;
Get_Point(i,StartPoint);
i:=fieldbyname('Ep_Id').AsInteger;
Get_Point(i,EndPoint);
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitive]);
TLayer:=frm_data.ADOT_Layer.fieldbyname('Layer').AsString;
ACAD.RS_line(StartPoint,EndPoint,TCol,TLayer,TLineType,THandle);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
end;
with frm_data.ADOT_Pline do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
Is3D:=true;
Sp_Id:=fieldbyname('Sp_Id').AsInteger;
Ep_Id:=fieldbyname('Ep_Id').AsInteger;
PCou:=Ep_Id-Sp_Id+1;
Setlength(ListPoints,PCou);
Setlength(Widthlist,2*PCou);
Setlength(Buglelist,PCou);
for i:=0 to PCou-1 do
begin
Get_Point(Sp_Id+i,ListPoints[i]);
Widthlist[2*i]:=frm_data.ADOT_Points.fieldbyname('SWidth').AsFloat;
Widthlist[2*i+1]:=frm_data.ADOT_Points.fieldbyname('EWidth').AsFloat;
Buglelist[i]:=frm_data.ADOT_Points.fieldbyname('Bugle').AsFloat;
if (Abs(Buglelist[i])>1e-3)or(Widthlist[2*i]>0)or(Widthlist[2*i+1]>0)
then Is3D:=false;
end;
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitive]);
TLayer:=frm_data.ADOT_Layer.fieldbyname('Layer').AsString;
TClosed:=fieldbyname('Close').AsBoolean;
if Is3D
then ACAD.RS_3DPoly(PCou,ListPoints,Widthlist,BugleList,TCol,TClosed,TLayer,TLineType,THandle)
else ACAD.RS_Pline(PCou,ListPoints,Widthlist,BugleList,TCol,TClosed,TLayer,TLineType,THandle);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
end;
with frm_data.ADOT_Spline do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
Sp_Id:=fieldbyname('Sp_Id').AsInteger;
Ep_Id:=fieldbyname('Ep_Id').AsInteger;
PCou:=Ep_Id-Sp_Id+1; Setlength(ListPoints,PCou);
for i:=0 to PCou-1 do Get_Point(Sp_Id+i,ListPoints[i]);
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('SpT_Id').AsInteger; Get_Point(i,StartPoint);
i:=fieldbyname('EpT_Id').AsInteger; Get_Point(i,EndPoint);
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitive]);
TLayer:=frm_data.ADOT_Layer.fieldbyname('Layer').AsString;
TClosed:=fieldbyname('Close').AsBoolean;
ACAD.RS_Spline(PCou,ListPoints,StartPoint,EndPoint,TCol,TClosed,TLayer,TLineType,THandle);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
end;
with frm_data.ADOT_Arc do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
i:=fieldbyname('CenP_Id').asinteger;
Get_Point(i,CenterPoint);
TStartAng:=fieldbyname('S_Angle').AsFloat;
TEndAng:=fieldbyname('E_Angle').AsFloat;
Radius:=fieldbyname('Radius').AsFloat;
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitive]);
TLayer:=frm_data.ADOT_Layer.fieldbyname('Layer').AsString;
ACAD.RS_Arc(CenterPoint,TCol,Radius,TStartAng,TEndAng,TLayer,TLineType,THandle);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
end;
with frm_data.ADOT_Ellipse do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
i:=fieldbyname('CenP_Id').asinteger;
Get_Point(i,CenterPoint);
i:=fieldbyname('MayP_Id').asinteger;
Get_Point(i,EndPoint);
Radius:=fieldbyname('RRatio').AsFloat;
TStartAng:=fieldbyname('S_Angle').AsFloat;
TEndAng:=fieldbyname('E_Angle').AsFloat;
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitive]);
TLayer:=frm_data.ADOT_Layer.fieldbyname('Layer').AsString;
ACAD.RS_Ellipse(CenterPoint,EndPoint,TCol,Radius,TStartAng,TEndAng,TLayer,TLineType,THandle);
next;
Id:=fieldbyname('Graphic_Id').AsInteger;
//inc(frm_main.PosId);
//frm_main.SbarFull;
if Eof then break;
end;
end;
with frm_data.ADOT_Circle do
begin
Locate('Graphic_Id',Graphic_Id,[loCaseInsensitive]);
Id:=fieldbyname('Graphic_Id').AsInteger;
while Id=Graphic_Id do
begin
i:=fieldbyname('CenP_Id').asinteger;
Get_Point(i,CenterPoint);
Radius:=fieldbyname('Radius').AsFloat;
TCol:=fieldbyname('Color').AsInteger;
i:=fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_LineT.Locate('LineT_Id',i,[loCaseInsensitive]);
TLineType:=frm_data.ADOT_LineT.fieldbyname('LineType').AsString;
i:=fieldbyname('Layer_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Layer_Id',i,[loCaseInsensitiv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -