管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-03-14 4e2e497696cc0e7866bab056cd056d509b7d6c6c
1
已修改4个文件
127 ■■■■■ 文件已修改
ExportMap/Controllers/ConvertController.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ConvertUtils.cs 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/XYZUtils.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Controllers/ConvertController.cs
@@ -12,35 +12,23 @@
    public class ConvertController : ApiController
    {
        [HttpPost]
        public ResponseMsg<int> ToTileset([FromBody]ExportArgs args)
        public ResponseMsg<int> ToTileset([FromBody]XYZArgs args)
        {
            try
            {
                if (null == args || null == args.ids || args.ids.Count == 0)
                {
                    return ResponseMsg<int>.fail("请输入元数据id");
                }
                int count = ConvertUtils.Convert(args.ids);
                return ResponseMsg<int>.success("成功", 1);
                return ResponseMsg<int>.success("成功", count);
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.StackTrace);
                return ResponseMsg<int>.fail(ex.Message);
            }
        }
        [HttpGet]
        public ResponseMsg<string> Test()
        {
            string modelFile = @"E:\soft\Navisworks Manage 2020\Data\jz.rvt";
            string outPath = @"D:\xyz\3dtiles\out";
            string rs = ConvertUtils.ExecNavisworks(modelFile, outPath);
            if (string.IsNullOrEmpty(rs))
            {
                return ResponseMsg<string>.success("成功", "");
            }
            else
            {
                return ResponseMsg<string>.fail(rs);
            }
        }
    }
ExportMap/Web.config
@@ -3,6 +3,8 @@
  <appSettings>
    <!-- 廊坊服务 -->
    <add key="lfServer" value="http://127.0.0.1:12316/server"/>
    <!-- 上传目录 -->
    <add key="uploadFolder" value="D:\LF\upload"/>
    <!-- 下载目录 -->
    <add key="downloadFolder" value="D:\LF\download"/>
    <!-- 发布Mpt目录 -->
ExportMap/cs/ConvertUtils.cs
@@ -1,6 +1,8 @@
using System;
using ExportMap.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
@@ -11,31 +13,78 @@
        /// <summary>
        /// 工作配置
        /// </summary>
        public static string jobConfig = "{ \"format\": \"3dtiles\", \"mode\": 0, \"outputPath\": \"{0}\", \"outputOptions\": null, \"levelOfDetail\": -1, \"levelOfDetailText\": \"Auto\", \"georeferenced\": null }";
        public static string JobConfig = "{ \"format\": \"3dtiles\", \"mode\": 0, \"outputPath\": \"{0}\", \"outputOptions\": null, \"levelOfDetail\": -1, \"levelOfDetailText\": \"Auto\", \"georeferenced\": null }";
        /// <summary>
        /// Roamer.exe
        /// </summary>
        public static string RoamerExe = "\"C:\\Program Files\\Autodesk\\Navisworks Manage 2020\\Roamer.exe\"";
        /// <summary>
        /// 模型转换
        /// </summary>
        public static int Convert(List<int> ids)
        {
            int count = 0;
            string uploadFolder = Tool.GetSetting("uploadFolder");
            string tilesFolder = Path.Combine(Tool.GetSetting("lfData"), "3d\\3dtiles");
            List<SysMeta> list = XYZUtils.selectMetas(ids, "type in ('ifc', 'fbx', 'rvt')");
            foreach (SysMeta meta in list)
            {
                try
                {
                    string modelFile = Path.Combine(uploadFolder, meta.path);
                    if (!File.Exists(modelFile))
                    {
                        continue;
                    }
                    string configFile = Path.Combine(Tool.BaseDir, ExportUtil.DateStr + ".json");
                    string outPath = Path.Combine(tilesFolder, meta.type, meta.id.ToString());
                    if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath);
                    WriteText(configFile, string.Format(JobConfig, outPath));
                    ExecNavisworks(modelFile, configFile);
                    count++;
                }
                catch (Exception ex)
                {
                    LogOut.Error(ex.StackTrace);
                }
            }
            return count;
        }
        /// <summary>
        /// 运行Navisworks
        /// </summary>
        public static string ExecNavisworks(string modelFile, string outPath)
        {
            try
            {
                string exe = @"C:\Program Files\Autodesk\Navisworks Manage 2020\Roamer.exe";
                string cmd = string.Format("\"{0}\" -licensing AdLM -OpenFile \"{1}\" -ExecuteAddInPlugin SmartEarth \"{2}\" -NoGui -NoCache -Exit", exe, modelFile, outPath);
            string args = string.Format("-licensing AdLM -OpenFile \"{0}\" -ExecuteAddInPlugin SmartEarth \"{1}\" -NoGui -NoCache -Exit", modelFile, outPath);
                Process p = new Process();
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.ErrorDialog = true;
                p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                p.StartInfo.RedirectStandardError = false;
                p.StartInfo.FileName = exe;
                p.StartInfo.Arguments = cmd;
                p.StartInfo.CreateNoWindow = true;
                p.Start();
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.ErrorDialog = true;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.RedirectStandardError = false;
            p.StartInfo.FileName = RoamerExe;
            p.StartInfo.Arguments = args;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
                return string.Empty;
            }
            catch(Exception ex)
            {
                return ex.Message;
            }
            return string.Empty;
        }
        /// <summary>
        /// 写文本文件
        /// </summary>
        private static void WriteText(string file, string str)
        {
            File.WriteAllText(file, str);
        }
    }
}
ExportMap/cs/XYZUtils.cs
@@ -62,7 +62,7 @@
        /// <summary>
        /// 查询元数据
        /// </summary>
        private static List<SysMeta> selectMetas(string dircode)
        public static List<SysMeta> selectMetas(string dircode)
        {
            string sql = string.Format("select * from lf.sys_meta where dircode like '{0}%'", dircode);
@@ -75,15 +75,13 @@
        /// <summary>
        /// 查询元数据
        /// </summary>
        private static List<SysMeta> selectMetas(List<int> ids)
        public static List<SysMeta> selectMetas(List<int> ids, string types = "")
        {
            string sql = string.Format("select * from lf.sys_meta where id in ({0})", string.Join(",", ids));
            string sql = string.Format("select * from lf.sys_meta where id in ({0}) {1} order by id", string.Join(",", ids), types);
            DataTable dt = Tool.DBHelper.GetDataTable(sql);
            List<SysMeta> list = ModelHandler.FillModel<SysMeta>(dt);
            return list;
        }
    }
}