Client/Desktop/KMBIM3.0/23.11.03/Cmd/Sprinkler/SprinklerSprayRemove.cs

92 lines
2.9 KiB
C#

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using System.Diagnostics;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
using Autodesk.Revit.Creation;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.DB.Structure;
using System.Drawing;
using System.IO;
using System.Windows;
//using System.Windows.Media; // WindowsBase
//using System.Windows.Media.Imaging; // PresentationCore
using Size = System.Drawing.Size;
using KMBIM.Revit.Tools;
namespace KMBIM
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
public class SprinklerSprayRemove : IExternalCommand
{
UIApplication m_application;
Autodesk.Revit.Creation.ItemFactoryBase m_CreationBase;
UIDocument m_document;
Autodesk.Revit.DB.Document doc;
public const double PI = 3.14159265358;
public Autodesk.Revit.UI.ExternalCommandData m_revit;
public double ksv = 7.545932; //2300을 pit로 변환해놓은값
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref string message, ElementSet elements)
{
if (!WorkMain.GetInstance().IsValid) return Autodesk.Revit.UI.Result.Succeeded;
m_application = revit.Application;
m_document = m_application.ActiveUIDocument;
if (m_document.Document.IsFamilyDocument)
m_CreationBase = m_document.Document.FamilyCreate;
else
m_CreationBase = m_document.Document.Create;
try
{
m_revit = revit;
//살수반경 표시 제거
RemoveSpray();
}
catch (Exception)
{
//message = e.Message;
return Autodesk.Revit.UI.Result.Failed;
}
return Autodesk.Revit.UI.Result.Succeeded;
}
private void RemoveSpray()
{
UIApplication uiapp = m_revit.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
doc = uidoc.Document;
IList<Element> ElementList = m_revit.Application.ActiveUIDocument.Selection.PickElementsByRectangle();
using(Transaction trans =new Transaction(doc))
{
trans.Start("Delete");
for (int i = 0; i < ElementList.Count; i++)
{
if (ElementList[i].Name == "SP_Dia") // 파일명이 SP_Dia 일때만 삭제한다.
{
FamilyInstance fi = ElementList[i] as FamilyInstance;
m_revit.Application.ActiveUIDocument.Document.Delete(fi.Id);
}
}
trans.Commit();
}
}
}
}