[Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class CmdSnoopModScopePickSurface : IExternalCommand { public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elems) { Result result; try { Snoop.CollectorExts.CollectorExt.m_app = cmdData.Application; Snoop.CollectorExts.CollectorExt.m_activeDoc = cmdData.Application.ActiveUIDocument.Document; Reference refElem = null; try { refElem = cmdData.Application.ActiveUIDocument .Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Face); } catch { return Result.Succeeded; } //GeometryObject geoObject = cmdData.Application.ActiveUIDocument.Document.GetElement(refElem) // .GetGeometryObjectFromReference(refElem); Snoop.Forms.Objects form = new Snoop.Forms.Objects(refElem); ActiveDoc.UIApp = cmdData.Application; form.ShowDialog(); result = Result.Succeeded; } catch (System.Exception e) { msg = e.Message; result = Result.Failed; } return result; } } [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class CmdSnoopModScopePickEdge : IExternalCommand { public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elems) { Result result; try { Snoop.CollectorExts.CollectorExt.m_app = cmdData.Application; Snoop.CollectorExts.CollectorExt.m_activeDoc = cmdData.Application.ActiveUIDocument.Document; Reference refElem = null; try { refElem = cmdData.Application.ActiveUIDocument .Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Edge); } catch { return Result.Succeeded; } //GeometryObject geoObject = cmdData.Application.ActiveUIDocument.Document.GetElement(refElem) // .GetGeometryObjectFromReference(refElem); Snoop.Forms.Objects form = new Snoop.Forms.Objects(refElem); ActiveDoc.UIApp = cmdData.Application; form.ShowDialog(); result = Result.Succeeded; } catch (System.Exception e) { msg = e.Message; result = Result.Failed; } return result; } } [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class CmdSnoopModScopeLinkedElement : IExternalCommand { public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elems) { Result result; try { Snoop.CollectorExts.CollectorExt.m_app = cmdData.Application; Document doc = cmdData.Application.ActiveUIDocument.Document; Reference refElem = null; try { refElem = cmdData.Application.ActiveUIDocument .Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.LinkedElement); } catch { return Result.Succeeded; } string stableReflink = refElem.ConvertToStableRepresentation(doc).Split(':')[0]; Reference refLink = Reference.ParseFromStableRepresentation(doc, stableReflink); RevitLinkInstance rli_return = doc.GetElement(refLink) as RevitLinkInstance; Snoop.CollectorExts.CollectorExt.m_activeDoc = rli_return.GetLinkDocument(); Element e = Snoop.CollectorExts.CollectorExt.m_activeDoc.GetElement(refElem.LinkedElementId); Snoop.Forms.Objects form = new Snoop.Forms.Objects(e); ActiveDoc.UIApp = cmdData.Application; form.ShowDialog(); result = Result.Succeeded; } catch (System.Exception e) { msg = e.Message; result = Result.Failed; } return result; } }