/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 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 "StdAfx.h" #include "DgCellHeader3dProperties.h" #include "DgCellHeader.h" #include "RxMember.h" #include "RxProperty.h" #include "DgBRepEntityPE.h" //================================================================================================== // Updated property: Transformation //================================================================================================== OdResult OdDgCellHeader3dTransformationExProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgCellHeader3dPtr pObj = OdDgCellHeader3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgMatrixTransform3d matRet; matRet.setMatrix(pObj->getTransformation()); value = matRet; return eOk; } //================================================================================================== OdResult OdDgCellHeader3dTransformationExProperty::subSetValue(OdRxObject* pO, const OdRxValue& value) const { OdDgCellHeader3dPtr pObj = OdDgCellHeader3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgMatrixTransform3d matTransform = *rxvalue_cast(&value); pObj->setTransformation(matTransform.getMatrix()); return eOk; } //================================================================================================== // New property: IsBrep //================================================================================================== OdResult OdDgCellHeader3dIsBrepProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgCellHeader3dPtr pObj = OdDgCellHeader3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdDgBRepEntityPE::BRepEntityType brepType = OdDgBRepEntityPEPtr(pObj)->type(pObj); value = brepType != OdDgBRepEntityPE::eNotBRepEntity; return eOk; } //================================================================================================== // dynamic property: LinkageSize //================================================================================================== OdRxMemberPtr OdDgCellHeader3dLinkageSizeProperty::createObject(const OdString& strName, OdUInt32 uLinkageNum, OdUInt32 uWeight, const OdRxClass* owner) { OdRxMemberPtr res = OdRxObjectImpl::createObject(); ((OdDgCellHeader3dLinkageSizeProperty*)res.get())->init(strName, &OdRxValueType::Desc::value(), owner); if (!res.isNull()) { ((OdDgCellHeader3dLinkageSizeProperty*)res.get())->attributes().add(OdRxUiPlacementAttribute::createObject(L"Linkage sizes", uWeight)); ((OdDgCellHeader3dLinkageSizeProperty*)res.get())->m_uLinkageNum = uLinkageNum; } return res; } //================================================================================================== OdResult OdDgCellHeader3dLinkageSizeProperty::subGetValue(const OdRxObject* pO, OdRxValue& value) const { OdDgCellHeader3dPtr pObj = OdDgCellHeader3d::cast(pO); if (pObj.isNull()) return eNotApplicable; OdRxObjectPtrArray arrLinkages; pObj->getLinkages(arrLinkages); if (arrLinkages.size() < m_uLinkageNum) return eInvalidIndex; OdDgAttributeLinkagePtr pLinkage = arrLinkages[m_uLinkageNum]; OdBinaryData binData; pLinkage->getData(binData); OdInt32 uLinkageDataSize = binData.size(); value = uLinkageDataSize; return eOk; } //==================================================================================================