CreateBallFlagCommand.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using Autodesk.Revit.Attributes;
  9. using Autodesk.Revit.DB;
  10. using Autodesk.Revit.UI;
  11. using FWindSoft.Revit;
  12. namespace LRH.Tool
  13. {
  14. [Transaction(TransactionMode.Manual)]
  15. [Regeneration(RegenerationOption.Manual)]
  16. public class CreateBallFlagCommand: ExternalCommand
  17. {
  18. public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  19. {
  20. SelectedChangedCommand command = new SelectedChangedCommand();
  21. command.Register(ExternalApplication.CurrentApp);
  22. command.Execute += Command_Execute;
  23. /*
  24. * 使用步骤:1、application中注册
  25. * 2、命令中打开
  26. */
  27. var pane = RevitCustomDockablePanels.GetDockablePane(commandData.Application, RevitCustomDockablePanels.Default);
  28. pane.Show();
  29. using (Transaction tran = new Transaction(RevitCore.Doc, "标记"))
  30. {
  31. try
  32. {
  33. tran.Start();
  34. ElementId id = new ElementId(312320);
  35. RevitCore.Doc.SetDefaultFamilyTypeId(new ElementId(BuiltInCategory.OST_StructuralColumnTags), id);
  36. tran.Commit();
  37. }
  38. catch (Exception ex)
  39. {
  40. MessageBox.Show(ex.Message.ToString());
  41. tran.RollBack();
  42. }
  43. }
  44. //var doc = RevitCore.Doc;
  45. //using (Transaction tran = new Transaction(doc, "标记"))
  46. //{
  47. // try
  48. // {
  49. // tran.Start();
  50. // var s = new XYZ(163700.147789060/304.8, 49780.037928369/304.8, 4500.000000000/304.8);
  51. // DirectShape ds = DirectShape.CreateElement(doc, new ElementId(BuiltInCategory.OST_GenericModel));
  52. // var solid = SolidUtil.CreateSphereAtPoint(s, 1);
  53. // ds.AppendShape(new List<GeometryObject>() {solid});
  54. // SolidUtil.SetColor(ds, new Color(255, 0, 0));
  55. // tran.Commit();
  56. // RevitCore.UIApp.SetShowElements(new List<Element>() { ds });
  57. // }
  58. // catch (Exception ex)
  59. // {
  60. // MessageBox.Show(ex.Message.ToString());
  61. // tran.RollBack();
  62. // }
  63. //}
  64. return Result.Succeeded;
  65. }
  66. private void Command_Execute(object sender, UIApplication e)
  67. {
  68. DockableWindow win;
  69. if (RevitCustomDockablePanels.TryGetCoustomDockWindow(RevitCustomDockablePanels.Default, out win))
  70. {
  71. DockablePane pane = RevitCustomDockablePanels.GetDockablePane(e, win.PaneId);
  72. if (pane == null || !pane.IsShown())
  73. return;
  74. var ids = e.ActiveUIDocument.Selection.GetElementIds();
  75. if (ids.Any())
  76. {
  77. win.Content = ids.FirstOrDefault().ToString();
  78. }
  79. }
  80. }
  81. }
  82. }