/////////////////////////////////////////////////////////////////////////////// // THIS FILE IS MACHINE GENERATED!!!! // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2019, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2019 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "RxProperty.h" #include "RxObjectImpl.h" #include "RxAttribute.h" #include "RxCategory.h" #include "RxValueTypeUtil.h" #include "DbFcf.h" #include "DbValueTypes.h" /* OdDbFcfDimgapProperty */ struct OdDbFcfDimgapProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimgapProperty*)res.get())->init(__OD_T("Dimgap"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfDimgapProperty*)res.get())->attributes().add(OdRxUnitTypeAttribute::createObject(static_cast(1))); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimgapProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimgap()); return eOk; } OdResult OdDbFcfDimgapProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; double val; if (!(value >> val)) return eInvalidInput; pObj->setDimgap(val); return eOk; } /* OdDbFcfDimscaleProperty */ struct OdDbFcfDimscaleProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimscaleProperty*)res.get())->init(__OD_T("Dimscale"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfDimscaleProperty*)res.get())->attributes().add(OdRxUnitTypeAttribute::createObject(static_cast(0))); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfDimscaleProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Dim scale overall")); ((OdDbFcfDimscaleProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the overall scale factor applied to properties that specify sizes, distances, or offsets")); if (!OdRxCategory::rootCategory()->findDescendant(L"Fit")) OdRxCategory::createObject(L"Fit", OdRxCategory::rootCategory()); ((OdDbFcfDimscaleProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Fit", 3)); ((OdDbFcfDimscaleProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"ScaleFactor")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimscaleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimscale()); return eOk; } OdResult OdDbFcfDimscaleProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; double val; if (!(value >> val)) return eInvalidInput; pObj->setDimscale(val); return eOk; } /* OdDbFcfDimclrdProperty */ struct OdDbFcfDimclrdProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimclrdProperty*)res.get())->init(__OD_T("Dimclrd"), &OdRxValueType::Desc::value(), owner); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfDimclrdProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Dim line color")); ((OdDbFcfDimclrdProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the color of the dimension lines")); if (!OdRxCategory::rootCategory()->findDescendant(L"Lines & Arrows")) OdRxCategory::createObject(L"Lines & Arrows", OdRxCategory::rootCategory()); ((OdDbFcfDimclrdProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Lines & Arrows", 4)); ((OdDbFcfDimclrdProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"DimensionLineColor")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimclrdProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimclrd()); return eOk; } OdResult OdDbFcfDimclrdProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmColor val; if (!(value >> val)) return eInvalidInput; pObj->setDimclrd(val); return eOk; } /* OdDbFcfDimclrtProperty */ struct OdDbFcfDimclrtProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimclrtProperty*)res.get())->init(__OD_T("Dimclrt"), &OdRxValueType::Desc::value(), owner); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfDimclrtProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Text color")); ((OdDbFcfDimclrtProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the color of the dimension text")); if (!OdRxCategory::rootCategory()->findDescendant(L"Text")) OdRxCategory::createObject(L"Text", OdRxCategory::rootCategory()); ((OdDbFcfDimclrtProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Text", 5)); ((OdDbFcfDimclrtProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"TextColor")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimclrtProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimclrt()); return eOk; } OdResult OdDbFcfDimclrtProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdCmColor val; if (!(value >> val)) return eInvalidInput; pObj->setDimclrt(val); return eOk; } /* OdDbFcfDimtxstyProperty */ struct OdDbFcfDimtxstyProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimtxstyProperty*)res.get())->init(__OD_T("Dimtxsty"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfDimtxstyProperty*)res.get())->attributes().add(OdRxDisplayAsAttribute::createObject(L"Name")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimtxstyProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimtxsty()); return eOk; } OdResult OdDbFcfDimtxstyProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDbObjectId val; if (!(value >> val)) return eInvalidInput; pObj->setDimtxsty(val); return eOk; } /* OdDbFcfDimtxtProperty */ struct OdDbFcfDimtxtProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimtxtProperty*)res.get())->init(__OD_T("Dimtxt"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfDimtxtProperty*)res.get())->attributes().add(OdRxUnitTypeAttribute::createObject(static_cast(1))); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfDimtxtProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Text height")); ((OdDbFcfDimtxtProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the text height of the tolerance")); if (!OdRxCategory::rootCategory()->findDescendant(L"Text")) OdRxCategory::createObject(L"Text", OdRxCategory::rootCategory()); ((OdDbFcfDimtxtProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Text", 6)); ((OdDbFcfDimtxtProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"TextHeight")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimtxtProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->dimtxt()); return eOk; } OdResult OdDbFcfDimtxtProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; double val; if (!(value >> val)) return eInvalidInput; pObj->setDimtxt(val); return eOk; } /* OdDbFcfNormalProperty */ struct OdDbFcfNormalProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfNormalProperty*)res.get())->init(__OD_T("Normal"), &OdRxValueType::Desc::value(), owner); return res; } virtual OdResult subChildren(OdArray& children) const { children.append(OdRxSubProperty::createObject(L"X", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Y", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Z", OdRxValueType::Desc::value(), this)); return eOk; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual bool isReadOnly(const OdRxObject*) const ODRX_OVERRIDE { return true; } }; OdResult OdDbFcfNormalProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->normal()); return eOk; } /* OdDbFcfDirectionProperty */ struct OdDbFcfDirectionProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDirectionProperty*)res.get())->init(__OD_T("Direction"), &OdRxValueType::Desc::value(), owner); return res; } virtual OdResult subChildren(OdArray& children) const { children.append(OdRxSubProperty::createObject(L"X", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Y", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Z", OdRxValueType::Desc::value(), this)); return eOk; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual bool isReadOnly(const OdRxObject*) const ODRX_OVERRIDE { return true; } }; OdResult OdDbFcfDirectionProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->direction()); return eOk; } /* OdDbFcfLocationProperty */ struct OdDbFcfLocationProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfLocationProperty*)res.get())->init(__OD_T("Location"), &OdRxValueType::Desc::value(), owner); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfLocationProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Position X;Position Y;Position Z")); ((OdDbFcfLocationProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specify the X, Y, Z coordinate for insertion point of the tolerance or use the Pick Point button to set X, Y, Z values simultaneously")); if (!OdRxCategory::rootCategory()->findDescendant(L"Geometry")) OdRxCategory::createObject(L"Geometry", OdRxCategory::rootCategory()); ((OdDbFcfLocationProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Geometry", 1)); ((OdDbFcfLocationProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"InsertionPoint")); return res; } virtual OdResult subChildren(OdArray& children) const { children.append(OdRxSubProperty::createObject(L"X", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Y", OdRxValueType::Desc::value(), this)); children.append(OdRxSubProperty::createObject(L"Z", OdRxValueType::Desc::value(), this)); return eOk; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfLocationProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->location()); return eOk; } OdResult OdDbFcfLocationProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdGePoint3d val; if (!(value >> val)) return eInvalidInput; pObj->setLocation(val); return eOk; } /* OdDbFcfTextProperty */ struct OdDbFcfTextProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfTextProperty*)res.get())->init(__OD_T("Text"), &OdRxValueType::Desc::value(), owner); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfTextProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Text override")); ((OdDbFcfTextProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the text string of the tolerance")); if (!OdRxCategory::rootCategory()->findDescendant(L"Text")) OdRxCategory::createObject(L"Text", OdRxCategory::rootCategory()); ((OdDbFcfTextProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Text", 9)); ((OdDbFcfTextProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"TextString")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfTextProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; value = static_cast(pObj->text()); return eOk; } OdResult OdDbFcfTextProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdString val; if (!(value >> val)) return eInvalidInput; pObj->setText(val); return eOk; } /* OdDbFcfTextStyleIdProperty */ struct OdDbFcfTextStyleIdProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfTextStyleIdProperty*)res.get())->init(__OD_T("TextStyleId"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxRefersToAttribute::createObject(L"/TextStyleTableId/Items")); ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxDisplayAsAttribute::createObject(L"Name")); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Text style")); ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the text style of the tolerance")); if (!OdRxCategory::rootCategory()->findDescendant(L"Text")) OdRxCategory::createObject(L"Text", OdRxCategory::rootCategory()); ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Text", 8)); ((OdDbFcfTextStyleIdProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"TextStyle")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfTextStyleIdProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; //>>REPLACE_FNAME value = static_cast(pObj->dimtxsty()); return eOk; } OdResult OdDbFcfTextStyleIdProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDbObjectId val; if (!(value >> val)) return eInvalidInput; //>>REPLACE_FNAME pObj->setDimtxsty(val); return eOk; } /* OdDbFcfDimensionStyleProperty */ struct OdDbFcfDimensionStyleProperty : OdRxProperty { static OdRxMemberPtr createObject(const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDbFcfDimensionStyleProperty*)res.get())->init(__OD_T("DimensionStyle"), &OdRxValueType::Desc::value(), owner); ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxRefersToAttribute::createObject(L"/DimStyleTableId/Items")); ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxDisplayAsAttribute::createObject(L"Name")); // TODO: OdRxLocalizedNameAttribute is temporarily down // ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxLocalizedNameAttribute::createObject(L"Dim style")); ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxDescriptionAttribute::createObject(L"Specifies the style name of the tolerance")); if (!OdRxCategory::rootCategory()->findDescendant(L"Misc")) OdRxCategory::createObject(L"Misc", OdRxCategory::rootCategory()); ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Misc", 2)); ((OdDbFcfDimensionStyleProperty*)res.get())->attributes().add(OdRxCOMAttribute::createObject(L"StyleName")); return res; } virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE; virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE; }; OdResult OdDbFcfDimensionStyleProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; //>>STATIC_CAST value = static_cast(pObj->dimensionStyle()); return eOk; } OdResult OdDbFcfDimensionStyleProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDbFcfPtr pObj = OdDbFcf::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDbObjectId val; if (!(value >> val)) return eInvalidInput; pObj->setDimensionStyle(val); return eOk; } void createOdDbFcfProperties(OdArray& properties, OdRxMemberCollectionBuilder& b, void*) { properties.append(OdDbFcfDimgapProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimscaleProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimclrdProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimclrtProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimtxstyProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimtxtProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfNormalProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDirectionProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfLocationProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfTextProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfTextStyleIdProperty::createObject(b.owner())); b.add(properties.last()); properties.append(OdDbFcfDimensionStyleProperty::createObject(b.owner())); b.add(properties.last()); }