예제 #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);
 }
예제 #2
0
        /// <summary>
        /// 在指定路径创建一个dwg文件。并返回DWGHelper
        /// </summary>
        /// <param name="dwgPath"></param>
        /// <returns></returns>
        static public DWGHelper CreateDWGHelper(string dwgPath, Enum.DwgVersion ver = Enum.DwgVersion.AC1024)
        {
            DWGHelper helper = null;

            if (dwgPath.ToLower().EndsWith(".dwg"))
            {
                if (File.Exists(dwgPath))
                {
                    throw new System.Exception("文件已存在!");
                }
                else
                {
                    helper = new DWGHelper(dwgPath);
                    helper.SaveAs(dwgPath, (DwgVersion)ver);
                }
            }
            else
            {
                throw new System.Exception("文件格式错误,只支持dwg格式的文件!");
            }
            return(helper);
        }