public EarthworkBlockCPSettingsForm(EarthworkBlockingForm form, EarthworkBlockCPSettings cpSettings) { InitializeComponent(); //传值存储 Mainform = form; CPSettings = cpSettings; CPSettings.Start(); btn_Apply.Enabled = false;//应用只在内容更改时可用 //控件参数初始化 traceBar_Transparency.Minimum = 0; traceBar_Transparency.Maximum = 100; //解除变更事件 cb_IsVisible.CheckedChanged -= ValueChanged; cb_IsSurfaceVisible.CheckedChanged -= ValueChanged; cb_IsHalftone.CheckedChanged -= ValueChanged; tb_Transparency.TextChanged -= tb_Transparency_TextChanged; traceBar_Transparency.Scroll -= traceBar_Transparency_Scroll; cb_FillPattern.SelectedIndexChanged -= ValueChanged; //赋值 cb_FillPattern.DisplayMember = "Name"; cb_FillPattern.ValueMember = "Id"; cb_FillPattern.DataSource = GetFillPatterns(form.m_Doc); cb_IsVisible.Checked = CPSettings.IsVisible; cb_IsSurfaceVisible.Checked = CPSettings.IsSurfaceVisible; cb_IsHalftone.Checked = CPSettings.IsHalftone; traceBar_Transparency.Value = CPSettings.SurfaceTransparency; tb_Transparency.Text = CPSettings.SurfaceTransparency.ToString(); btn_Color.ImageAlign = ContentAlignment.MiddleLeft; btn_Color.TextAlign = ContentAlignment.MiddleLeft; RenderColorButton(CPSettings.Color); //绑定变更事件 cb_IsVisible.CheckedChanged += ValueChanged; cb_IsSurfaceVisible.CheckedChanged += ValueChanged; cb_IsHalftone.CheckedChanged += ValueChanged; tb_Transparency.TextChanged += tb_Transparency_TextChanged; traceBar_Transparency.Scroll += traceBar_Transparency_Scroll; cb_FillPattern.SelectedIndexChanged += ValueChanged; }
/// <summary> /// 查看按完工和未完工标注颜色的视图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Preview_Click(object sender, System.EventArgs e) { //if (Blocking.Blocks.Count == 0 || Blocking.Blocks.Where(c => c.ElementIds.Count() > 0).Count() == 0) // return; var doc = m_Doc; string viewName = "查看完成和未完成的构件"; var view = Revit_Document_Helper.GetElementByNameAs <View3D>(doc, viewName); if (view == null) { using (var transaction = new Transaction(doc, "EarthworkBlocking." + nameof(btn_Preview_Click))) { transaction.Start(); try { var viewFamilyType = new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType)).ToElements() .First(c => c.Name == "三维视图"); view = View3D.CreateIsometric(doc, viewFamilyType.Id); view.Name = viewName; transaction.Commit(); } catch (Exception ex) { transaction.RollBack(); ShowMessage("消息", $"视图({viewName})新建失败,错误详情:" + ex.ToString()); } } } // 渲染处理 using (var transaction = new Transaction(doc, "EarthworkBlocking." + nameof(btn_Preview_Click))) { transaction.Start(); //var defaultSettings = new OverrideGraphicSettings(); //defaultSettings.SetSurfaceTransparency(50); //SetAllCategories(view, defaultSettings); foreach (var block in Blocking.Blocks) { OverrideGraphicSettings setting = new OverrideGraphicSettings(); setting.SetProjectionFillPatternId(EarthworkBlockCPSettings.GetDefaultFillPatternId(doc)); if (block.ImplementationInfo.IsSettled) { setting.SetSurfaceTransparency(0); setting.SetProjectionFillColor(new Autodesk.Revit.DB.Color(Blocking.ColorForSettled.R, Blocking.ColorForSettled.G, Blocking.ColorForSettled.B)); } else { setting.SetSurfaceTransparency(0); setting.SetProjectionFillColor(new Autodesk.Revit.DB.Color(Blocking.ColorForUnsettled.R, Blocking.ColorForUnsettled.G, Blocking.ColorForUnsettled.B)); } foreach (var elementId in block.ElementIds) { //if (view.Document.GetElement(elementId) != null) view.SetElementOverrides(elementId, setting); } } transaction.Commit(); } m_UIDoc.ActiveView = view; ShowDialogType = ShowDialogType.ViewCompletion; DialogResult = DialogResult.Retry; //SaveDataGridViewSelection(); this.Close(); //ShowMessage("消息", $"三维视图({viewName})更新成功"); }