====== XProperty ====== **//Inherited from//** [[class::domain::nitem|NItem]], **//Inherited by//** NULL **//Friend class//** PropertyManager, **//Description//** XProperty是封装了单元属性信息的数据基类,它支持各种类型的单元属性,并提供一种通用的、可扩展的属性结构,此外,它还提供一组易于使用和维护的API,使用户可以轻松创建、修改和查询单元属性。对于大多数仿真分析(如有限元分析、流体分析),几何模型需要被离散成网格微元,单元属性可以求解器知道该单元使用何种本构关系,如何构建微分方程在单元上的求解矩阵。对于结构分析来说,单元属性分为实体、板壳、杆梁以及集中点从三维到0维的四类属性,单元属性一般需要选择应用对象(单元集合)并绑定材料数据,其中板壳还需要补充厚度信息,杆梁需要补充截面(XSection)信息。 由于不同求解器所需要的属性不尽一致,因此XT引入了属性扩展(XPrpExtension)用于扩展定制不同求解器的专有属性,一个单元属性对象里面至多可以添加一个属于指定求解器的扩展,可以添加多个属于不同求解器的扩展。 单元属性遵照一定的原则可以自由继承扩展,它的参考标识前缀为“CPRP”。它们的属性均从PropertyAttribute 继承,因此可以使用统一的接口访问其属性。 **//Members//** * XArray [[xproperty#m_ptargets|m_pTargets]] * OrderContainer [[xproperty#m_extensions|m_Extensions]] **//Public interface//** * [[xproperty#xproperty1|XProperty]](ulong id, int tid) * virtual ulong [[xproperty#getmaterialid|getMaterialId]]() const * virtual void [[xproperty#setmaterial|setMaterial]](ulong matId) * const XArray * [[xproperty#gettargets|getTargets]]() const * void [[xproperty#settargets|setTargets]](vector * tars) * void [[xproperty#settargets|setTargets]](vector * tars) * int [[xproperty#targetcount|targetCount]]() const * void [[xproperty#clear|clear]]() * bool [[xproperty#haspart|hasPart]](ulong pid, ulong mid) const * virtual void [[xproperty#write|write]](XBinaryIO * io) * virtual ErrorCode [[xproperty#read|read]](XBinaryIO * io) * virtual void [[xproperty#write|write]](XH5IO * io, H5Obj * grp) * virtual bool [[xproperty#read|read]](XH5IO * io, H5Obj * grp) * virtual const PropertyAttribute * [[xproperty#getattribute|getAttribute]]() const = 0 * virtual void [[xproperty#setattribute|setAttribute]](const PropertyAttribute * atb) = 0 * virtual void * [[xproperty#getfield|getField]]() * virtual void [[xproperty#initfield|initField]](int size) * virtual [[xproperty#~xproperty|~XProperty]]() ---- {{anchor:m_ptargets}} **XArray m_pTargets** 应用对象数组 {{anchor:m_extensions}} **OrderContainer m_Extensions** 属性扩展容器 ---- {{anchor:xproperty1}} **XProperty(ulong id, int tid)** *function: 构造函数 *parameters: - [i]ulong id: 身份ID - [i] int tid: 单元属性类型 *return value: {{anchor:getmaterialid}} **virtual ulong getMaterialId() const** *function: 获取材料号 *parameters: NULL *return value: 材料号ID {{anchor:setmaterial}} **virtual void setMaterial(ulong matId)** *function: 绑定材料号 *parameters: - [i]ulong matId: 材料号ID *return value: 无 {{anchor:gettargets}} **const XArray * getTargets() const** *function: 获取应用对象标识数组 *parameters: NULL *return value: 无 {{anchor:settargets}} **void setTargets(vector * tars)** *function: 设置应用对象标识数组 *parameters: - [i]vector * tars: 应用对象标识指针数组 *return value: 无 {{anchor:settargets}} **void setTargets(vector * tars)** *function: 设置应用对象标识数组 *parameters: - [i]vector * tars: 应用对象标识数组 *return value: 无 {{anchor:targetcount}} **int targetCount() const** *function: 应用对象个数 *parameters: NULL *return value: 无 {{anchor:clear}} **void clear()** *function: 清空应用对象以及属性扩展 *parameters: NULL *return value: 无 {{anchor:haspart}} **bool hasPart(ulong pid, ulong mid) const** *function: 判断属性是否应用在指定部件所包含的单元集上 *parameters: - [i]ulong pid: 部件ID - [i] ulong mid: 部件所属模型ID *return value: 如属性是否应用在指定部件上返回true,否则返回false {{anchor:write}} **virtual void write(XBinaryIO * io)** *function: 将单元属性信息写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:read}} **virtual ErrorCode read(XBinaryIO * io)** *function: 从二进制文件中读取单元属性信息 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 如成功读取返回Error_None, 否则返回相应错误码 {{anchor:write}} **virtual void write(XH5IO * io, H5Obj * grp)** *function: 将单元属性信息写入到HDF5文件中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 数据对象所对应的HDF5节点 *return value: 无 {{anchor:read}} **virtual bool read(XH5IO * io, H5Obj * grp)** *function: 从HDF5文件中读取单元属性信息 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 数据对象所对应的HDF5节点 *return value: 无 {{anchor:getattribute}} **virtual const PropertyAttribute * getAttribute() const = 0** *function: 虚函数接口,获取属性数据 *parameters: NULL *return value: 属性数据指针 {{anchor:setattribute}} **virtual void setAttribute(const PropertyAttribute * atb) = 0** *function: 设置单元属性数据 *parameters: - [i]const PropertyAttribute * atb: 属性数据指针 *return value: 无 {{anchor:~xproperty}} **virtual ~XProperty()** *function: 析构函数 *parameters: NULL *return value: 无