「翻译」使用 Autodesk.Viewing.MarkupsCore 括展

本文介绍如何使用Autodesk.Viewing.MarkupsCore扩展在Viewerv2.16中进行标注涂鸦,并提供了如何保存及恢复这些涂鸦的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让我们来体验 Viewer v2.16 Autodesk.Viewing.MarkupsCore 的功能。首先要先确保你使用的 viewer 版号是正确的:

<link rel="stylesheet" href="https://developer.api.autodesk.com/derivativeservice/v1/viewers/style.min.css?v=v2.16" type="text/css" />
<script src="https://developer.api.autodesk.com/derivativeservice/v1/viewers/three.min.js"></script>
<script src="https://developer.api.autodesk.com/derivativeservice/v1/viewers/viewer3D.min.js?v=v2.16"></script>

你知道可以透过浏览器的开发者工具直接测试代码吗?透过开发者工具就不用重整网页页面来载入新写好的代码,是不是很方便呢?!现在我们透过 Promise 来载入扩展:

let markup;
NOP_VIEWER.loadExtension( 'Autodesk.Viewing.MarkupsCore' ).then( ( markupsExt ) => {
  markup = markupsExt;
});

这是上面代码在 Console 执行的结果:
代码在 Console 执行的结果

现在让我们在画面上加入云形线标注涂丫:

markup.enterEditMode();
const cloud = new Autodesk.Viewing.Extensions.Markups.Core.EditModeCloud( markup );
markup.changeEditMode( cloud );

那么他的执行结果就像这个样子:
加入云形线标注

那么我们有哪些形式的标注涂丫可以使用呢?在 Viewer 里有提供这些选项可以使用:

Autodesk.Viewing.Extensions.Markups.Core.EditModeArrow
Autodesk.Viewing.Extensions.Markups.Core.EditModeCircle
Autodesk.Viewing.Extensions.Markups.Core.EditModeCloud
Autodesk.Viewing.Extensions.Markups.Core.EditModeFreehand
Autodesk.Viewing.Extensions.Markups.Core.EditModeHighlight
Autodesk.Viewing.Extensions.Markups.Core.EditModePen
Autodesk.Viewing.Extensions.Markups.Core.EditModePolycloud
Autodesk.Viewing.Extensions.Markups.Core.EditModePolyline
Autodesk.Viewing.Extensions.Markups.Core.EditModeRectangle
Autodesk.Viewing.Extensions.Markups.Core.EditModeText

那现在如果我们想要保存画面的标注涂丫要怎么做呢?我们可以像这个样子取得标注涂丫转的代表字串以及当前画面的状态

// 将刚刚产生的标注涂丫转换成字串
const markupsPersist = markup.generateData()
// 当前画面的状态 (zoom, direction, sections)
const viewerStatePersist = markup.viewer.getState()
// 离开编辑模式
markup.leaveEditMode()
// 隐藏涂丫工具,并回复导览工具
markup.hide()

小提醒:在我们离开标注涂丫的编辑模式后就没办法在修改这些涂丫了,它会被转换成 SVG 的图片。

在来我们就可以将刚刚取得的 markupsPersist 和 viewerStatePersist 传送到自己的服务器上,同时储存到数据库里面。将来要回复的话,就可以先从数据库获取 markupsPersist 和 viewerStatePersist,并透过下面的方法来回复:

// 开启涂丫工具
markup.show();

// 回复先前制作涂丫时的 Viewer 画面的状态
markup.viewer.restoreState( viewerStatePersist );
// 在 MyLayer 图层上重现涂丫
markup.loadMarkups( markupsPersist, 'MyLayer' );

原文:https://forge.autodesk.com/bl...

iModel.js是Autodesk官方提供的一款用于基于Web浏览器访问和操作设计数据的JavaScript库,主要用于BIM(Building Information Modeling)场景,它允许开发者在网页上实时预览、编辑和交互大型建筑模型。以下是iModel.js的基本使用流程: 1. **安装**: 首先需要从npm或官方网站下载并安装iModel.js库。通过`npm install @autodesk/imodeljs`命令添加到项目依赖。 2. **加载iModel**: 在HTML文件中引入iModel.js库,并创建一个`Viewer3D`实例来渲染模型。例如: ```html <script src="node_modules/@autodesk/imodeljs/dist/viewer3d.js"></script> ``` 然后在JavaScript里初始化 viewer: ```javascript const viewer = new Autodesk.Viewing.Viewer3D('viewerContainer'); ``` 3. **加载iModel数据**: 使用`Autodesk.Viewing.Model.load()`函数加载iModel文件(`.ifc`, `.ims`, `.fbx`等格式),传入URL或本地路径: ```javascript Autodesk.Viewing.Model.load('path/to/your/model.ifc', function(model) { viewer.loadModel(model); }); ``` 4. **设置视图和导航**: 可以通过API设置视角、缩放、平移等操作: ```javascript viewer.fitToView(); viewer.camera.setViewpoint(new THREE.Vector3(0, 0, 5), new THREE.Vector3(0, 0, 0)); ``` 5. **事件监听和交互**: 添加事件监听器处理用户交互,如点击、旋转模型等: ```javascript viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, handleSelectionChanged); ``` 6. **定制UI和应用功能**: 可以根据需求自定义工具栏、菜单以及模型相关的额外功能。 7. **清理资源**: 当不需要模型或视图时,记得释放资源,比如关闭`Viewer3D`实例: ```javascript viewer.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值