/// <summary> /// 选择点,带预览,空时返回null /// </summary> /// <param name="uiApp"></param> /// <param name="startPoint"></param> /// <returns></returns> public XYZ PickPointWithLinePreview(UIApplication uiApp, XYZ startPoint) { XYZ result = null; Document doc = uiApp.ActiveUIDocument.Document; PickObjectsMouseHook mouseHook = null; mouseHook = InitMouseHook(); System.Windows.Forms.Timer timer = null; var view = new DrawAreaView(uiApp); view.Show(); view.StartPoint = new System.Windows.Point(startPoint.X, startPoint.Y); //开启定时器 实时绘图 timer = new System.Windows.Forms.Timer(); timer.Interval = 6; timer.Tick += (sender, e) => { view.PreviewLine(System.Windows.Forms.Control.MousePosition); }; timer.Start(); //选点 try { result = uiApp.ActiveUIDocument.Selection.PickPoint("PM-预览绘线中,鼠标左键确定,右键取消");//Autodesk.Revit.UI.Selection.ObjectSnapTypes.Endpoints, } catch { mouseHook.UninstallHook(); } timer.Stop(); view.Close(); mouseHook.Dispose(); mouseHook = null; return(result); }
private static PickObjectsMouseHook InitMouseHook() { PickObjectsMouseHook mouseHook; try { mouseHook = new PickObjectsMouseHook(); mouseHook.InstallHook(PickObjectsMouseHook.OKModeENUM.Object); } catch { mouseHook = new PickObjectsMouseHook(); mouseHook.InstallHook(PickObjectsMouseHook.OKModeENUM.Object); } return(mouseHook); }
protected override bool DoUI() { Form = new ListForm(this.m_app.ActiveUIDocument); PickObjectsMouseHook mouseHook = new PickObjectsMouseHook(); DialogResult result = DialogResult.Retry; while ((result = Form.ShowDialog(new RevitHandle(Process.GetCurrentProcess().MainWindowHandle))) == DialogResult.Retry) { switch (Form.ShowDialogType) { case ShowDialogType.AddElements_ForDetail: case ShowDialogType.DeleleElements_ForDetail: switch (Form.SubFormType) { case SubFormType.Subsidence: try { mouseHook.InstallHook(); Form.SubFormForSubsidence.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); mouseHook.UninstallHook(); } catch { mouseHook.UninstallHook(); } Form.SubFormForSubsidence.FinishElementSelection(); break; case SubFormType.SkewBack: try { mouseHook.InstallHook(); Form.SubFormForSkewBack.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); mouseHook.UninstallHook(); } catch { mouseHook.UninstallHook(); } Form.SubFormForSkewBack.FinishElementSelection(); break; } break; case ShowDialogType.ViewElementsBySelectedNodes: case ShowDialogType.ViewElementsByAllNodes: case ShowDialogType.ViewCurrentMaxByRed: case ShowDialogType.ViewCurrentMaxByAll: case ShowDialogType.ViewTotalMaxByRed: case ShowDialogType.ViewTotalMaxByAll: case ShowDialogType.ViewCloseWarn: case ShowDialogType.ViewOverWarn: mouseHook.InstallHook(); m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); mouseHook.UninstallHook(); break; } } return(true); }
protected override bool DoUI() { Form = new ListForm(this.m_app.ActiveUIDocument); PickObjectsMouseHook mouseHook = new PickObjectsMouseHook(); DialogResult result = DialogResult.Retry; while ((result = Form.ShowDialog(new RevitHandle(Process.GetCurrentProcess().MainWindowHandle))) == DialogResult.Retry) { switch (Form.ShowDialogType) { case ShowDialogType.AddElements: case ShowDialogType.DeleleElements: switch (Form.SubFormType) { case SubFormType.Subsidence: MouseHook.VLHooker.Hooker.DelegateCompletingAction(() => { Form.SubFormForSubsidence.SelectedElementIds = new List <ElementId>() { m_uiDoc.Selection.PickObject(ObjectType.Element, "选择要添加的构件").ElementId }; }); //try //{ // mouseHook.InstallHook(); // Form.SubFormForSubsidence.SelectedElementIds = new List<ElementId>() { m_uiDoc.Selection.PickObject(ObjectType.Element, "选择要添加的构件").ElementId }; // mouseHook.UninstallHook(); //} //catch //{ // mouseHook.UninstallHook(); //} Form.SubFormForSubsidence.FinishElementSelection(); break; case SubFormType.SkewBack: MouseHook.VLHooker.Hooker.DelegateCompletingAction(() => { Form.SubFormForSkewBack.SelectedElementIds = new List <ElementId>() { m_uiDoc.Selection.PickObject(ObjectType.Element, "选择要添加的构件").ElementId }; }); //try //{ // mouseHook.InstallHook(); // Form.SubFormForSkewBack.SelectedElementIds = new List<ElementId>() { m_uiDoc.Selection.PickObject(ObjectType.Element, "选择要添加的构件").ElementId }; // mouseHook.UninstallHook(); //} //catch //{ // mouseHook.UninstallHook(); //} Form.SubFormForSkewBack.FinishElementSelection(); break; } break; case ShowDialogType.ViewElementsBySelectedNodes: case ShowDialogType.ViewElementsByAllNodes: case ShowDialogType.ViewCurrentMaxByRed: case ShowDialogType.ViewCurrentMaxByAll: case ShowDialogType.ViewTotalMaxByRed: case ShowDialogType.ViewTotalMaxByAll: case ShowDialogType.ViewCloseWarn: case ShowDialogType.ViewOverWarn: MouseHook.VLHooker.Hooker.DelegateCompletingAction(() => { m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); }); //try //{ // mouseHook.InstallHook(); // m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); // mouseHook.UninstallHook(); //} //catch //{ // mouseHook.UninstallHook(); //} break; } } return(true); }
protected override bool DoUI() { var directory = System.Reflection.Assembly.GetExecutingAssembly().Location; //string directory = System.AppDomain.CurrentDomain.BaseDirectory; //MessageBox.Show(directory); System.IO.Directory.SetCurrentDirectory(directory.Substring(0, directory.LastIndexOf("\\"))); Form = new EarthworkBlockingForm(this.m_app); PickObjectsMouseHook mouseHook = new PickObjectsMouseHook(); DialogResult result = DialogResult.Retry; while ((result = Form.ShowDialog(new Hook.RevitHandle(Process.GetCurrentProcess().MainWindowHandle))) == DialogResult.Retry) { if (result == DialogResult.Cancel) { return(false); } if (result == DialogResult.OK) { return(true); } if (Form.ShowDialogType == ShowDialogType.AddElements || Form.ShowDialogType == ShowDialogType.DeleleElements) { Hooker.DelegateCompletingAction(() => { Form.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); }); Form.FinishElementSelection(); //Hooker Hooker = new Hooker(); //try //{ // Hooker.MouseHookProcedure = new Hooker.HookProc(MouseHookProc); // Hooker.Start(); // Form.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") // .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); // Hooker.Stop(); //} //catch (Exception ex) //{ // Hooker.Stop(); //} //try //{ // mouseHook.InstallHook(); // Form.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") // .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); // mouseHook.UninstallHook(); //} //catch //{ // mouseHook.UninstallHook(); //} } if (Form.ShowDialogType == ShowDialogType.ViewGT6 || Form.ShowDialogType == ShowDialogType.ViewCompletion) { Hooker.DelegateCompletingAction(() => { m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); }); //try //{ // mouseHook.InstallHook(); // m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); // mouseHook.UninstallHook(); //} //catch //{ // mouseHook.UninstallHook(); //} } } return(true); #region 非模态 //try //{ // if (ConfigPathManager.IniProjectDB(this.m_doc)) // { // Form = new EarthworkBlockingForm(this.m_app); // Form.ShowDialog(); // return true; // } // else // return false; //} //catch(Exception ex) //{ // TaskDialog.Show("错误", ex.Message); // return false; //} #endregion }
protected override bool DoUI() { Form = new EarthworkBlockingForm(this.m_app); PickObjectsMouseHook mouseHook = new PickObjectsMouseHook(); DialogResult result = DialogResult.Retry; while ((result = Form.ShowDialog(new RevitHandle(Process.GetCurrentProcess().MainWindowHandle))) == DialogResult.Retry) { if (result == DialogResult.Cancel) { return(false); } if (result == DialogResult.OK) { return(true); } if (Form.ShowDialogType == ShowDialogType.AddElements || Form.ShowDialogType == ShowDialogType.DeleleElements) { try { mouseHook.InstallHook(); Form.SelectedElementIds = m_uiDoc.Selection.PickObjects(ObjectType.Element, "选择要添加的构件") .Select(p => m_doc.GetElement(p.ElementId).Id).ToList(); mouseHook.UninstallHook(); } catch { mouseHook.UninstallHook(); } Form.FinishElementSelection(); } if (Form.ShowDialogType == ShowDialogType.ViewGT6 || Form.ShowDialogType == ShowDialogType.ViewCompletion) { try { mouseHook.InstallHook(); m_uiDoc.Selection.PickObjects(ObjectType.Element, ""); mouseHook.UninstallHook(); } catch { mouseHook.UninstallHook(); } } } return(true); #region 非模态 //try //{ // if (ConfigPathManager.IniProjectDB(this.m_doc)) // { // Form = new EarthworkBlockingForm(this.m_app); // Form.ShowDialog(); // return true; // } // else // return false; //} //catch(Exception ex) //{ // TaskDialog.Show("错误", ex.Message); // return false; //} #endregion }