Delphi版 MapControl加载DWG文件

function LoadDwgFile(mapControl: TMapControl; dwgFilePath: string; dwgFileName: string): Boolean;
var
   qCadWorkFactory: IWorkspaceFactory;
   qWorkSpace: IFeatureWorkspace;
   qFeatDataset: IFeatureDataset;
   qFeatClassContainer: IFeatureClassContainer; //要素类 容器
   qFeatClass: IFeatureClass;
   qfeatLayer: IFeatureLayer;
   I        : Integer;
begin
   try
      //创建 CAD 工作工厂
      qCadWorkFactory := CoCadWorkspaceFactory.Create as IWorkspaceFactory;
      if qCadWorkFactory.IsWorkspace(dwgFilePath) then
      begin
         qWorkSpace := qCadWorkFactory.OpenFromFile(dwgFilePath, 0) as IFeatureWorkspace;
         qFeatDataset := qWorkSpace.OpenFeatureDataset(dwgFileName);

         qFeatClassContainer := qFeatDataset as IFeatureClassContainer;
         if (qFeatClassContainer = nil) or (qFeatClassContainer.ClassCount = 0) then
         begin
            Result := False;
            Exit;
         end;

         for I := 0 to qFeatClassContainer.ClassCount - 1 do
         begin
            qFeatClass := qFeatClassContainer.Class_[i];
            if qFeatClass.FeatureType = esriFTCoverageAnnotation then
            begin
               qfeatLayer := CoCadAnnotationLayer.Create as IFeatureLayer;
            end
            else
            begin
               qfeatLayer := CoFeatureLayer.Create as IFeatureLayer;
            end;

            qfeatLayer.Name := qFeatClass.AliasName;
            qfeatLayer.FeatureClass := qFeatClass;
            mapControl.AddLayer(qfeatLayer, mapControl.LayerCount);
            mapControl.ActiveView.Refresh;
         end;
      end
      else
      begin
         Result := False;
         Exit;
      end;
   except
      Result := False;
   end;
   Result := True;
end;
posted on 2009-03-07 00:16  知真道  阅读(1147)  评论(1编辑  收藏  举报