OdPrcMarkupLinkedItem 有何用途?
OdPrcMarkupLinkedItem 类似于 OdPrcReference。作为 OdPrcReference,它可用于覆盖实体的位置、外观和线型。但与 OdPrcReference 不同,OdPrcMarkupLinkedItem 仅在切换视图时应用这些更改。因此,每个 OdPrcView 都有自己的一组 OdPrcMarkupLinkedItem 项,可以更改当前视图中实体的渲染。
OdPrcMarkupLinkedItem 的结构
OdPrcMarkupLinkedItem 存储在 OdPrcProductOcurrence 中:
OdPrcMarkups & OdPrcProductOccurrence::markups();
const OdPrcMarkups & OdPrcProductOccurrence::markups() const;
OdPrcObjectIdArray & OdPrcMarkups::linkedItem();
const OdPrcObjectIdArray & OdPrcMarkups::linkedItem() const;
OdPrcView 存储指向这些 OdPrcMarkupLinkedItem 的链接:
OdPrcObjectIdArray & OdPrcView::linkedItems();
const OdPrcObjectIdArray & OdPrcView::linkedItems() const;
OdPrcMarkupLinkedItem 有两个链接。
第一个链接指向图形参数被覆盖的实体:
OdPrcReferenceData & OdPrcMarkupLinkedItem::referenceData();
const OdPrcReferenceData & OdPrcMarkupLinkedItem::referenceData() const;
第二个链接指向包含此实体的树子部分:(*)<>/p
OdPrcReferenceData & OdPrcMarkupLinkedItem::referencedProductOccurrence();
const OdPrcReferenceData & OdPrcMarkupLinkedItem::referencedProductOccurrence() const;
实体的新的坐标系取自:
OdPrcObjectId & OdPrcMarkupLinkedItem::localCoordinateSystem();
const OdPrcObjectId & OdPrcMarkupLinkedItem::localCoordinateSystem() const;
实体的新的图形参数取自:(**)
OdPrcGraphics & OdPrcMarkupLinkedItem::graphics();
const OdPrcGraphics & OdPrcMarkupLinkedItem::graphics() const;
(*) 目前,第二个链接不影响实体渲染;其实现更类似于 Tech Soft 3D HOOPS® 而非 Adobe®。
(**) 对于 OdPrcMarkupLinkedItem,Adobe 忽略 OdPrcGraphics 的所有行为位,除了 PRC_GRAPHICS_Show,因此它不考虑子/父继承或 PRC_GRAPHICS_Removed。这就是我们将其实现为类似于 HOOPS 的原因:OdPrcMarkupLinkedItem 的工作方式类似于 OdPrcGraphics。
OdPrcMarkupLinkedItem 影响示例
这是文件的默认视图:
下一张图片显示了我们正在切换到的 OdPrcView 的结构。您可以在 OdPrcView (283) 中看到 OdPrcMakrupLinkedItem 项的列表。您还可以看到 OdPrcMakrupLinkedItem (24A) 覆盖了实体 OdPrcProductOccurrence (50),因此对于此视图实体,我们将有:
- OdPrcCategory1LineStyle (298) 作为其线型。
- OdPrcCoordinateSystem (24B) 作为其位置。
- (11 == PRC_GRAPHICS_Show | PRC_GRAPHICS_SonHeritShow | PRC_GRAPHICS_SonHeritColor) 作为其行为位字段。
这是同一个文件,但切换到另一个视图: