Revit二开,是个很神奇的东西,因为它会发生一些你意想不到,超脱你正常认知的范围
一、静态变量惹的祸
如上图,这种问题是极少发生的,估计也一般不会有人能遇到的,只有奇葩的我遇到了。错误描述是“The referenced object is not valid, possibly because it has been deleted from the database, or its creation was undone.”。
那么这个错误是怎么来的呢?我是测试了很久很久,才找出原因所在,就是因为我用了static静态变量去存储Revit的commandData数据导致的。
当时找遍了整个互联网,包括万能的google,都没有找到一篇描述这个错误的原因的文章。
原因是:
使用static变量存储Revit的commandData数据,但是Revit本身是不受你控制的,它会不断的去更新它的commandData中的各种数据,而我们的static变量存储的还是上一次的值,Revit检测到跟它现有的数据不一致时,就会报出上面的错误。我当时遇到这个情形时是使用LoadFamily()方法去加载族的时候,发现老是弹出这个错误。
二、分层
Revit二开,最好还是不要分层。
像我这样子分了N个层,也是得到的经验。
过多的分层,会导致以下麻烦,所以应尽量避免分层:
1.会导致测试不方便,每个dll你可能都要copy到相应的地方,而且你可能还要每次都重新打开Revit才能测试,重新打开Revit是件费时的事情
2.导致意想不到的Revit无法调用的情况出现,这种情况你会有种想死的冲动,因为你不一定能解决这个问题
我自己现在已经分层了。还配了本地数据库Sqlite,目前自己用着还算好。
祝您用餐愉快。