调用初始化赋值
初始化图元的时候必须调用一下Entity.SetDatabaseDefaults();
尤其是初始化填充(可以看到我代码做了一次预处理测试).
因为acad的不同版本会修改初始化赋值的顺序,导致此问题,
而且它报错的地方可能并不是提交事务到数据库时,
而是计算图元显示时: hatch.EvaluateHatch(true);//计算填充并显示
,例如通过jig触发了.
这个操作是通用于所有图元的,
当构造函数没有可输入参数时候才需要,如果是有重载参数的,最好利用含有参数来实现初始化(因为它更偏向于规范,而非必然报错)
举个简单例子:
ok:
var ha = new Hatch(x,xx,xxx);
ha.其他工作
ok:
var ha = new Hatch();
ha.SetDatabaseDefaults();
ha.其他工作
不ok:
var ha = new Hatch();
ha.其他工作
谁特喵记得住啊,所以我都是把所有新建图元封装一次的,注意封装内实现就行了.
可以参考李小科视频上面的,不过就是不要抄它事务放子函数就行了(把事务传参进去子函数).
如果你记得住,那就当我没说.
相关阅读
初始化赋值和修改
数据库上已有的属性块使用ScaleFactors和Position修改并不改变图形,这是为什么呢?
这是由于entity.属性(字段)是用来初始化的,之后再去修改就最好不要用属性(字段),而是通过矩阵去修改.
可以通过以下代码实践一下:
但是这些属性(字段)又可以读,又可以初始化改,加入数据库之后的非矩阵部分又可以赋值,例如"文字内容",
所以只需要记住一个原则就行:新建时通过属性或者字段,修改时通过矩阵
(完)