【ABD CE】C#楼梯在做动态旋转的过程中 为何在illustration状态下不能实现动态显示?在线框模式下却可以?

请问各位老师

    楼梯在做动态旋转的过程中 为何在illustration状态下不能实现动态显示?在线框模式下却可以?

ice_video_20191107-145930.rar

Parents Reply Children
  • 能否把相关的代码都发上来我帮您分析一下,只有这一个函数看不出有什么问题

  • 不好意思 前段时间 公司在忙没有及时回您消息 这是旋转的代码,请您指正

        class DynamicRotate : DgnPrimitiveTool  //  DgnPrimitiveTool, DgnElementSetTool
        {
            static double UorPerMas = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster;
            Bentley.Interop.MicroStationDGN.Application app = Bentley.MstnPlatformNET.InteropServices.Utilities.ComApp;
    
            
            public DynamicRotate()
                : base(0, 0)
            {
            }
    
            static BIM.Element oldElement = null;
            static DPoint3d dPoint3d = new DPoint3d();
    
            public static void InstallNewTool(BIM.Element _oldElement,DPoint3d _dPoint3d)
            {
                dPoint3d = _dPoint3d;
                oldElement = _oldElement;
                DynamicRotate dynamicRotate = new DynamicRotate();
                dynamicRotate.InstallTool();
            }
    
            protected override void OnPostInstall()
            {
                AccuSnap.SnapEnabled = true;
                BeginDynamics();
                AccuDraw.Origin = dPoint3d;
                base.OnPostInstall();
            }
    
            BIM.Element newElement = null;
            protected override bool OnDataButton(DgnButtonEvent ev)
            {
                app.ActiveModelReference.ReplaceElement(oldElement, newElement);
                EndDynamics();
                ExitTool();
                return true;
            }
    
            protected override void OnDynamicFrame(DgnButtonEvent ev)
            {
                AccuDraw.Active = true;
                double angleZ;
                newElement = app.ActiveModelReference.GetLastValidGraphicalElement();
                newElement.RotateAboutZ(app.Point3dFromXYZ(dPoint3d.X / UorPerMas, dPoint3d.Y / UorPerMas, dPoint3d.Z / UorPerMas), -angleZ);
                newElement.Redraw(MsdDrawingMode.Temporary);  //��̬��ʾ  out angleX, out angleY, 
            }
    
            protected override void OnCleanup()
            {
            }
    
            protected override bool OnResetButton(DgnButtonEvent ev)
            {
                OnRestartTool();
                return true;
            }
    
            protected override void OnRestartTool()
            {
                
                EndDynamics();
                ExitTool();
            }
    
            protected override void ExitTool()
            {
                base.ExitTool();
            }
    
        
        }
    

  • OnDynamicFrame函数里边不要用文件里边的元素去重绘,新建一个元素,如果想对dgn文件里边已经存在的元素重绘,就拷贝出来一份重绘。

  • 郭工 除了DgnPrimitiveTool 接口 还有其他的接口方法可以实现这样动态吗?