1.想问一下,码解openbim到底是什么意思?
2.好用的物联网开发平台有哪些?
3.手把手带你学webpack(6)--source-map
4.ArchiCAD二开入门
5.opencascade环境配置教程|vs2019
6.学习webgl后选择框架,three.js和babylon.js哪个更值得深
想问一下,openbim到底是什么意思?
openBIM是一种软件开发商中立的协作方式,它通过使用开放的码解数据标准来定义建筑信息模型(BIM)数据,以实现软件开发者的码解独立性。
开放的码解数据标准指的是所有人都可以公开访问和使用的标准。例如IFC和DXF格式的码解文件,任何软件都可以打开并共享数据,码解转转双模板源码而如RVT和DWG文件则需要特定软件才能访问内部信息。码解这使BIM变得更为开放和自由,码解避免数据被锁定在某一特定生态圈中,码解同时提高互操作性、码解可扩展性和可持续性。码解
“open”这个词在不同领域有不同的码解含义,源自于Free Software(自由软件)的码解概念,并逐渐扩展到其他领域,码解如OpenBIM和OpenGIS等表示开放的码解BIM和GIS。
值得注意的是,“开放”与“开源”虽密切相关但并非完全相同。开源指的是软件的源代码可访问和使用,而开放标准仍然可能受到版权保护。
至于“openBIM”的正确写法,通常推荐使用小写开头的“openBIM”。然而,若习惯使用大写,使用“OpenBIM”也是可以接受的。
好用的物联网开发平台有哪些?
探索物联网开发平台的选择,天翎低代码平台是值得一试的选项。作为国内早先的快速开发平台研发者,天翎低代码平台在年的长线买卖点源码发展中积累了丰富的经验,拥有庞大的源代码库和超过万的用户授权,为其在物联网开发领域的实力提供了坚实的基础。
在系统整合方面,天翎平台展现出其独特的优势。支持包括Restful、RPC、WebService等接口协议,内置了多种软件和硬件接口调用方式,提供全源代码,确保企业使用无忧。
强大的EIP能力让平台能够有效集成异构数据,形成统一的数据视图,打破信息孤岛,实现数据的高效整合。
天翎平台还具备独特的IoT架构,支持接入多种物联网设备和技术,如传感器、北斗、地磅、人脸识别、高清摄像头、BIM等,并通过智能AI进行数字化管理。平台提供多种接口调用方式,全源代码支持,为企业个性化开发提供了广阔空间。
在API接口的河流图指标源码处理上,天翎平台同样表现出色,支持接口调用与执行情况监控,方便与第三方系统整合,实现数据的灵活调用。
手把手带你学webpack(6)--source-map
本篇文章对应源码:JvcicpO1xuXG4gIHRocmIG5ldyBFcnJvcignctZXRoaW5nIHdybnLi4uJyk7XGXG5cbm1vZHVsZS5leHBvcnRzID0geyBlcnJvckZuIHXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSbIjoiIn0=\n//#sourceURL=webpack-internal:///./src/utils.js\n");这种方式适用于在开发模式下需要精确的source-map时使用,相比直接的eval,会更加精确些
3.4inline-source-map顾名思义,就是以内联方式存放source-map文件,它会将source-map文件的内容编码成base后直接放在打包结果的最后
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'inline-source-map',plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};//#sourceMappingURL=data:application/json;charset=utf-8;base,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1COzs7Ozs7O1VDTm5CO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7Ozs7OztBQ3RCQSxRQUFRLFVBQVUsRUFBRSxtQkFBTyxDQUFDLCtCQUFTOztBQUVyQyIsInNvdXJjZXMiOlsid2VicGFjazovLzA2X3dlYnBhY2tfccmNlXhcC8uL3NyYydGlscy5qcyIsIndlYnBhY2s6Ly8wNlZWJwYWNrX3NvdXJjZV9tYXAvd2VicGFjay9ibc3RyYXAiLCJ3ZWJwYWNrOi8vMDZfd2VicGFjazb3VyY2VfbWFwLy4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDbZWIjpbImZ1bmN0aW9uIGVycm9yRm4oKSB7XG4gIGNvbnNvbGUubG9nKCdoZWxsbyBlcnJvcicpO1xuXG4gIHRocmIG5ldyBFcnJvcignctZXRoaW5nIHdybnLi4uJyk7XGXG5cbm1vZHVsZS5leHBvcnRzID0geyBlcnJvckZuIHXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXGYXIgXZWJwYWNrXvZHVsZV9jYWNoZV9fID0geXG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gXZWJwYWNrXvZHVsZV9jYWNoZV9fWvZHVsZUlkXTtcblWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaWbyB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlXbbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdHXG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFjatb2R1bGVzXbbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFjayZXF1aXJlXpO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiYuc3QgeyBlcnJvckZuIH0gPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmVycm9yRm4oKTtcbiJdLCJuYW1lcyI6WsInNvdXJjZVJvb3QiOiIifQ==从官方文档可以看到,这种方式的构建速度是最慢的,只适用于构建单个文件的时候使用
3.5cheap-source-map这种方式相比source-map而言,没有建立列映射,也就是说遇到报错的时候,只会告诉你哪一行代码出错了,而不会告诉你哪一列出错了,如果开发时对列映射没有太高要求的话可以使用这种方式,毕竟不用生成列映射,比起source-map来说会快一些
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'cheap-source-map',plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};3.6cheap-module-source-map官方文档对这种方式的devtool并没有进行任何详细介绍,事实上这种方式适用于js代码被loader转换过的场景,比如被babel进行了转换,又比如源码是用typescript写的,后来经过loader转成了js代码,而我们又希望在运行的时候出现报错信息时能够对应回typescript代码像这种有loader对js进行转换的场景下,想要保证正确的source-map就需要使用到带有module的devtool了,因为除了cheap-module-source-map,还有很多别的方式也是有module的,只要是源码如何加版权在官方文档中看到带有module的devtool都是具有这种特性
下面就以babel为例,我们通过babel-loader对js进行转换,然后看看能否正确对应到转换前的代码首先安装如下依赖
pnpmi@babel/core@babel-preset-envbabel-loader@babel/core是babel的核心,所有功能都要在这个包的基础上运行
@babel-preset-env让我们可以不需要考虑转换成什么版本的js,它会根据要适配的浏览器自动转换成能兼容相应浏览器的版本,这里我们使用它主要是能够将我们写的es6代码转成es5,从而让我们的源码和打包后的结果有差异,方便观察source-map是否生效
babel-loader,用于和webpack搭配使用,转换js文件
接下来配置loader
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'eval',//默认就是eval,因此development模式下不写devtool配置项也可以plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};0然后我们写一个具有es6特性的语法的函数
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'eval',//默认就是eval,因此development模式下不写devtool配置项也可以plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};1使用到了const、箭头函数,经过babel转换成es5后,代码的位置会和源码中不一样,那么在浏览器中如果仍然能够找到转换前的源码,则说明cheap-module-source-map生效了可以看到,在浏览器中确实能够看到转换前的源码,这就是cheap-module-source-map中module的作用,事实上官方文档中这么多的配置项我们不需要害怕,只需要知道每个关键字是什么意思,那么它们组合起来无非就是各种特性的叠加而已
3.7hidden-source-map也是一个见名知意的配置项,相比于source-map,就是将最后的//#sourceMappingURL=main.js.map这句注释删除了,这也就意味着source-map不会生效了,但是仍然会生成source-map文件的官方文档中给我们的建议是在只需要知道有错误出现时给我们在控制台输出出来的话就可以使用这种方式
3.8nosources-source-map这种方式能够在出现错误的时候告诉我们是源码中哪个文件第几行出错了,但是不会在浏览器中给我们生成源码
总结了解完以上这几个devtool配置项,就足够了,转让公司网站源码官网的个配置项就是根据eval、hidden、inline、cheap、module、nosources这几个关键字组合出来的
但是组合也是有规则的,官方文档中给出的规则如下:
[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map
原文:/post/ArchiCAD二开入门
探索BIM世界中的ArchiCAD:入门指南 在BIM技术的大海中,Rhino和SketchUp以其直观易用赢得了初学者的青睐,Revit紧随其后,而ArchiCAD以其复杂性显得与众不同。Revit生态系统以其丰富的资源和广泛的接纳度占据首位,SketchUp和Rhino则稍逊一筹,ArchiCAD的生态系统则相对较弱,尤其在方案设计公司,SketchUp更为常见,部分机构则在探索ArchiCAD的独特功能。 开发权限与入门门槛 想要进入ArchiCAD的二次开发世界,你需要首先注册开发者权限,申请Developer id和Local Id。这个过程可能略显繁琐,但这也反映出ArchiCAD作为小众软件的特性。 开发环境搭建 从官网下载官方SDK,并确保与你的ArchiCAD版本匹配。推荐使用Visual Studio 作为开发环境。在开始创建Addon项目时,遵循以下步骤:VS项目设置: 选用SDK提供的模板,创建新项目,并整理文件结构,Libraries存放库,Resources包含资源,Src存放源代码,确保引用顺序的合理性。
头文件管理: 在引用API时,确保先引入"APIEnvir.h",以避免编译过程中的常见问题。
代码挑战与调试 在编写插件代码时,比如在"MenuCommandHandler"中创建交互功能,尝试创建MessageBox进行测试。调试过程中,可以使用"Add-On Manager"或Visual Studio附加到ArchiCAD进程。如果在Demo模式下工作,可能需要修改MDID并遵循特定的调试步骤。 在Visual Studio中,务必指定ArchiCAD的安装路径,并在Command Arguments中添加"-DEMO"标志。对于Native代码的调试,你需要选择"Native"类型,并在"Debug -> Attach to process"中连接到运行中的进程。 总结与启示 尽管ArchiCAD的二次开发道路充满挑战,但掌握这些基础知识后,你将能够深入挖掘其潜力,为建筑设计带来独特解决方案。每一步都需要耐心和细心,但每一次代码的运行,都是你迈向ArchiCAD二开世界的重要一步。opencascade环境配置教程|vs
配置环境
对OpenCASCADE的配置教程,旨在帮助用户快速上手,解决配置过程中的常见问题。本文将详细覆盖获取源代码、编译、链接操作,以及处理环境配置时可能遇到的常见问题。欢迎提出疑问,共同探讨。
### 什么是OpenCASCADE?
OpenCASCADE是一个专为几何计算设计的C++库,提供Python和C++两种使用方式。它广泛应用于CAD领域,支持建模、计算以及文件输入输出,常见格式为.BRep。与CGAL相比,虽然都是几何计算库,但应用领域不同,OpenCASCADE在CAD行业中的知名度更高。
### OpenCASCADE类的继承关系
OpenCASCADE的头文件结构复杂,主要分为三类:GP、Geom、TopoDS。GP类包含基本单位,如point和vector;Geom类提供几何构型;TopoDS类用于复杂几何构型。GP类通过GC方法与Geom类交互,Geom类与TopoDS类通过BRepBuilderAPI实现转换。TopoShape类是形状的基类,其子类包括vertex、Edge、Wire、mesh、Solid等。
### 下载源代码
从官方网站下载OpenCASCADE源代码,推荐选择源码版本,并确保下载第三方库时选择x位。具体操作指南可参考相关文档。
### Visual Studio环境配置
配置Visual Studio环境,解决编译和链接问题。编译将源代码转换为obj文件,而链接则将多个obj文件与库文件合并生成可执行文件。lib文件包含目标代码,dll文件包含函数实现,pdb文件用于调试。
#### 编译和链接
编译阶段处理源代码语法、引用头文件的错误;链接阶段关注库文件的设置,确保正确路径和版本匹配。
#### lib、dll、pdb文件关系
lib文件包含静态库代码,链接时直接并入;dll文件为动态库,包含函数实现;pdb文件用于调试时显示源代码信息。
#### 编译错误和链接错误
编译错误主要在语法、头文件引用上;链接错误涉及库文件缺失、版本不匹配等问题。解决方法包括配置依赖库路径、添加lib和dll文件路径。
### 链接错误解决步骤
配置依赖库路径、添加准确的lib库文件、在调试器工作环境添加dll和pdb文件路径。使用Far Manager工具查找未识别的符号,通过十六进制函数名手动在Visual Studio中添加库名。
### 个人简介
本文作者为深圳在读研究生,研究方向为BIM/CIM,旨在分享配置OpenCASCADE的学习过程及问题记录。
### 参考链接
提供详细的操作指南和文档链接,以便用户深入学习和实践。
学习webgl后选择框架,three.js和babylon.js哪个更值得深
学习WebGL后,选择框架时,three.js与babylon.js成为热门选项。three.js作为纯渲染库,对新手友好,入门相对简单。然而,深入使用后,会发现three.js源代码的扩展性有限,许多地方仅能通过修改源码实现扩展。
另一方面,babylon.js的工程化程度较高,提供如sandbox、playground、材质编辑器等工具链,且拥有活跃的开发者社区,能够快速解决问题。虽然过去在国内打开示例页面时可能遇到卡顿,但这并未影响其学习资料的丰富性。
综合考虑,如果需做选择,推荐优先考虑babylon.js。但同时,建议不要局限于此,两者均可深入研究,取长补短,以丰富自己的技能库。对于建筑信息模型(BIM)与地理信息系统(GIS)领域,cesium是一个不可或缺的工具,同样建议学习。