📄 unt_readgra.pas
字号:
unit Unt_ReadGra;
interface
uses Unt_CAD_Pro_Tool,QDialogs,SysUtils,QForms,
Variants,Classes,Graphics,DB,windows,forms;
type
TTsN=record //通用工序名称及其类型,如风巷(类型为风巷掘进),机巷(类型为机巷掘进),开切眼(类型为开切眼掘进),回采(类型为回采)
//Ncou:integer;
Type_Id:integer;
CommonTaskName:string;
CommonTaskTypeName:string;
//TsN:array of string;
//TsNT:array of string;
end;
TRead_Graph=class(TObject)
Layers,LineTypes,TextStyles,Fontfiles:TStrings;
StartPoint,EndPoint,CenterPoint:TPoint1; //起点,终点,中心点
ListPoints:TPoints; //连续的点
TCol:integer; //颜色
THandle,TTextStr,TTextSty,TLayer,TLineType:string; //图层、线型
TClosed:boolean; //是否闭合线
TStartAng,TEndAng:double; //起终角度
Rotation,Radius,Width,Height:double; //半径
WidthList,Buglelist:Tlistvalue;
procedure Add_Layer;
procedure Add_TextStyle;
procedure Add_LineType;
procedure Add_Point(p:TPoint1;Swidthval,Ewidthval,Bugleval:double);//向数据库中添加点
procedure Add_Line;
procedure Add_3DPoly;
procedure Add_Spline;
procedure Add_Arc;
procedure Add_Circle;
procedure Add_Text;
procedure Add_Ellipse;
procedure Add_StopLine(Sp_F:integer;IdStr:string);
procedure ReadGraph(GraphName:string);//读图
procedure Deal_Area_lane; //处理采区
procedure EncodeStr(MStr:string;var MName,Mh,MAng:string);
//画图
procedure Get_Point(i:integer;var p:TPoint1);
procedure DrawGraphic(GraphName:string);
private
public
Graphic_Id,PCou,ObjectCount:integer;
Sp_Id,Ep_Id,CenP_Id,SpT_ID,EpT_ID:integer;
IsSimple,ObjId:integer;
Gra_Scale:double;
CommonTask:array of TTsN;
end;
var
Read_Graph:TRead_Graph;
implementation
uses Unt_Data,Hint_Unt,Unt_Gra;
{ TRead_Graph }
procedure TRead_Graph.Add_Layer; //把图层信息加入到数据表ADOT_Layer中去
var PId,i:integer;
Isexist:boolean;
begin
with Frm_Data.ADOT_Layer do
begin
if not active then open;
for i:=0 to Layers.Count-1 do
begin
inc(ObjectCount);
//inc(frm_main.PosId);
//frm_main.SbarFull;
Isexist:=Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,Layers.Strings[i]]),[LocaseInsensitive]);
if Isexist then continue;
PId:=GetId(frm_data.ADOT_Layer,'Layer_Id');
append;
fieldbyname('Layer_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('Layer').AsString:=Layers.Strings[i];
post;
end;
end;
Layers.Free;
end;
procedure TRead_Graph.Add_TextStyle;
var PId,i:integer;
Isexist:boolean;
begin
with frm_data.ADOT_TextT do
begin
if not active then open;
for i:=0 to TextStyles.Count-1 do
begin
inc(ObjectCount);
//inc(frm_main.PosId);
//frm_main.SbarFull;
Isexist:=Locate('Graphic_Id;TextStyle',vararrayof([Graphic_Id,TextStyles.Strings[i]]),[LocaseInsensitive]);
if Isexist then continue;
PId:=GetId(frm_data.ADOT_TextT,'TextS_Id');
append;
fieldbyname('TextS_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('TextStyle').AsString:=TextStyles.strings[i];
fieldbyname('Fontfile').AsString:=Fontfiles.Strings[i];
post;
end;
end;
TextStyles.Free;
Fontfiles.Free;
end;
procedure TRead_Graph.Add_LineType;
var PId,i:integer;
Isexist:boolean;
begin
with frm_data.ADOT_LineT do
begin
if not active then open;
for i:=0 to LineTypes.Count-1 do
begin
inc(ObjectCount);
//inc(frm_main.PosId);
//frm_main.SbarFull;
Isexist:=Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,LineTypes.Strings[i]]),[LocaseInsensitive]);
if Isexist then continue;
PId:=GetId(frm_data.ADOT_LineT,'LineT_Id');
append;
fieldbyname('LineT_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('LineType').AsString:=LineTypes.Strings[i];
post;
end;
end;
LineTypes.Free;
end;
procedure TRead_Graph.Add_3DPoly;
var PId:integer;
begin
with frm_data.ADOT_Pline do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_Pline,'Pline_Id');
append;
fieldbyname('Pline_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('Sp_Id').Asinteger:=Sp_Id;
fieldbyname('Ep_Id').Asinteger:=Ep_Id;
fieldbyname('Color').AsInteger:=TCol;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Close').AsBoolean:=TClosed;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
procedure TRead_Graph.Add_Arc;
var PId:integer;
begin
with frm_data.ADOT_Arc do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_Arc,'Arc_Id');
append;
fieldbyname('Arc_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('CenP_Id').Asinteger:=CenP_Id;
fieldbyname('Radius').AsFloat:=Radius;
fieldbyname('S_Angle').AsFloat:=TStartAng;
fieldbyname('E_Angle').AsFloat:=TEndAng;
fieldbyname('Color').AsInteger:=TCol;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
procedure TRead_Graph.Add_Circle;
var PId:integer;
begin
with frm_data.ADOT_Circle do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_Circle,'Circle_Id');
append;
fieldbyname('Circle_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('CenP_Id').Asinteger:=CenP_Id;
fieldbyname('Radius').AsFloat:=Radius;
fieldbyname('Color').AsInteger:=TCol;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
procedure TRead_Graph.Add_Ellipse;
var PId:integer;
begin
with frm_data.ADOT_Ellipse do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_Ellipse,'Ell_Id');
append;
fieldbyname('Ell_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('CenP_Id').Asinteger:=CenP_Id;
fieldbyname('MayP_Id').Asinteger:=EP_Id;
fieldbyname('RRatio').AsFloat:=Radius;
fieldbyname('Color').AsInteger:=TCol;
fieldbyname('S_Angle').AsFloat:=TStartAng;
fieldbyname('E_Angle').AsFloat:=TEndAng;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
procedure TRead_Graph.Add_Line;
var PId:integer;
begin
with frm_data.ADOT_line do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_line,'Line_Id');
append;
fieldbyname('Line_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('Sp_Id').Asinteger:=Sp_Id;
fieldbyname('Ep_Id').Asinteger:=Ep_Id;
fieldbyname('Color').AsInteger:=TCol;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
procedure TRead_Graph.Add_Point(p:TPoint1;Swidthval,Ewidthval,Bugleval:double);//增加点
var PId:integer;
begin
with frm_data.ADOT_Points do
begin
PId:=GetId(frm_data.ADOT_Points,'Point_Id');
append;
fieldbyname('Point_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('X').AsFloat:=p[0];
fieldbyname('Y').AsFloat:=p[1];
fieldbyname('Z').AsFloat:=p[2];
fieldbyname('Bugle').AsFloat:=Bugleval;
fieldbyname('SWidth').AsFloat:=Swidthval;
fieldbyname('EWidth').AsFloat:=Ewidthval;
post;
end;
end;
procedure TRead_Graph.Add_Spline;
var PId:integer;
begin
with frm_data.ADOT_Spline do
begin
if not active then open;
PId:=GetId(frm_data.ADOT_Spline,'Spline_Id');
append;
fieldbyname('Spline_Id').AsInteger:=PId+1;
fieldbyname('Graphic_Id').AsInteger:=Graphic_Id;
fieldbyname('Sp_Id').Asinteger:=Sp_Id;
fieldbyname('Ep_Id').Asinteger:=Ep_Id;
fieldbyname('SpT_Id').Asinteger:=SpT_Id;
fieldbyname('EpT_Id').Asinteger:=EpT_Id;
fieldbyname('Color').AsInteger:=TCol;
frm_data.ADOT_LineT.Locate('Graphic_Id;LineType',vararrayof([Graphic_Id,TLineType]),[loCaseInsensitive]);
fieldbyname('LineT_Id').AsInteger:=frm_data.ADOT_LineT.fieldbyname('LineT_Id').AsInteger;
frm_data.ADOT_Layer.Locate('Graphic_Id;Layer',vararrayof([Graphic_Id,TLayer]),[loCaseInsensitive]);
fieldbyname('layer_Id').AsInteger:=frm_data.ADOT_Layer.fieldbyname('Layer_Id').AsInteger;
fieldbyname('Close').AsBoolean:=TClosed;
fieldbyname('Handle').AsString:=THandle;
fieldbyname('LW').AsFloat:=0;
post;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -