Revit二次开发的解决方式-创新互联

根据当前的程序,有以下几个点进行改良
1 日志每次revit生成的之后,就不会del,下次再次生成的时候,发现有日志,就不会在生成。采用将日志的名字修改为时间戳,每次运行的时候,产生独立的日志文件。

在工农等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、网站建设 网站设计制作定制开发,公司网站建设,企业网站建设,品牌网站制作,成都全网营销,成都外贸网站建设,工农网站建设费用合理。

示例代码

string date = DateTime.Now.ToLongDateString().ToString() + DateTime.Now.ToLongTimeString();
date = date.Replace(":", "_");
roller.File = @"EventLogByrevit" + date + ".txt";

这个代码放在log.cs中。在revit的命令中执行。这种方法调试的时候很有用。

2 在Model类中,增加一个每次都drop原来的库,单独重新生成一个库。
在Model类中的构造函数中增加

Database.SetInitializer(new DropCreateDatabaseAlways());

3 DB中增加一个时间字段,看是什么时间保存的数据。

4 DB中增加一个文件名的字段,这个文件名是全文件名,所以在类中设置这个属性的时候,要保持1000个字符左右。不然个别的会很长,在保持的时候会报错。

5 在保持的时候,因为构建比较多,从网站上下载构建
在Negut的控制台上,执行以下命令
Install-Package Z.EntityFramework.Extensions -Version 3.22.6
就会安装一个Extension,它支持批量保持。

6 如果数据量还是很大,那么就将数据分为10000个为一个单位,分的方法可参考

 List templist = new List();
                       int separate = 10000;
            int mod整数 = count / separate;
            int mod余数 = count % separate;

            for (int j = 1; j <= mod整数; j++)
            {
                templist.AddRange(l构件实体列表.Skip((j-1) * separate).Take(separate));
                m.d构件实体数据处理.AddRange(templist);
                m.BatchSaveChanges();
                templist.Clear();
            }
            if (mod余数 != 0)
            {
                templist.AddRange(l构件实体列表.Skip(mod整数 * separate).Take(mod余数));
                m.d构件实体数据处理.AddRange(templist);
                m.BatchSaveChanges();
                                    templist.Clear();
            }
            Common.utility.WriteDebugLog("数据库存储结束,采用了batchsavechange的方法。");

分为10000个为一个单位进行保持。

7 为了便于发现问题,在系统中增加日志的记录地方,采用
Common.utility.WriteDebugLog(string.Format("正在处理第{0}个文件,文件名是{1},一共有{2}个文件\r\n",i,filename, filenameList.Count()));
这种格式,比较好。

8 在Revit中执行一个目录下所有的revit文件。
打开一个revit文件,运行这个插件。
这个插件一开始采用以下的代码
string path = @"d:\1";
string[] filenameList = Directory.GetFiles(path, "*.rvt", SearchOption.AllDirectories);

 app = commandData.Application.Application;
        Document doc;
        foreach (var x in filenameList)
        {
            Common.utility.WriteDebugLog(string.Format("个文件,文件名是{0}\r\n",x));
        }
        int i = 1;
        foreach (var filename in filenameList)
        {
            Common.utility.WriteDebugLog(string.Format("正在处理第{0}个文件,文件名是{1},一共有{2}个文件\r\n",i,filename, filenameList.Count()));
            i++;

9 ui的地方抽象一个类出来,将每个文档的处理逻辑放入到单独的一个类中

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:Revit二次开发的解决方式-创新互联
URL标题:http://ybzwz.com/article/dhdjih.html