Revit二次开发,那些自己挖的坑,你都会想摔键盘

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,目前自己用着还算好。

 

祝您用餐愉快。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值