FamilyManagerExtension.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Autodesk.Revit.DB;
  2. using FWindSoft.Revit.Extension;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace FWindSoft.Revit.FamilyManager
  10. {
  11. public static class FamilyManagerExtension
  12. {
  13. #region 族加载
  14. /// <summary>
  15. /// 获取项目中的族
  16. /// </summary>
  17. /// <param name="doc"></param>
  18. /// <returns></returns>
  19. public static List<Family> GetFamilys(this Document doc)
  20. {
  21. return doc.GetElements<Family>();
  22. }
  23. /// <summary>
  24. /// 加载族文件ljy
  25. /// </summary>
  26. /// <param name="doc"></param>
  27. /// <param name="familyFile"></param>
  28. /// <returns></returns>
  29. public static Family LoadFamilyT(this Document doc, string familyFile)
  30. {
  31. Family family = null;
  32. doc.LoadFamily(familyFile, new FamilyLoadOptions(), out family);
  33. return family;
  34. }
  35. /// <summary>
  36. /// 加载族文件ljy
  37. /// </summary>
  38. /// <param name="doc"></param>
  39. /// <param name="familyFile"></param>
  40. /// <param name="bic"></param>
  41. /// <returns></returns>
  42. public static Family LoadFamilyT(this Document doc, string familyFile, string familyName)
  43. {
  44. var strFamilyName = string.IsNullOrWhiteSpace(familyName)?Path.GetFileNameWithoutExtension(familyFile):familyName;
  45. Family family = doc.FindFamily(strFamilyName);
  46. if (family == null)
  47. {
  48. family = doc.LoadFamilyT(familyFile);
  49. }
  50. return family;
  51. }
  52. /// <summary>
  53. /// 加载制定文件的族,加载之前判断族名称是否存在
  54. /// </summary>
  55. /// <param name="doc"></param>
  56. /// <param name="familyFile"></param>
  57. /// <returns></returns>
  58. public static Family LoadFamilyCheckName(this Document doc, string familyFile)
  59. {
  60. return doc.LoadFamilyT(familyFile, null);
  61. }
  62. public static Family FindFamily(this Document doc, string familyName)
  63. {
  64. Family family = null;
  65. List<Family> listFamily = doc.GetFamilys();
  66. foreach (var f in listFamily)
  67. {
  68. if (f.Name == familyName)
  69. {
  70. family = f;
  71. break;
  72. }
  73. }
  74. return family;
  75. }
  76. #endregion
  77. /// <summary>
  78. /// 获取指定文件的默认族类型
  79. /// </summary>
  80. /// <param name="doc"></param>
  81. /// <param name="familyFile"></param>
  82. /// <returns></returns>
  83. public static FamilySymbol LoadSysmbol(this Document doc,string familyFile)
  84. {
  85. var family = doc.LoadFamilyCheckName(familyFile);
  86. if (family == null)
  87. return null;
  88. return family.GetFamilySymbol();
  89. }
  90. }
  91. }