ORD中国版中,缓存值最大可以设置为多少?

  • 该选项并非ORD特有,而是基础平台MS中的一个设置项。该项表示软件为读取资源文件(比如.rsc等类型的文件)预留的内存空间(以KB为单位)。目前是4096,那就是4M空间。该值大小在帮助文档中并未说明最大可以设置多大。这要依赖您物理内存的大小。不过,我不确定修改这个值能对软件的工作效率有多大的提升。



  • 是这样的老师,我用COM口实现的把单元库中的单元放到模型中,发现就是放置的单元特别多的时候, ORD软件会闪崩,是不是软件缓存不够, 或者有没有释放放置单元缓存的方法

  • 这个问题与该参数不相关,应该是COM接口本身的问题。大量放置单元(或其他大量操作)时软件没有得到空闲时间从而导致没有时机自动释放一些内存导致的。

    你可以做这么一个测试:捕获系统的IEnterIdleEvent事件(有AddEnterIdenEventHandler方法可调用),在该事件中每次放置比如50个cell。该事件是在系统闲置时被调用。这样依靠一个全局的变量控制总放置个数。事件处理函数会被多次调用。系统有机会释放内存。



  • 老师,可以给我一个捕获系统的IEnterIdleEvent事件(有AddEnterIdenEventHandler方法可调用)的例子吗, 我找了下没找到

  • 这种代码的框架是这样的:

    1、在你cs中开头写上如下两行,这是using的另外一种用法,简写命名空间。

    using BIM = Bentley.Interop.MicroStationDGN;
    using BMI = Bentley.MstnPlatformNET.InteropServices;

    2、在你的cs的某个方法中写上如下代码以启动对Idle事件的跟踪:

    BIM.Application app = BMI.Utilities.ComApp;
    app.AddEnterIdleEventHandler(myIdleEventHandler);

    3、写事件处理接口的实现类如下。注意,这是一个独立的Class,需要放到现有Class的外部,并列的关系。

    public class IdleEventHandler: BIM.IEnterIdleEvent
        {
            void BIM.IEnterIdleEvent.EnterIdle(int Reserved)
            {
                //在这里放置您的执行代码
            }
        }

    4、声明一个该类的实例(第4行代码就是)

    internal sealed class Program : AddIn
        {
            public static Program Addin = null;
            public static IdleEventHandler myIdleEventHandler = new IdleEventHandler();