cad.net 关于图元初始化注意事项

调用初始化赋值

初始化图元的时候必须调用一下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.其他工作

谁特喵记得住啊,所以我都是把所有新建图元封装一次的,注意封装内实现就行了.
可以参考李小科视频上面的,不过就是不要抄它事务放子函数就行了(把事务传参进去子函数).
如果你记得住,那就当我没说.

为什么桌子会写一个公共初始化呢?
大概是内存(.dwg)中有这个连续内存了,直接转为此结构的时候不需要初始化.

相关阅读

cad.net 封装填充类
AutoCAD.NET关于Hatch填充

初始化赋值和修改

数据库上已有的属性块使用ScaleFactors和Position修改并不改变图形,这是为什么呢?

这是由于entity.属性(字段)是用来初始化的,之后再去修改就最好不要用属性(字段),而是通过矩阵去修改.

可以通过以下代码实践一下:

但是这些属性(字段)又可以读,又可以初始化改,加入数据库之后的非矩阵部分又可以赋值,例如"文字内容",
所以只需要记住一个原则就行:新建时通过属性或者字段,修改时通过矩阵

(完)

posted @ 2021-10-29 01:27  惊惊  阅读(575)  评论(0编辑  收藏  举报