在 forge 查看器中看不到“Revit Rooms”

问题描述 投票:0回答:1

我遇到一个问题,无法在 Forge Viewer 中访问 Revit 模型室。 我初始化 forge,当它加载几何体时,我将其保存在一个对象中

 updateViewerState(prevProps) {
        if (
            !prevProps ||
            (this.props.urn && this.props.urn !== prevProps.urn)
        ) {
            Autodesk.Viewing.Document.load(
                this.props.urn,
                (doc) => this.viewer
                    .loadDocumentNode(doc, doc.getRoot().getDefaultGeometry())
                    .then((i) => {
                        getAllProperties(this.viewer, this.props.setData);
                    }),
                (code, message, errors) => {
                    console.log(code, message, errors);
                    console.log(code);
                    console.log(message)
                    console.log(errors)
                    toast.error("ERROR loading model")
                    toast.error("Go back and reload the page")

                }
            );
        

我的函数 getAllProperties 是这个>

   export function getAllProperties(viewer, setData) {
    var tree = viewer.model.getInstanceTree()
    if (tree === undefined) {
        setTimeout(() => {
            getAllProperties(viewer, setData)
        }, 500)
        return
    }
    var categories = {}
    var promises = []

    tree.enumNodeChildren(tree.getRootId(),function (dbId) {
       
            if (tree.getChildCount(dbId) === 0) {
                var promise = new Promise(function (resolve, reject) {
                    viewer.getProperties(dbId, function (props) {
                        var elementData = {
                            dbId: dbId,
                            name: props.name,
                            externalId: props.externalId,
                        }

                        for (var i = 0; i < props.properties.length; i++) {
                            var propDisplayName =
                                props.properties[i].displayName
                            var propDisplayValue =
                                props.properties[i].displayValue

                            // Si el valor es null, no lo procese
                            if (propDisplayValue === null) continue

                            switch (propDisplayName) {
                                case 'Category':
                                    elementData.categoryValue =
                                        props.properties[i].displayValue
                                    // console.log(props.properties[i].displayValue)

为什么没有出现“Revit Rooms”类别?

我做错了什么吗?

three.js autodesk-forge autodesk-viewer autodesk autodesk-model-derivative
1个回答
0
投票

Revit 房间仅在查看器的 Revit 主视图中可见,因此请确保使用查看器加载主视图,而不是普通的 Revit 视图。

// Method 1:
const root = viewerDocument.getRoot() ;
const viewables = root.search({'type': 'geometry', 'role': '3d'});
console.log ('Viewables:' , viewables);
const phaseViews = viewables.filter (v => v.data.name === v.data.phaseNames
&& v.getViewableRootPath().includes('08f99ae5-b8be-4f8d-881b-128675723c10'));  // pass the guid
console.log('Master Views:', phaseViews);

// Method 2: if you just have one master view (phase) inside your model.
viewerDocument.getRoot().getDefaultGeometry(true);

参考:

© www.soinside.com 2019 - 2024. All rights reserved.