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
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二次开发的解决方式-创新互联
文章来源:http://myzitong.com/article/dhdjih.html