Exemplo n.º 1
0
 /// <summary>
 /// 对dwg中的实体进行坐标转换。注意:此方法会导致Database无法被再次Save();
 /// </summary>
 /// <param name="TransFunc">坐标转换函数</param>
 /// <param name="OutputPath">转换后实体导出路径,为空则保留在原文件</param>
 /// <param name="ErrorPath">错误实体保存路径,为空则不导出错误实体</param>
 /// <returns></returns>
 public bool Transform(TransformHelper.TransformDelegate TransFunc, string OutputPath = "", string ErrorPath = "")
 {
     LayerMgr.SaveLayerStateSnapshot();     //保存图层状态
     LayerMgr.ActivationLayer();            //激活所有图层
     TransformHelper.BooleanStatis statis = TransformHelper.TransformDWG(this, TransFunc);
     LayerMgr.RecoveryLayerStateSnapshot(); //将图层恢复到激活前的状态
     //保存转换后的实体
     if (string.IsNullOrWhiteSpace(OutputPath))
     {
         //Save();
     }
     else
     {
         SaveAs(OutputPath, database.OriginalFileVersion);
     }
     //导出错误实体
     if (!string.IsNullOrWhiteSpace(ErrorPath) && statis.FalseCount > 0)
     {
         DWGHelper successHelper = string.IsNullOrWhiteSpace(OutputPath)? this: new DWGHelper(OutputPath);
         File.Copy(string.IsNullOrWhiteSpace(OutputPath) ? this.dwgPath : OutputPath, ErrorPath, true);//复制文件
         DWGHelper errorHelper = new DWGHelper(ErrorPath);
         successHelper.BlockMgr.ModelSpace.DeleteEntityByXData(TransformHelper.TransformStatus, "False");
         successHelper.Save();
         errorHelper.BlockMgr.ModelSpace.DeleteEntityByXData(TransformHelper.TransformStatus, "True");
         errorHelper.Save();
     }
     statis.Log();
     return(statis.FalseCount == 0);
 }