⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unt_readgra.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
           //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 + -