您好,登錄后才能下訂單哦!
根據當前的程序,有以下幾個點進行改良
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<m構件>(new DropCreateDatabaseAlways<m構件>());
3 DB中增加一個時間字段,看是什么時間保存的數據。
4 DB中增加一個文件名的字段,這個文件名是全文件名,所以在類中設置這個屬性的時候,要保持1000個字符左右。不然個別的會很長,在保持的時候會報錯。
5 在保持的時候,因為構建比較多,從網站上下載構建
在Negut的控制臺上,執行以下命令
Install-Package Z.EntityFramework.Extensions -Version 3.22.6
就會安裝一個Extension,它支持批量保持。
6 如果數據量還是很大,那么就將數據分為10000個為一個單位,分的方法可參考
List<Entity.e構件實體> templist = new List<Entity.e構件實體>();
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的地方抽象一個類出來,將每個文檔的處理邏輯放入到單獨的一個類中
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。