【MSCE C#】cell Library的预览窗口是如何实现的呢?

我想写一个功能,需要像cell Library预览窗口一样的窗口,请问如何实现?

Parents Reply
  • 不是的符老师,我是按照博文

    https://mp.weixin.qq.com/s?__biz=MzU2NTc2MDk3Ng==&mid=2247483682&idx=1&sn=15d8a601873fc24e5f007cb39a6976a8&scene=19#wechat_redirect

    中做的

    //注意此处另名的引用方式
    extern alias DDUI;
    //.................
    //其它代码不显示,仅提供Button的Click事件代码便于读者理解基本使用
    private void ShowCurrentModelBtn_Click(object sender, EventArgs e)
            {
                //获取当前DgnModel
                DgnModel dgnmodel = Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModel();
                try
                {
                    //构造元素集
                    ElementAgenda showElements = new ElementAgenda();
                    //元素集来源为选择
                    showElements.Source = ModifyElementSource.Selected;
                    //获取当前DgnModel所有图形元素
                    ModelElementsCollection elements = dgnmodel.GetGraphicElements();
                    //遍历所有图形元素
                    IEnumerator<Element> allelement = elements.GetEnumerator();
                    while (allelement.MoveNext())
                    {
                        showElements.Insert(allelement.Current, false);
                    }
                    //获取当前DgnModel的IntPtr
                    IntPtr modelPtr = dgnmodel.GetNative();
                    unsafe
                    {
                        //构造PreviewControl,注意此处DDUI的使用
                        DDUI.Bentley.DgnPlatform.PreviewControl pc = new DDUI.Bentley.DgnPlatform.PreviewControl((DDUI.Bentley.DgnPlatform.DgnModel*)modelPtr.ToPointer());
                        this.elementHost1.Child = pc;
                        pc.FitToView();
                        pc.Rotate(DDUI.Bentley.DgnPlatform.RotationMode.Isometric);
                        pc.SetRenderMode(DDUI.Bentley.DgnPlatform.RenderMode.Solid);
                        pc.ShowPreview(showElements);
                        pc.Refresh();
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message + ":" + ex.StackTrace);
                }
            }

    无法实时预览,点一下才能出来Joy

Children