CommonTool.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /* ==============================================================================
  2. * 功能描述:CommonTool
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/3/13 17:26:29
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using System.Linq;
  10. using Autodesk.Revit.DB;
  11. using Newtonsoft.Json.Linq;
  12. using SAGA.DotNetUtils;
  13. using SAGA.DotNetUtils.Extend;
  14. using SAGA.DotNetUtils.WPF.UserControl.ComboboxTreeView;
  15. using SAGA.MBI.CmbData;
  16. using SAGA.MBI.DataArrange;
  17. using SAGA.MBI.FileStream;
  18. using SAGA.MBI.Model;
  19. namespace SAGA.MBI.Common
  20. {
  21. /// <summary>
  22. /// CommonTool
  23. /// </summary>
  24. public class CommonTool
  25. {
  26. /// <summary>
  27. /// 读取工作区
  28. /// </summary>
  29. /// <param name="projectId"></param>
  30. public static string ReadWorkPath(string projectId)
  31. {
  32. if (projectId == null) return null;
  33. var path = ProjectDirOperate.GetProjectDir(projectId);
  34. return path;
  35. }
  36. /// <summary>
  37. /// 设置按钮图片
  38. /// </summary>
  39. /// <param name="path"></param>
  40. public static string GetBtnImagePath(string path)
  41. {
  42. var basePath = System.IO.Path.Combine(MBIConst.MBIImagePath);
  43. string imageName = "folder.png";
  44. if (Directory.Exists(path))
  45. {
  46. imageName = "folder_go.png";
  47. }
  48. var OFImage = System.IO.Path.Combine(basePath, imageName);
  49. return OFImage;
  50. }
  51. /// <summary>
  52. /// 获取楼层顺序号
  53. /// </summary>
  54. /// <param name="cur">当前顺序号</param>
  55. /// <param name="seed">上面增加(1)下面增加是(-1)</param>
  56. /// <returns></returns>
  57. public static int GetNewSequence(int cur, int seed)
  58. {
  59. if (seed == -1)
  60. {
  61. cur = cur < 0 ? cur + seed : cur;
  62. }
  63. else
  64. {
  65. cur = cur < 0 ? cur : cur + seed;
  66. }
  67. return cur;
  68. }
  69. /// <summary>
  70. /// 获取楼层顺序号
  71. /// </summary>
  72. /// <param name="cur">当前顺序号</param>
  73. /// <param name="seed">上面增加(1)下面增加是(-1)</param>
  74. /// <returns></returns>
  75. public static int GetNextSequence(int cur)
  76. {
  77. cur = cur > 0 ? cur + 1 : cur - 1;
  78. return cur;
  79. }
  80. /// <summary>
  81. /// 由楼层顺序号获取生成revit文件的文件名称;
  82. /// 默认为B1,B2,F1,F2...
  83. /// </summary>
  84. /// <param name="sequence"></param>
  85. /// <returns></returns>
  86. public static string GetFloorRevitFileName(int sequence)
  87. {
  88. if (sequence > 0)
  89. return "F" + sequence;
  90. else
  91. {
  92. return "B" + Math.Abs(sequence);
  93. }
  94. }
  95. public static JArray GetPropertyJArray(string value)
  96. {
  97. JArray jArray = new JArray();
  98. JObject valueJObject = new JObject();
  99. valueJObject.Add("value", value);
  100. jArray.Add(valueJObject);
  101. return jArray;
  102. }
  103. /// <summary>
  104. /// 获取信息点更新是传递的数据结构
  105. /// </summary>
  106. /// <param name="code"></param>
  107. /// <param name="value"></param>
  108. /// <returns></returns>
  109. public static JObject GetPropertyJObject(string code,string value)
  110. {
  111. #region 构建array
  112. JArray jArray = new JArray();
  113. JObject valueJObject = new JObject();
  114. valueJObject.Add("value", value);
  115. jArray.Add(valueJObject);
  116. #endregion
  117. JObject jObject = new JObject();
  118. jObject.Add(code, jArray);
  119. return jObject;
  120. }
  121. public static JArray GetPropertyJArray(string time, string value)
  122. {
  123. JArray jArray = new JArray();
  124. JObject valueJObject = new JObject();
  125. valueJObject.Add("time", time);
  126. valueJObject.Add("value", value);
  127. jArray.Add(valueJObject);
  128. return jArray;
  129. }
  130. public static JArray GetPropertyJArray(JToken value)
  131. {
  132. JArray jArray = new JArray();
  133. JObject valueJObject = new JObject();
  134. valueJObject.Add("value", value);
  135. jArray.Add(valueJObject);
  136. return jArray;
  137. }
  138. /// <summary>
  139. /// 由文件的全路径获取云端文件名
  140. /// </summary>
  141. /// <param name="path"></param>
  142. /// <returns></returns>
  143. public static string GetCloudRevitName(string path)
  144. {
  145. var strs = path.Split('\\', ':');
  146. List<string> last3Strs = new List<string>();
  147. for (int i = strs.Length - 3; i < strs.Length; i++)
  148. {
  149. last3Strs.Add(strs[i]);
  150. }
  151. string fileName = string.Join("_", last3Strs.ToArray());
  152. return fileName;
  153. }
  154. /// <summary>
  155. /// 将点按 “;”进行分组
  156. /// </summary>
  157. /// <param name="xyzs"></param>
  158. /// <returns></returns>
  159. public static string ConvertSpaceEdgesToStr(List<XYZ> xyzs)
  160. {
  161. var strs = xyzs.Select(t => t.X + "," + t.Y);
  162. var str = string.Join(";", strs.ToArray());
  163. return str;
  164. }
  165. /// <summary>
  166. /// 获取设备的种族类型
  167. /// </summary>
  168. /// <returns></returns>
  169. public static MEquipmentFamily GetEquipFamily(string familyCode)
  170. {
  171. var codeTb = MBIControl.EquipmentFamilys.FirstOrDefault(t => t.EquipmentTypes.FirstOrDefault(tt => tt.Code == familyCode) != null);
  172. return (codeTb);
  173. }
  174. /// <summary>
  175. /// 创建个资产id
  176. /// id为Pe+uuid(去掉横线)
  177. /// </summary>
  178. /// <returns></returns>
  179. public static string CreateNewFmId()
  180. {
  181. string id = System.Guid.NewGuid().ToString("N");
  182. return "Pe" + id;
  183. }
  184. /// <summary>
  185. /// 获取BIMId
  186. /// </summary>
  187. /// <param name="docName"></param>
  188. /// <param name="id"></param>
  189. /// <returns></returns>
  190. public static string GetCloudBIMId(string docName, string id)
  191. {
  192. return $"{docName}:{id}";
  193. }
  194. /// <summary>
  195. /// 判断是否为夹层
  196. /// 夹层FloorType 为4
  197. /// </summary>
  198. /// <param name="id"></param>
  199. /// <returns></returns>
  200. public static bool IsFloorMezzanine(string id)
  201. {
  202. bool ismezzanine = false;
  203. string mezzaninestr = "4";
  204. TreeNodeItem tree = DalModeFileManange.GetFloorTreeById(id);
  205. if (tree != null)
  206. {
  207. MFileBase floorBase = tree.Item;
  208. if (floorBase is MFloor floor)
  209. {
  210. ismezzanine = floor.FloorType == mezzaninestr;
  211. }
  212. }
  213. return ismezzanine;
  214. }
  215. /// <summary>
  216. /// 由楼层id获取楼层的序列号
  217. /// </summary>
  218. /// <param name="id"></param>
  219. /// <returns></returns>
  220. public static int GetFloorSequenceByFloorId(string id)
  221. {
  222. int sequence = -100;
  223. MFloor floor = DalProjectTree.GetFloorByFloorId(id);
  224. if (floor != null)
  225. sequence = floor.Sequence;
  226. return sequence;
  227. }
  228. /// <summary>
  229. /// 由视频预览图--获取视频的名称
  230. /// </summary>
  231. /// <param name="name"></param>
  232. /// <returns></returns>
  233. public static string GetVideoKeyByImageKey(string name)
  234. {
  235. string videoSuffix = ".mp4";
  236. return name.GetAppointSuffixPath(videoSuffix);
  237. }
  238. /// <summary>
  239. /// 判断一个图片是否为视频缩略图
  240. /// </summary>
  241. /// <param name="mode"></param>
  242. /// <returns></returns>
  243. public static bool IsVideoImage(MServiceAttachment mode)
  244. {
  245. return mode.ImageType == ServiceImageType.image_video;
  246. }
  247. }
  248. }