@itwin/hypermodeling-frontend 5.0.0-dev.50 → 5.0.0-dev.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/SectionGraphicsProvider.d.ts.map +1 -1
- package/lib/cjs/SectionGraphicsProvider.js +6 -0
- package/lib/cjs/SectionGraphicsProvider.js.map +1 -1
- package/lib/esm/SectionGraphicsProvider.d.ts.map +1 -1
- package/lib/esm/SectionGraphicsProvider.js +6 -0
- package/lib/esm/SectionGraphicsProvider.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionGraphicsProvider.d.ts","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAE+J,qBAAqB,EAE1L,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"SectionGraphicsProvider.d.ts","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAE+J,qBAAqB,EAE1L,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAsU5E;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAStH"}
|
|
@@ -252,6 +252,12 @@ class SectionGraphicsProvider {
|
|
|
252
252
|
if (undefined !== this._sheetRef)
|
|
253
253
|
func(this._sheetRef);
|
|
254
254
|
}
|
|
255
|
+
*getReferences() {
|
|
256
|
+
yield this._drawingRef;
|
|
257
|
+
if (this._sheetRef) {
|
|
258
|
+
yield this._sheetRef;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
255
261
|
}
|
|
256
262
|
/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).
|
|
257
263
|
* Typically used indirectly via [[HyperModelingDecorator]].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionGraphicsProvider.js","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module HyperModeling\n */\n\nimport { assert, compareBooleans, compareStrings, Id64 } from \"@itwin/core-bentley\";\nimport { ClipShape, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ColorDef, Placement2d, ViewAttachmentProps, ViewDefinition2dProps, ViewFlagOverrides } from \"@itwin/core-common\";\nimport {\n CategorySelectorState, DisclosedTileTreeSet, DisplayStyle2dState, DrawingViewState,\n FeatureSymbology, GeometricModel2dState, GraphicBranch, HitDetail, IModelApp, IModelConnection, RenderClipVolume, RenderSystem, SheetModelState, Tile, TileContent, TiledGraphicsProvider, TileDrawArgs,\n TileLoadPriority, TileRequest, TileRequestChannel, TileTree, TileTreeOwner, TileTreeReference, TileTreeSupplier, Viewport, ViewState2d,\n} from \"@itwin/core-frontend\";\nimport { SectionDrawingLocationState } from \"./SectionDrawingLocationState\";\nimport { HyperModeling } from \"./HyperModeling\";\n\ninterface ProxyTreeId {\n state: SectionDrawingLocationState;\n isSheet: boolean;\n attachment?: ViewAttachmentProps;\n}\n\ninterface ProxyTreeParams {\n tree: TileTree;\n ref: TileTreeReference;\n view: ViewState2d;\n state: SectionDrawingLocationState;\n attachment?: ViewAttachmentProps;\n}\n\nclass ProxyTreeSupplier implements TileTreeSupplier {\n public compareTileTreeIds(lhs: ProxyTreeId, rhs: ProxyTreeId): number {\n let cmp = compareBooleans(lhs.isSheet, rhs.isSheet);\n if (0 === cmp)\n cmp = compareStrings(lhs.state.id, rhs.state.id);\n\n return cmp;\n }\n\n public async createTileTree(id: ProxyTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n let view;\n if (id.isSheet) {\n assert(undefined !== id.attachment);\n view = await this.createSheetViewState(id.state, id.attachment);\n } else {\n view = await id.state.tryLoadDrawingView();\n }\n\n if (undefined === view)\n return undefined;\n\n try {\n await iModel.models.load(view.baseModelId);\n const model = iModel.models.getLoaded(view.baseModelId);\n if (undefined === model || !(model instanceof GeometricModel2dState))\n return undefined;\n\n const treeRef = model.createTileTreeReference(view);\n const tree = await treeRef.treeOwner.loadTree();\n if (undefined === tree)\n return undefined;\n\n const ctor = id.isSheet ? SheetProxyTree : DrawingProxyTree;\n return new ctor({ tree, ref: treeRef, view, state: id.state, attachment: id.attachment });\n } catch {\n return undefined;\n }\n }\n\n private async createSheetViewState(state: SectionDrawingLocationState, attachment: ViewAttachmentProps): Promise<DrawingViewState | undefined> {\n assert(undefined !== state.viewAttachment);\n try {\n // A persistent view of the sheet doesn't necessarily exist, and we don't want a SheetViewState anyway.\n // All we want is to draw all the elements in the sheet (sans view attachments) clipped by the drawing boundary.\n // However, ModelState.createTileTreeReference() requires a ViewState.\n await state.iModel.models.load(attachment.model);\n const sheet = state.iModel.models.getLoaded(attachment.model);\n if (undefined === sheet || !(sheet instanceof SheetModelState))\n return undefined;\n\n const sheetExtents = await sheet.queryModelRange();\n const viewProps: ViewDefinition2dProps = {\n baseModelId: attachment.model,\n origin: { x: 0, y: 0 },\n delta: { x: sheetExtents.high.x, y: sheetExtents.high.y },\n angle: 0,\n categorySelectorId: Id64.invalid,\n displayStyleId: Id64.invalid,\n model: Id64.invalid,\n code: {\n spec: Id64.invalid,\n scope: Id64.invalid,\n },\n classFullName: DrawingViewState.classFullName,\n };\n\n const displayStyle = new DisplayStyle2dState({} as any, state.iModel);\n const categorySelector = new CategorySelectorState({} as any, state.iModel);\n\n return new DrawingViewState(viewProps, state.iModel, categorySelector, displayStyle, sheetExtents);\n } catch {\n return undefined;\n }\n }\n}\n\nconst proxyTreeSupplier = new ProxyTreeSupplier();\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nclass ProxyTreeReference extends TileTreeReference {\n private readonly _owner: TileTreeOwner;\n\n public constructor(id: ProxyTreeId) {\n super();\n this._owner = id.state.iModel.tiles.getTileTreeOwner(id, proxyTreeSupplier);\n }\n\n public override get castsShadows() {\n return false;\n }\n\n public override getClipVolume(tree: TileTree) {\n return true !== HyperModeling.graphicsConfig.ignoreClip ? super.getClipVolume(tree) : undefined;\n }\n\n public get treeOwner() { return this._owner; }\n\n private get _proxiedRef(): TileTreeReference | undefined {\n const proxiedTree = this.treeOwner.tileTree as ProxyTree;\n return undefined !== proxiedTree ? proxiedTree.ref : undefined;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n const ref = this._proxiedRef;\n if (undefined !== ref)\n ref.discloseTileTrees(trees);\n }\n\n public override async getToolTip(hit: HitDetail) {\n const ref = this._proxiedRef;\n return undefined !== ref ? ref.getToolTip(hit) : super.getToolTip(hit);\n }\n}\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nabstract class ProxyTree extends TileTree {\n private readonly _rootTile: ProxyTile;\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly tree: TileTree;\n public readonly ref: TileTreeReference;\n public readonly symbologyOverrides: FeatureSymbology.Overrides;\n\n protected constructor(params: ProxyTreeParams, location: Transform, clipVolume: RenderClipVolume | undefined) {\n const { tree, ref, view } = { ...params };\n super({\n id: params.state.id,\n modelId: tree.modelId,\n iModel: tree.iModel,\n location,\n priority: TileLoadPriority.Primary,\n clipVolume,\n });\n\n this.tree = tree;\n this.ref = ref;\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n\n const range = tree.iModelTransform.multiplyRange(tree.rootTile.range);\n const inverse = location.inverse();\n if (undefined !== inverse)\n inverse.multiplyRange(range, range);\n\n this._viewFlagOverrides = {\n ...view.viewFlags,\n lighting: false,\n // View clip (section clip) should not apply to 2d graphics.\n clipVolume: false,\n };\n\n this._rootTile = new ProxyTile(this, range);\n }\n\n public get rootTile(): ProxyTile { return this._rootTile; }\n public get viewFlagOverrides() { return this._viewFlagOverrides; }\n public get is3d() { return false; }\n public override get isContentUnbounded() { return false; }\n public get maxDepth() { return 1; }\n\n protected abstract get isDisplayed(): boolean;\n\n public draw(args: TileDrawArgs): void {\n if (!this.isDisplayed)\n return;\n\n const tiles = this.selectTiles(args);\n for (const tile of tiles)\n tile.drawGraphics(args);\n\n args.drawGraphics();\n }\n\n protected _selectTiles(_args: TileDrawArgs): Tile[] {\n return this.isDisplayed ? [this.rootTile] : [];\n }\n\n public prune(): void {\n // Our single tile is only a proxy. Our proxied tree(s) will be pruned separately\n }\n}\n\nclass DrawingProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n const location = state.drawingToSpatialTransform.clone();\n\n let clipVolume;\n if (attachment) {\n assert(undefined !== state.viewAttachment);\n const clipJSON = attachment.jsonProperties?.clip;\n const clip = clipJSON ? ClipVector.fromJSON(clipJSON) : ClipVector.createEmpty();\n if (!clipJSON) {\n const placement = Placement2d.fromJSON(attachment.placement);\n const range = placement.calculateRange();\n clip.appendShape([\n Point3d.create(range.low.x, range.low.y),\n Point3d.create(range.high.x, range.low.y),\n Point3d.create(range.high.x, range.high.y),\n Point3d.create(range.low.x, range.high.y),\n ]);\n }\n\n if (clip.isValid) {\n const sheetToWorld = state.viewAttachment.transformToSpatial.clone();\n clip.transformInPlace(sheetToWorld);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n }\n\n super(params, location, clipVolume);\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSectionGraphics; }\n}\n\nclass SheetProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n assert(undefined !== state.viewAttachment);\n assert(undefined !== attachment);\n const location = state.viewAttachment.transformToSpatial.clone();\n\n let clipVolume;\n if (state.viewAttachment.clip)\n clipVolume = IModelApp.renderSystem.createClipVolume(state.viewAttachment.clip);\n\n super(params, location, clipVolume);\n\n // Our view is manufactured. It draws everything regardless of subcategory.\n this.symbologyOverrides.ignoreSubCategory = true;\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSheetAnnotations; }\n}\n\n/** The single Tile belonging to a ProxyTree, serving as a proxy for all of the proxied tree's tiles. */\nclass ProxyTile extends Tile {\n public constructor(tree: ProxyTree, range: Range3d) {\n super({ contentId: \"\", range, maximumSize: 512, isLeaf: true }, tree);\n this.setIsReady();\n }\n\n public get hasChildren() { return false; }\n public override get hasGraphics() { return true; }\n\n public get channel(): TileRequestChannel { throw new Error(\"Proxy tile has no content\"); }\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\n protected _loadChildren(_resolve: (children: Tile[]) => void, _reject: (error: Error) => void): void { }\n\n public override drawGraphics(args: TileDrawArgs) {\n const proxyTree = this.tree as ProxyTree;\n const sectionTree = proxyTree.tree;\n\n const location = proxyTree.iModelTransform.multiplyTransformTransform(sectionTree.iModelTransform);\n const clipVolume = true === proxyTree.viewFlagOverrides.clipVolume ? proxyTree.clipVolume : undefined;\n args = new TileDrawArgs({ context: args.context, location, tree: sectionTree, now: args.now, viewFlagOverrides: proxyTree.viewFlagOverrides, clipVolume, parentsAndChildrenExclusive: args.parentsAndChildrenExclusive, symbologyOverrides: proxyTree.symbologyOverrides });\n sectionTree.draw(args);\n\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n\n if (true !== HyperModeling.graphicsConfig.debugClipVolumes || undefined === proxyTree.clipVolume)\n return;\n\n const builder = args.context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.red, ColorDef.red, 2);\n for (const prim of proxyTree.clipVolume.clipVector.clips) {\n if (!(prim instanceof ClipShape))\n continue;\n\n const tf = prim.transformFromClip;\n const pts = prim.polygon.map((pt) => tf ? tf.multiplyPoint3d(pt) : pt.clone());\n builder.addLineString(pts);\n }\n\n const branch = new GraphicBranch();\n branch.entries.push(builder.finish());\n branch.setViewFlagOverrides({ clipVolume: false });\n args.context.outputGraphic(args.context.createGraphicBranch(branch, Transform.createIdentity()));\n }\n}\n\n/** Draws the 2d section graphics into the 3d view. */\nclass SectionGraphicsProvider implements TiledGraphicsProvider {\n private readonly _drawingRef: TileTreeReference;\n private readonly _sheetRef?: TileTreeReference;\n\n public constructor(state: SectionDrawingLocationState, attachment: ViewAttachmentProps | undefined) {\n this._drawingRef = new ProxyTreeReference({ state, attachment, isSheet: false });\n if (attachment)\n this._sheetRef = new ProxyTreeReference({ state, attachment, isSheet: true });\n }\n\n public forEachTileTreeRef(_viewport: Viewport, func: (ref: TileTreeReference) => void): void {\n func(this._drawingRef);\n if (undefined !== this._sheetRef)\n func(this._sheetRef);\n }\n}\n\n/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).\n * Typically used indirectly via [[HyperModelingDecorator]].\n * @param state The section drawing location specifying which section drawing to display.\n * @returns A provider suitable for passing to [Viewport.addTiledGraphicsProvider]($frontend).\n * @see [[HyperModelingDecorator.toggleAttachment]] to activate section graphics for a given [[SectionMarker]].\n * @public\n */\nexport async function createSectionGraphicsProvider(state: SectionDrawingLocationState): Promise<TiledGraphicsProvider> {\n let attachment;\n if (undefined !== state.viewAttachment) {\n const attachments = await state.iModel.elements.getProps(state.viewAttachment.id) as ViewAttachmentProps[];\n if (1 === attachments.length)\n attachment = attachments[0];\n }\n\n return new SectionGraphicsProvider(state, attachment);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SectionGraphicsProvider.js","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module HyperModeling\n */\n\nimport { assert, compareBooleans, compareStrings, Id64 } from \"@itwin/core-bentley\";\nimport { ClipShape, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ColorDef, Placement2d, ViewAttachmentProps, ViewDefinition2dProps, ViewFlagOverrides } from \"@itwin/core-common\";\nimport {\n CategorySelectorState, DisclosedTileTreeSet, DisplayStyle2dState, DrawingViewState,\n FeatureSymbology, GeometricModel2dState, GraphicBranch, HitDetail, IModelApp, IModelConnection, RenderClipVolume, RenderSystem, SheetModelState, Tile, TileContent, TiledGraphicsProvider, TileDrawArgs,\n TileLoadPriority, TileRequest, TileRequestChannel, TileTree, TileTreeOwner, TileTreeReference, TileTreeSupplier, Viewport, ViewState2d,\n} from \"@itwin/core-frontend\";\nimport { SectionDrawingLocationState } from \"./SectionDrawingLocationState\";\nimport { HyperModeling } from \"./HyperModeling\";\n\ninterface ProxyTreeId {\n state: SectionDrawingLocationState;\n isSheet: boolean;\n attachment?: ViewAttachmentProps;\n}\n\ninterface ProxyTreeParams {\n tree: TileTree;\n ref: TileTreeReference;\n view: ViewState2d;\n state: SectionDrawingLocationState;\n attachment?: ViewAttachmentProps;\n}\n\nclass ProxyTreeSupplier implements TileTreeSupplier {\n public compareTileTreeIds(lhs: ProxyTreeId, rhs: ProxyTreeId): number {\n let cmp = compareBooleans(lhs.isSheet, rhs.isSheet);\n if (0 === cmp)\n cmp = compareStrings(lhs.state.id, rhs.state.id);\n\n return cmp;\n }\n\n public async createTileTree(id: ProxyTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n let view;\n if (id.isSheet) {\n assert(undefined !== id.attachment);\n view = await this.createSheetViewState(id.state, id.attachment);\n } else {\n view = await id.state.tryLoadDrawingView();\n }\n\n if (undefined === view)\n return undefined;\n\n try {\n await iModel.models.load(view.baseModelId);\n const model = iModel.models.getLoaded(view.baseModelId);\n if (undefined === model || !(model instanceof GeometricModel2dState))\n return undefined;\n\n const treeRef = model.createTileTreeReference(view);\n const tree = await treeRef.treeOwner.loadTree();\n if (undefined === tree)\n return undefined;\n\n const ctor = id.isSheet ? SheetProxyTree : DrawingProxyTree;\n return new ctor({ tree, ref: treeRef, view, state: id.state, attachment: id.attachment });\n } catch {\n return undefined;\n }\n }\n\n private async createSheetViewState(state: SectionDrawingLocationState, attachment: ViewAttachmentProps): Promise<DrawingViewState | undefined> {\n assert(undefined !== state.viewAttachment);\n try {\n // A persistent view of the sheet doesn't necessarily exist, and we don't want a SheetViewState anyway.\n // All we want is to draw all the elements in the sheet (sans view attachments) clipped by the drawing boundary.\n // However, ModelState.createTileTreeReference() requires a ViewState.\n await state.iModel.models.load(attachment.model);\n const sheet = state.iModel.models.getLoaded(attachment.model);\n if (undefined === sheet || !(sheet instanceof SheetModelState))\n return undefined;\n\n const sheetExtents = await sheet.queryModelRange();\n const viewProps: ViewDefinition2dProps = {\n baseModelId: attachment.model,\n origin: { x: 0, y: 0 },\n delta: { x: sheetExtents.high.x, y: sheetExtents.high.y },\n angle: 0,\n categorySelectorId: Id64.invalid,\n displayStyleId: Id64.invalid,\n model: Id64.invalid,\n code: {\n spec: Id64.invalid,\n scope: Id64.invalid,\n },\n classFullName: DrawingViewState.classFullName,\n };\n\n const displayStyle = new DisplayStyle2dState({} as any, state.iModel);\n const categorySelector = new CategorySelectorState({} as any, state.iModel);\n\n return new DrawingViewState(viewProps, state.iModel, categorySelector, displayStyle, sheetExtents);\n } catch {\n return undefined;\n }\n }\n}\n\nconst proxyTreeSupplier = new ProxyTreeSupplier();\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nclass ProxyTreeReference extends TileTreeReference {\n private readonly _owner: TileTreeOwner;\n\n public constructor(id: ProxyTreeId) {\n super();\n this._owner = id.state.iModel.tiles.getTileTreeOwner(id, proxyTreeSupplier);\n }\n\n public override get castsShadows() {\n return false;\n }\n\n public override getClipVolume(tree: TileTree) {\n return true !== HyperModeling.graphicsConfig.ignoreClip ? super.getClipVolume(tree) : undefined;\n }\n\n public get treeOwner() { return this._owner; }\n\n private get _proxiedRef(): TileTreeReference | undefined {\n const proxiedTree = this.treeOwner.tileTree as ProxyTree;\n return undefined !== proxiedTree ? proxiedTree.ref : undefined;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n const ref = this._proxiedRef;\n if (undefined !== ref)\n ref.discloseTileTrees(trees);\n }\n\n public override async getToolTip(hit: HitDetail) {\n const ref = this._proxiedRef;\n return undefined !== ref ? ref.getToolTip(hit) : super.getToolTip(hit);\n }\n}\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nabstract class ProxyTree extends TileTree {\n private readonly _rootTile: ProxyTile;\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly tree: TileTree;\n public readonly ref: TileTreeReference;\n public readonly symbologyOverrides: FeatureSymbology.Overrides;\n\n protected constructor(params: ProxyTreeParams, location: Transform, clipVolume: RenderClipVolume | undefined) {\n const { tree, ref, view } = { ...params };\n super({\n id: params.state.id,\n modelId: tree.modelId,\n iModel: tree.iModel,\n location,\n priority: TileLoadPriority.Primary,\n clipVolume,\n });\n\n this.tree = tree;\n this.ref = ref;\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n\n const range = tree.iModelTransform.multiplyRange(tree.rootTile.range);\n const inverse = location.inverse();\n if (undefined !== inverse)\n inverse.multiplyRange(range, range);\n\n this._viewFlagOverrides = {\n ...view.viewFlags,\n lighting: false,\n // View clip (section clip) should not apply to 2d graphics.\n clipVolume: false,\n };\n\n this._rootTile = new ProxyTile(this, range);\n }\n\n public get rootTile(): ProxyTile { return this._rootTile; }\n public get viewFlagOverrides() { return this._viewFlagOverrides; }\n public get is3d() { return false; }\n public override get isContentUnbounded() { return false; }\n public get maxDepth() { return 1; }\n\n protected abstract get isDisplayed(): boolean;\n\n public draw(args: TileDrawArgs): void {\n if (!this.isDisplayed)\n return;\n\n const tiles = this.selectTiles(args);\n for (const tile of tiles)\n tile.drawGraphics(args);\n\n args.drawGraphics();\n }\n\n protected _selectTiles(_args: TileDrawArgs): Tile[] {\n return this.isDisplayed ? [this.rootTile] : [];\n }\n\n public prune(): void {\n // Our single tile is only a proxy. Our proxied tree(s) will be pruned separately\n }\n}\n\nclass DrawingProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n const location = state.drawingToSpatialTransform.clone();\n\n let clipVolume;\n if (attachment) {\n assert(undefined !== state.viewAttachment);\n const clipJSON = attachment.jsonProperties?.clip;\n const clip = clipJSON ? ClipVector.fromJSON(clipJSON) : ClipVector.createEmpty();\n if (!clipJSON) {\n const placement = Placement2d.fromJSON(attachment.placement);\n const range = placement.calculateRange();\n clip.appendShape([\n Point3d.create(range.low.x, range.low.y),\n Point3d.create(range.high.x, range.low.y),\n Point3d.create(range.high.x, range.high.y),\n Point3d.create(range.low.x, range.high.y),\n ]);\n }\n\n if (clip.isValid) {\n const sheetToWorld = state.viewAttachment.transformToSpatial.clone();\n clip.transformInPlace(sheetToWorld);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n }\n\n super(params, location, clipVolume);\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSectionGraphics; }\n}\n\nclass SheetProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n assert(undefined !== state.viewAttachment);\n assert(undefined !== attachment);\n const location = state.viewAttachment.transformToSpatial.clone();\n\n let clipVolume;\n if (state.viewAttachment.clip)\n clipVolume = IModelApp.renderSystem.createClipVolume(state.viewAttachment.clip);\n\n super(params, location, clipVolume);\n\n // Our view is manufactured. It draws everything regardless of subcategory.\n this.symbologyOverrides.ignoreSubCategory = true;\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSheetAnnotations; }\n}\n\n/** The single Tile belonging to a ProxyTree, serving as a proxy for all of the proxied tree's tiles. */\nclass ProxyTile extends Tile {\n public constructor(tree: ProxyTree, range: Range3d) {\n super({ contentId: \"\", range, maximumSize: 512, isLeaf: true }, tree);\n this.setIsReady();\n }\n\n public get hasChildren() { return false; }\n public override get hasGraphics() { return true; }\n\n public get channel(): TileRequestChannel { throw new Error(\"Proxy tile has no content\"); }\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\n protected _loadChildren(_resolve: (children: Tile[]) => void, _reject: (error: Error) => void): void { }\n\n public override drawGraphics(args: TileDrawArgs) {\n const proxyTree = this.tree as ProxyTree;\n const sectionTree = proxyTree.tree;\n\n const location = proxyTree.iModelTransform.multiplyTransformTransform(sectionTree.iModelTransform);\n const clipVolume = true === proxyTree.viewFlagOverrides.clipVolume ? proxyTree.clipVolume : undefined;\n args = new TileDrawArgs({ context: args.context, location, tree: sectionTree, now: args.now, viewFlagOverrides: proxyTree.viewFlagOverrides, clipVolume, parentsAndChildrenExclusive: args.parentsAndChildrenExclusive, symbologyOverrides: proxyTree.symbologyOverrides });\n sectionTree.draw(args);\n\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n\n if (true !== HyperModeling.graphicsConfig.debugClipVolumes || undefined === proxyTree.clipVolume)\n return;\n\n const builder = args.context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.red, ColorDef.red, 2);\n for (const prim of proxyTree.clipVolume.clipVector.clips) {\n if (!(prim instanceof ClipShape))\n continue;\n\n const tf = prim.transformFromClip;\n const pts = prim.polygon.map((pt) => tf ? tf.multiplyPoint3d(pt) : pt.clone());\n builder.addLineString(pts);\n }\n\n const branch = new GraphicBranch();\n branch.entries.push(builder.finish());\n branch.setViewFlagOverrides({ clipVolume: false });\n args.context.outputGraphic(args.context.createGraphicBranch(branch, Transform.createIdentity()));\n }\n}\n\n/** Draws the 2d section graphics into the 3d view. */\nclass SectionGraphicsProvider implements TiledGraphicsProvider {\n private readonly _drawingRef: TileTreeReference;\n private readonly _sheetRef?: TileTreeReference;\n\n public constructor(state: SectionDrawingLocationState, attachment: ViewAttachmentProps | undefined) {\n this._drawingRef = new ProxyTreeReference({ state, attachment, isSheet: false });\n if (attachment)\n this._sheetRef = new ProxyTreeReference({ state, attachment, isSheet: true });\n }\n\n public forEachTileTreeRef(_viewport: Viewport, func: (ref: TileTreeReference) => void): void {\n func(this._drawingRef);\n if (undefined !== this._sheetRef)\n func(this._sheetRef);\n }\n\n public * getReferences(): Iterable<TileTreeReference> {\n yield this._drawingRef;\n if (this._sheetRef) {\n yield this._sheetRef;\n }\n }\n}\n\n/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).\n * Typically used indirectly via [[HyperModelingDecorator]].\n * @param state The section drawing location specifying which section drawing to display.\n * @returns A provider suitable for passing to [Viewport.addTiledGraphicsProvider]($frontend).\n * @see [[HyperModelingDecorator.toggleAttachment]] to activate section graphics for a given [[SectionMarker]].\n * @public\n */\nexport async function createSectionGraphicsProvider(state: SectionDrawingLocationState): Promise<TiledGraphicsProvider> {\n let attachment;\n if (undefined !== state.viewAttachment) {\n const attachments = await state.iModel.elements.getProps(state.viewAttachment.id) as ViewAttachmentProps[];\n if (1 === attachments.length)\n attachment = attachments[0];\n }\n\n return new SectionGraphicsProvider(state, attachment);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionGraphicsProvider.d.ts","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAE+J,qBAAqB,EAE1L,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"SectionGraphicsProvider.d.ts","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAE+J,qBAAqB,EAE1L,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAsU5E;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAStH"}
|
|
@@ -249,6 +249,12 @@ class SectionGraphicsProvider {
|
|
|
249
249
|
if (undefined !== this._sheetRef)
|
|
250
250
|
func(this._sheetRef);
|
|
251
251
|
}
|
|
252
|
+
*getReferences() {
|
|
253
|
+
yield this._drawingRef;
|
|
254
|
+
if (this._sheetRef) {
|
|
255
|
+
yield this._sheetRef;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
252
258
|
}
|
|
253
259
|
/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).
|
|
254
260
|
* Typically used indirectly via [[HyperModelingDecorator]].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionGraphicsProvider.js","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module HyperModeling\n */\n\nimport { assert, compareBooleans, compareStrings, Id64 } from \"@itwin/core-bentley\";\nimport { ClipShape, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ColorDef, Placement2d, ViewAttachmentProps, ViewDefinition2dProps, ViewFlagOverrides } from \"@itwin/core-common\";\nimport {\n CategorySelectorState, DisclosedTileTreeSet, DisplayStyle2dState, DrawingViewState,\n FeatureSymbology, GeometricModel2dState, GraphicBranch, HitDetail, IModelApp, IModelConnection, RenderClipVolume, RenderSystem, SheetModelState, Tile, TileContent, TiledGraphicsProvider, TileDrawArgs,\n TileLoadPriority, TileRequest, TileRequestChannel, TileTree, TileTreeOwner, TileTreeReference, TileTreeSupplier, Viewport, ViewState2d,\n} from \"@itwin/core-frontend\";\nimport { SectionDrawingLocationState } from \"./SectionDrawingLocationState\";\nimport { HyperModeling } from \"./HyperModeling\";\n\ninterface ProxyTreeId {\n state: SectionDrawingLocationState;\n isSheet: boolean;\n attachment?: ViewAttachmentProps;\n}\n\ninterface ProxyTreeParams {\n tree: TileTree;\n ref: TileTreeReference;\n view: ViewState2d;\n state: SectionDrawingLocationState;\n attachment?: ViewAttachmentProps;\n}\n\nclass ProxyTreeSupplier implements TileTreeSupplier {\n public compareTileTreeIds(lhs: ProxyTreeId, rhs: ProxyTreeId): number {\n let cmp = compareBooleans(lhs.isSheet, rhs.isSheet);\n if (0 === cmp)\n cmp = compareStrings(lhs.state.id, rhs.state.id);\n\n return cmp;\n }\n\n public async createTileTree(id: ProxyTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n let view;\n if (id.isSheet) {\n assert(undefined !== id.attachment);\n view = await this.createSheetViewState(id.state, id.attachment);\n } else {\n view = await id.state.tryLoadDrawingView();\n }\n\n if (undefined === view)\n return undefined;\n\n try {\n await iModel.models.load(view.baseModelId);\n const model = iModel.models.getLoaded(view.baseModelId);\n if (undefined === model || !(model instanceof GeometricModel2dState))\n return undefined;\n\n const treeRef = model.createTileTreeReference(view);\n const tree = await treeRef.treeOwner.loadTree();\n if (undefined === tree)\n return undefined;\n\n const ctor = id.isSheet ? SheetProxyTree : DrawingProxyTree;\n return new ctor({ tree, ref: treeRef, view, state: id.state, attachment: id.attachment });\n } catch {\n return undefined;\n }\n }\n\n private async createSheetViewState(state: SectionDrawingLocationState, attachment: ViewAttachmentProps): Promise<DrawingViewState | undefined> {\n assert(undefined !== state.viewAttachment);\n try {\n // A persistent view of the sheet doesn't necessarily exist, and we don't want a SheetViewState anyway.\n // All we want is to draw all the elements in the sheet (sans view attachments) clipped by the drawing boundary.\n // However, ModelState.createTileTreeReference() requires a ViewState.\n await state.iModel.models.load(attachment.model);\n const sheet = state.iModel.models.getLoaded(attachment.model);\n if (undefined === sheet || !(sheet instanceof SheetModelState))\n return undefined;\n\n const sheetExtents = await sheet.queryModelRange();\n const viewProps: ViewDefinition2dProps = {\n baseModelId: attachment.model,\n origin: { x: 0, y: 0 },\n delta: { x: sheetExtents.high.x, y: sheetExtents.high.y },\n angle: 0,\n categorySelectorId: Id64.invalid,\n displayStyleId: Id64.invalid,\n model: Id64.invalid,\n code: {\n spec: Id64.invalid,\n scope: Id64.invalid,\n },\n classFullName: DrawingViewState.classFullName,\n };\n\n const displayStyle = new DisplayStyle2dState({} as any, state.iModel);\n const categorySelector = new CategorySelectorState({} as any, state.iModel);\n\n return new DrawingViewState(viewProps, state.iModel, categorySelector, displayStyle, sheetExtents);\n } catch {\n return undefined;\n }\n }\n}\n\nconst proxyTreeSupplier = new ProxyTreeSupplier();\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nclass ProxyTreeReference extends TileTreeReference {\n private readonly _owner: TileTreeOwner;\n\n public constructor(id: ProxyTreeId) {\n super();\n this._owner = id.state.iModel.tiles.getTileTreeOwner(id, proxyTreeSupplier);\n }\n\n public override get castsShadows() {\n return false;\n }\n\n public override getClipVolume(tree: TileTree) {\n return true !== HyperModeling.graphicsConfig.ignoreClip ? super.getClipVolume(tree) : undefined;\n }\n\n public get treeOwner() { return this._owner; }\n\n private get _proxiedRef(): TileTreeReference | undefined {\n const proxiedTree = this.treeOwner.tileTree as ProxyTree;\n return undefined !== proxiedTree ? proxiedTree.ref : undefined;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n const ref = this._proxiedRef;\n if (undefined !== ref)\n ref.discloseTileTrees(trees);\n }\n\n public override async getToolTip(hit: HitDetail) {\n const ref = this._proxiedRef;\n return undefined !== ref ? ref.getToolTip(hit) : super.getToolTip(hit);\n }\n}\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nabstract class ProxyTree extends TileTree {\n private readonly _rootTile: ProxyTile;\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly tree: TileTree;\n public readonly ref: TileTreeReference;\n public readonly symbologyOverrides: FeatureSymbology.Overrides;\n\n protected constructor(params: ProxyTreeParams, location: Transform, clipVolume: RenderClipVolume | undefined) {\n const { tree, ref, view } = { ...params };\n super({\n id: params.state.id,\n modelId: tree.modelId,\n iModel: tree.iModel,\n location,\n priority: TileLoadPriority.Primary,\n clipVolume,\n });\n\n this.tree = tree;\n this.ref = ref;\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n\n const range = tree.iModelTransform.multiplyRange(tree.rootTile.range);\n const inverse = location.inverse();\n if (undefined !== inverse)\n inverse.multiplyRange(range, range);\n\n this._viewFlagOverrides = {\n ...view.viewFlags,\n lighting: false,\n // View clip (section clip) should not apply to 2d graphics.\n clipVolume: false,\n };\n\n this._rootTile = new ProxyTile(this, range);\n }\n\n public get rootTile(): ProxyTile { return this._rootTile; }\n public get viewFlagOverrides() { return this._viewFlagOverrides; }\n public get is3d() { return false; }\n public override get isContentUnbounded() { return false; }\n public get maxDepth() { return 1; }\n\n protected abstract get isDisplayed(): boolean;\n\n public draw(args: TileDrawArgs): void {\n if (!this.isDisplayed)\n return;\n\n const tiles = this.selectTiles(args);\n for (const tile of tiles)\n tile.drawGraphics(args);\n\n args.drawGraphics();\n }\n\n protected _selectTiles(_args: TileDrawArgs): Tile[] {\n return this.isDisplayed ? [this.rootTile] : [];\n }\n\n public prune(): void {\n // Our single tile is only a proxy. Our proxied tree(s) will be pruned separately\n }\n}\n\nclass DrawingProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n const location = state.drawingToSpatialTransform.clone();\n\n let clipVolume;\n if (attachment) {\n assert(undefined !== state.viewAttachment);\n const clipJSON = attachment.jsonProperties?.clip;\n const clip = clipJSON ? ClipVector.fromJSON(clipJSON) : ClipVector.createEmpty();\n if (!clipJSON) {\n const placement = Placement2d.fromJSON(attachment.placement);\n const range = placement.calculateRange();\n clip.appendShape([\n Point3d.create(range.low.x, range.low.y),\n Point3d.create(range.high.x, range.low.y),\n Point3d.create(range.high.x, range.high.y),\n Point3d.create(range.low.x, range.high.y),\n ]);\n }\n\n if (clip.isValid) {\n const sheetToWorld = state.viewAttachment.transformToSpatial.clone();\n clip.transformInPlace(sheetToWorld);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n }\n\n super(params, location, clipVolume);\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSectionGraphics; }\n}\n\nclass SheetProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n assert(undefined !== state.viewAttachment);\n assert(undefined !== attachment);\n const location = state.viewAttachment.transformToSpatial.clone();\n\n let clipVolume;\n if (state.viewAttachment.clip)\n clipVolume = IModelApp.renderSystem.createClipVolume(state.viewAttachment.clip);\n\n super(params, location, clipVolume);\n\n // Our view is manufactured. It draws everything regardless of subcategory.\n this.symbologyOverrides.ignoreSubCategory = true;\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSheetAnnotations; }\n}\n\n/** The single Tile belonging to a ProxyTree, serving as a proxy for all of the proxied tree's tiles. */\nclass ProxyTile extends Tile {\n public constructor(tree: ProxyTree, range: Range3d) {\n super({ contentId: \"\", range, maximumSize: 512, isLeaf: true }, tree);\n this.setIsReady();\n }\n\n public get hasChildren() { return false; }\n public override get hasGraphics() { return true; }\n\n public get channel(): TileRequestChannel { throw new Error(\"Proxy tile has no content\"); }\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\n protected _loadChildren(_resolve: (children: Tile[]) => void, _reject: (error: Error) => void): void { }\n\n public override drawGraphics(args: TileDrawArgs) {\n const proxyTree = this.tree as ProxyTree;\n const sectionTree = proxyTree.tree;\n\n const location = proxyTree.iModelTransform.multiplyTransformTransform(sectionTree.iModelTransform);\n const clipVolume = true === proxyTree.viewFlagOverrides.clipVolume ? proxyTree.clipVolume : undefined;\n args = new TileDrawArgs({ context: args.context, location, tree: sectionTree, now: args.now, viewFlagOverrides: proxyTree.viewFlagOverrides, clipVolume, parentsAndChildrenExclusive: args.parentsAndChildrenExclusive, symbologyOverrides: proxyTree.symbologyOverrides });\n sectionTree.draw(args);\n\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n\n if (true !== HyperModeling.graphicsConfig.debugClipVolumes || undefined === proxyTree.clipVolume)\n return;\n\n const builder = args.context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.red, ColorDef.red, 2);\n for (const prim of proxyTree.clipVolume.clipVector.clips) {\n if (!(prim instanceof ClipShape))\n continue;\n\n const tf = prim.transformFromClip;\n const pts = prim.polygon.map((pt) => tf ? tf.multiplyPoint3d(pt) : pt.clone());\n builder.addLineString(pts);\n }\n\n const branch = new GraphicBranch();\n branch.entries.push(builder.finish());\n branch.setViewFlagOverrides({ clipVolume: false });\n args.context.outputGraphic(args.context.createGraphicBranch(branch, Transform.createIdentity()));\n }\n}\n\n/** Draws the 2d section graphics into the 3d view. */\nclass SectionGraphicsProvider implements TiledGraphicsProvider {\n private readonly _drawingRef: TileTreeReference;\n private readonly _sheetRef?: TileTreeReference;\n\n public constructor(state: SectionDrawingLocationState, attachment: ViewAttachmentProps | undefined) {\n this._drawingRef = new ProxyTreeReference({ state, attachment, isSheet: false });\n if (attachment)\n this._sheetRef = new ProxyTreeReference({ state, attachment, isSheet: true });\n }\n\n public forEachTileTreeRef(_viewport: Viewport, func: (ref: TileTreeReference) => void): void {\n func(this._drawingRef);\n if (undefined !== this._sheetRef)\n func(this._sheetRef);\n }\n}\n\n/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).\n * Typically used indirectly via [[HyperModelingDecorator]].\n * @param state The section drawing location specifying which section drawing to display.\n * @returns A provider suitable for passing to [Viewport.addTiledGraphicsProvider]($frontend).\n * @see [[HyperModelingDecorator.toggleAttachment]] to activate section graphics for a given [[SectionMarker]].\n * @public\n */\nexport async function createSectionGraphicsProvider(state: SectionDrawingLocationState): Promise<TiledGraphicsProvider> {\n let attachment;\n if (undefined !== state.viewAttachment) {\n const attachments = await state.iModel.elements.getProps(state.viewAttachment.id) as ViewAttachmentProps[];\n if (1 === attachments.length)\n attachment = attachments[0];\n }\n\n return new SectionGraphicsProvider(state, attachment);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SectionGraphicsProvider.js","sourceRoot":"","sources":["../../src/SectionGraphicsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module HyperModeling\n */\n\nimport { assert, compareBooleans, compareStrings, Id64 } from \"@itwin/core-bentley\";\nimport { ClipShape, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ColorDef, Placement2d, ViewAttachmentProps, ViewDefinition2dProps, ViewFlagOverrides } from \"@itwin/core-common\";\nimport {\n CategorySelectorState, DisclosedTileTreeSet, DisplayStyle2dState, DrawingViewState,\n FeatureSymbology, GeometricModel2dState, GraphicBranch, HitDetail, IModelApp, IModelConnection, RenderClipVolume, RenderSystem, SheetModelState, Tile, TileContent, TiledGraphicsProvider, TileDrawArgs,\n TileLoadPriority, TileRequest, TileRequestChannel, TileTree, TileTreeOwner, TileTreeReference, TileTreeSupplier, Viewport, ViewState2d,\n} from \"@itwin/core-frontend\";\nimport { SectionDrawingLocationState } from \"./SectionDrawingLocationState\";\nimport { HyperModeling } from \"./HyperModeling\";\n\ninterface ProxyTreeId {\n state: SectionDrawingLocationState;\n isSheet: boolean;\n attachment?: ViewAttachmentProps;\n}\n\ninterface ProxyTreeParams {\n tree: TileTree;\n ref: TileTreeReference;\n view: ViewState2d;\n state: SectionDrawingLocationState;\n attachment?: ViewAttachmentProps;\n}\n\nclass ProxyTreeSupplier implements TileTreeSupplier {\n public compareTileTreeIds(lhs: ProxyTreeId, rhs: ProxyTreeId): number {\n let cmp = compareBooleans(lhs.isSheet, rhs.isSheet);\n if (0 === cmp)\n cmp = compareStrings(lhs.state.id, rhs.state.id);\n\n return cmp;\n }\n\n public async createTileTree(id: ProxyTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n let view;\n if (id.isSheet) {\n assert(undefined !== id.attachment);\n view = await this.createSheetViewState(id.state, id.attachment);\n } else {\n view = await id.state.tryLoadDrawingView();\n }\n\n if (undefined === view)\n return undefined;\n\n try {\n await iModel.models.load(view.baseModelId);\n const model = iModel.models.getLoaded(view.baseModelId);\n if (undefined === model || !(model instanceof GeometricModel2dState))\n return undefined;\n\n const treeRef = model.createTileTreeReference(view);\n const tree = await treeRef.treeOwner.loadTree();\n if (undefined === tree)\n return undefined;\n\n const ctor = id.isSheet ? SheetProxyTree : DrawingProxyTree;\n return new ctor({ tree, ref: treeRef, view, state: id.state, attachment: id.attachment });\n } catch {\n return undefined;\n }\n }\n\n private async createSheetViewState(state: SectionDrawingLocationState, attachment: ViewAttachmentProps): Promise<DrawingViewState | undefined> {\n assert(undefined !== state.viewAttachment);\n try {\n // A persistent view of the sheet doesn't necessarily exist, and we don't want a SheetViewState anyway.\n // All we want is to draw all the elements in the sheet (sans view attachments) clipped by the drawing boundary.\n // However, ModelState.createTileTreeReference() requires a ViewState.\n await state.iModel.models.load(attachment.model);\n const sheet = state.iModel.models.getLoaded(attachment.model);\n if (undefined === sheet || !(sheet instanceof SheetModelState))\n return undefined;\n\n const sheetExtents = await sheet.queryModelRange();\n const viewProps: ViewDefinition2dProps = {\n baseModelId: attachment.model,\n origin: { x: 0, y: 0 },\n delta: { x: sheetExtents.high.x, y: sheetExtents.high.y },\n angle: 0,\n categorySelectorId: Id64.invalid,\n displayStyleId: Id64.invalid,\n model: Id64.invalid,\n code: {\n spec: Id64.invalid,\n scope: Id64.invalid,\n },\n classFullName: DrawingViewState.classFullName,\n };\n\n const displayStyle = new DisplayStyle2dState({} as any, state.iModel);\n const categorySelector = new CategorySelectorState({} as any, state.iModel);\n\n return new DrawingViewState(viewProps, state.iModel, categorySelector, displayStyle, sheetExtents);\n } catch {\n return undefined;\n }\n }\n}\n\nconst proxyTreeSupplier = new ProxyTreeSupplier();\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nclass ProxyTreeReference extends TileTreeReference {\n private readonly _owner: TileTreeOwner;\n\n public constructor(id: ProxyTreeId) {\n super();\n this._owner = id.state.iModel.tiles.getTileTreeOwner(id, proxyTreeSupplier);\n }\n\n public override get castsShadows() {\n return false;\n }\n\n public override getClipVolume(tree: TileTree) {\n return true !== HyperModeling.graphicsConfig.ignoreClip ? super.getClipVolume(tree) : undefined;\n }\n\n public get treeOwner() { return this._owner; }\n\n private get _proxiedRef(): TileTreeReference | undefined {\n const proxiedTree = this.treeOwner.tileTree as ProxyTree;\n return undefined !== proxiedTree ? proxiedTree.ref : undefined;\n }\n\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n const ref = this._proxiedRef;\n if (undefined !== ref)\n ref.discloseTileTrees(trees);\n }\n\n public override async getToolTip(hit: HitDetail) {\n const ref = this._proxiedRef;\n return undefined !== ref ? ref.getToolTip(hit) : super.getToolTip(hit);\n }\n}\n\n/** A proxy for a 2d tile tree to be drawn in the context of a spatial view. */\nabstract class ProxyTree extends TileTree {\n private readonly _rootTile: ProxyTile;\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly tree: TileTree;\n public readonly ref: TileTreeReference;\n public readonly symbologyOverrides: FeatureSymbology.Overrides;\n\n protected constructor(params: ProxyTreeParams, location: Transform, clipVolume: RenderClipVolume | undefined) {\n const { tree, ref, view } = { ...params };\n super({\n id: params.state.id,\n modelId: tree.modelId,\n iModel: tree.iModel,\n location,\n priority: TileLoadPriority.Primary,\n clipVolume,\n });\n\n this.tree = tree;\n this.ref = ref;\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n\n const range = tree.iModelTransform.multiplyRange(tree.rootTile.range);\n const inverse = location.inverse();\n if (undefined !== inverse)\n inverse.multiplyRange(range, range);\n\n this._viewFlagOverrides = {\n ...view.viewFlags,\n lighting: false,\n // View clip (section clip) should not apply to 2d graphics.\n clipVolume: false,\n };\n\n this._rootTile = new ProxyTile(this, range);\n }\n\n public get rootTile(): ProxyTile { return this._rootTile; }\n public get viewFlagOverrides() { return this._viewFlagOverrides; }\n public get is3d() { return false; }\n public override get isContentUnbounded() { return false; }\n public get maxDepth() { return 1; }\n\n protected abstract get isDisplayed(): boolean;\n\n public draw(args: TileDrawArgs): void {\n if (!this.isDisplayed)\n return;\n\n const tiles = this.selectTiles(args);\n for (const tile of tiles)\n tile.drawGraphics(args);\n\n args.drawGraphics();\n }\n\n protected _selectTiles(_args: TileDrawArgs): Tile[] {\n return this.isDisplayed ? [this.rootTile] : [];\n }\n\n public prune(): void {\n // Our single tile is only a proxy. Our proxied tree(s) will be pruned separately\n }\n}\n\nclass DrawingProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n const location = state.drawingToSpatialTransform.clone();\n\n let clipVolume;\n if (attachment) {\n assert(undefined !== state.viewAttachment);\n const clipJSON = attachment.jsonProperties?.clip;\n const clip = clipJSON ? ClipVector.fromJSON(clipJSON) : ClipVector.createEmpty();\n if (!clipJSON) {\n const placement = Placement2d.fromJSON(attachment.placement);\n const range = placement.calculateRange();\n clip.appendShape([\n Point3d.create(range.low.x, range.low.y),\n Point3d.create(range.high.x, range.low.y),\n Point3d.create(range.high.x, range.high.y),\n Point3d.create(range.low.x, range.high.y),\n ]);\n }\n\n if (clip.isValid) {\n const sheetToWorld = state.viewAttachment.transformToSpatial.clone();\n clip.transformInPlace(sheetToWorld);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n }\n\n super(params, location, clipVolume);\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSectionGraphics; }\n}\n\nclass SheetProxyTree extends ProxyTree {\n public constructor(params: ProxyTreeParams) {\n const { state, attachment } = { ...params };\n assert(undefined !== state.viewAttachment);\n assert(undefined !== attachment);\n const location = state.viewAttachment.transformToSpatial.clone();\n\n let clipVolume;\n if (state.viewAttachment.clip)\n clipVolume = IModelApp.renderSystem.createClipVolume(state.viewAttachment.clip);\n\n super(params, location, clipVolume);\n\n // Our view is manufactured. It draws everything regardless of subcategory.\n this.symbologyOverrides.ignoreSubCategory = true;\n }\n\n protected get isDisplayed() { return true !== HyperModeling.graphicsConfig.hideSheetAnnotations; }\n}\n\n/** The single Tile belonging to a ProxyTree, serving as a proxy for all of the proxied tree's tiles. */\nclass ProxyTile extends Tile {\n public constructor(tree: ProxyTree, range: Range3d) {\n super({ contentId: \"\", range, maximumSize: 512, isLeaf: true }, tree);\n this.setIsReady();\n }\n\n public get hasChildren() { return false; }\n public override get hasGraphics() { return true; }\n\n public get channel(): TileRequestChannel { throw new Error(\"Proxy tile has no content\"); }\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\n protected _loadChildren(_resolve: (children: Tile[]) => void, _reject: (error: Error) => void): void { }\n\n public override drawGraphics(args: TileDrawArgs) {\n const proxyTree = this.tree as ProxyTree;\n const sectionTree = proxyTree.tree;\n\n const location = proxyTree.iModelTransform.multiplyTransformTransform(sectionTree.iModelTransform);\n const clipVolume = true === proxyTree.viewFlagOverrides.clipVolume ? proxyTree.clipVolume : undefined;\n args = new TileDrawArgs({ context: args.context, location, tree: sectionTree, now: args.now, viewFlagOverrides: proxyTree.viewFlagOverrides, clipVolume, parentsAndChildrenExclusive: args.parentsAndChildrenExclusive, symbologyOverrides: proxyTree.symbologyOverrides });\n sectionTree.draw(args);\n\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n\n if (true !== HyperModeling.graphicsConfig.debugClipVolumes || undefined === proxyTree.clipVolume)\n return;\n\n const builder = args.context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.red, ColorDef.red, 2);\n for (const prim of proxyTree.clipVolume.clipVector.clips) {\n if (!(prim instanceof ClipShape))\n continue;\n\n const tf = prim.transformFromClip;\n const pts = prim.polygon.map((pt) => tf ? tf.multiplyPoint3d(pt) : pt.clone());\n builder.addLineString(pts);\n }\n\n const branch = new GraphicBranch();\n branch.entries.push(builder.finish());\n branch.setViewFlagOverrides({ clipVolume: false });\n args.context.outputGraphic(args.context.createGraphicBranch(branch, Transform.createIdentity()));\n }\n}\n\n/** Draws the 2d section graphics into the 3d view. */\nclass SectionGraphicsProvider implements TiledGraphicsProvider {\n private readonly _drawingRef: TileTreeReference;\n private readonly _sheetRef?: TileTreeReference;\n\n public constructor(state: SectionDrawingLocationState, attachment: ViewAttachmentProps | undefined) {\n this._drawingRef = new ProxyTreeReference({ state, attachment, isSheet: false });\n if (attachment)\n this._sheetRef = new ProxyTreeReference({ state, attachment, isSheet: true });\n }\n\n public forEachTileTreeRef(_viewport: Viewport, func: (ref: TileTreeReference) => void): void {\n func(this._drawingRef);\n if (undefined !== this._sheetRef)\n func(this._sheetRef);\n }\n\n public * getReferences(): Iterable<TileTreeReference> {\n yield this._drawingRef;\n if (this._sheetRef) {\n yield this._sheetRef;\n }\n }\n}\n\n/** Creates a TiledGraphicsProvider that can be associated with a [Viewport]($frontend) to display 2d section graphics and annotations in the context of a [SpatialViewState]($frontend).\n * Typically used indirectly via [[HyperModelingDecorator]].\n * @param state The section drawing location specifying which section drawing to display.\n * @returns A provider suitable for passing to [Viewport.addTiledGraphicsProvider]($frontend).\n * @see [[HyperModelingDecorator.toggleAttachment]] to activate section graphics for a given [[SectionMarker]].\n * @public\n */\nexport async function createSectionGraphicsProvider(state: SectionDrawingLocationState): Promise<TiledGraphicsProvider> {\n let attachment;\n if (undefined !== state.viewAttachment) {\n const attachments = await state.iModel.elements.getProps(state.viewAttachment.id) as ViewAttachmentProps[];\n if (1 === attachments.length)\n attachment = attachments[0];\n }\n\n return new SectionGraphicsProvider(state, attachment);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/hypermodeling-frontend",
|
|
3
|
-
"version": "5.0.0-dev.
|
|
3
|
+
"version": "5.0.0-dev.53",
|
|
4
4
|
"description": "iTwin.js hypermodeling package",
|
|
5
5
|
"main": "lib/cjs/hypermodeling-frontend.js",
|
|
6
6
|
"module": "lib/esm/hypermodeling-frontend.js",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"url": "http://www.bentley.com"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@itwin/core-
|
|
26
|
-
"@itwin/core-frontend": "5.0.0-dev.
|
|
27
|
-
"@itwin/core-
|
|
28
|
-
"@itwin/core-
|
|
25
|
+
"@itwin/core-bentley": "5.0.0-dev.53",
|
|
26
|
+
"@itwin/core-frontend": "5.0.0-dev.53",
|
|
27
|
+
"@itwin/core-geometry": "5.0.0-dev.53",
|
|
28
|
+
"@itwin/core-common": "5.0.0-dev.53"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@itwin/eslint-plugin": "5.0.0-dev.1",
|
|
@@ -43,15 +43,15 @@
|
|
|
43
43
|
"source-map-loader": "^4.0.0",
|
|
44
44
|
"typescript": "~5.6.2",
|
|
45
45
|
"webpack": "^5.97.1",
|
|
46
|
-
"@itwin/
|
|
47
|
-
"@itwin/core-common": "5.0.0-dev.
|
|
48
|
-
"@itwin/core-
|
|
49
|
-
"@itwin/core-
|
|
50
|
-
"@itwin/
|
|
51
|
-
"@itwin/certa": "5.0.0-dev.
|
|
46
|
+
"@itwin/core-frontend": "5.0.0-dev.53",
|
|
47
|
+
"@itwin/core-common": "5.0.0-dev.53",
|
|
48
|
+
"@itwin/core-geometry": "5.0.0-dev.53",
|
|
49
|
+
"@itwin/core-bentley": "5.0.0-dev.53",
|
|
50
|
+
"@itwin/build-tools": "5.0.0-dev.53",
|
|
51
|
+
"@itwin/certa": "5.0.0-dev.53"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@itwin/appui-abstract": "5.0.0-dev.
|
|
54
|
+
"@itwin/appui-abstract": "5.0.0-dev.53"
|
|
55
55
|
},
|
|
56
56
|
"nyc": {
|
|
57
57
|
"extends": "./node_modules/@itwin/build-tools/.nycrc"
|