Bentley二次开发教程02-开发环境搭建

1 Bentley 平台介绍

在这里插入图片描述

图 1 Bentley 平台介绍
Bentley 软件大致可分为四大平台,分别为用于设计的 Microstation 平台,用于协同的 ProjectWise 平台,用于对资产进行全生命周期管理的 AssetWise 平台和数据互联互通的
数字孪生平台 iTwin。

1.1 MicroStation

MicroStation,即 Bentley 的基础图形平台软件。它基于三维设计,支持实体建模、 B 样条曲面建模和网格建模三大三维图形内核,可兼容其他各种图形平台导入的数据格式。 同时, MicroStation 还是一个囊括二维绘图、三维建模、图形渲染,动画制作的全方位多 功能图形平台。基于强大的 MicroStation 平台,根据各个专业的不同需求, Bentley 开发 出面向不同专业的 Open 系列设计软件, 生成模型可利用 Bentley 开发的计算软件进行结
果分析。

1.2 ProjectWise

为满足企业跨时间,跨空间协作的需求, ProjectWise 平台提供了一个集成的协同环
境,可以精确有效地管理各个专业的文件内容, 并通过良好的安全访问机制,供项目各个
参与方在一个统一的平台上协同工作。

1.3 AssetWise

AssetWise 平台主要用于对资产在全生命周期中的管理,它是一系列软件的统称, 其中 核心软件叫做 eB。eB 软件提供有从项目前期的合同管理到设计阶段的管理到项目移交、
运营直至某个管件的作废的 “全生命周期”管理过程。

1.4 iTwin

在整个建设周期中, 传统迭代过程中获得到的信息被不断积累——抛弃,而在数据孪 生中,数据被不断的被积累、迭代、优化,周而复始,从而提升整个流程的决策,降低风
险,提高生产力和应变能力。 iTwin 平台可兼容各种类型的数据格式,并保证信息无损,
通过信息整合统筹管理,优化物理资产。

2 Bentley 平台插件开发介绍

2.1 Bentley 产品 SDK 间关系介绍

在这里插入图片描述

图 2 Bentley 产品 SDK 关系
虽然 Bentley 拥有几乎涵盖了各个专业的设计软件,但在实际应用中, 可能会出现
在特定场景下无法适配的情况,此时就需要通过二次开发的方式实现既定的功能需
求,这也就是 Bentley 软件提供软件开发包的初衷与意义。您可以通过使用软件开发 包开发出符合您自身业务需求的工具甚至软件, 借此提高生产力。我们可以看到上图 列有 MicroStation SDK 和 ORD SDK ,ORD(OpenRoadsDesigner)是 Bentley 公司
面向道路专业设计的一款专业软件 ,它们是两个独立的软件安装包。如果您只基于
MicroStation 中的对象进行开发, 在安装 MicroStation 的基础上安装 MicroStation
SDK 即可。若要基于 ORD 做开发,则需安装 ORD SDK。在 ORD 二次开发程序中您 既可以通过 ORD SDK 去访问 DGN 文件中的 ORD 专用对象(比如边坡,廊道等) ,
还可以通过 MicroStation SDK 去访问 DGN 文件中的通用对象(比如文字、标注、普

通的几何体等) 。若您对特定专业的二次开发感兴趣也欢迎您登陆中国优先社区或
Bentley-learn 网站了解更多信息。

2.2 Bentley 软件开发语言介绍

在这里插入图片描述

图 3 Bentley 软件支持的开发语言表
Bentley 设计软件支持三种开发语言: VBA、C#和 C++。VBA 语言仅需安装
MicroStation,简单易学,但存在 API 接口不全, 在开发大型程序时较为困难; C#语言需
安装 MicroStation 与 VisualStudio,相对于 C++来说,上手难度较低, 可使用
Winform ,WPF 定制界面灵活性较大,可以满足开发大型程序的需要。 C++语言需安装 MicroStation ,VisualStudio 与对应的 SDK,具有功能最全,性能最佳的优势,但也存在
学习成本较大, 界面不易制作的问题。
目前关于 C#语言的 SDK 封装已经日趋完整, 因为其语言自身无需关心内存的开辟与回 收的特点,可以让您更加专注于业务功能的实现,因此若您的编程技术较弱,或需要快速
编写业务功能, 推荐您使用 C#语言进行 Bentley 软件的二次开发。

2.3 MicroStation 托管应用开发架构

在这里插入图片描述

图 4 Bentley 软件开发架构
MicroStation 托管应用开发架构 (即使用 C#语言对 Bentley 基础平台进行二次开发)
主要分为以下六大块:
几何库:主要负责几何层面的变换与修改;
属性表达库:主要负责工程属性的添加与修改;
DGN 平台库:主要负责读写 dgn 文件的操作;
DGN 文件显示库:主要负责 dgn 文件的内容显示或交互式工具;
MicroStation 应用库:主要对管理器,会话等应用继续管理;
Addins 工具:可调用上述所有库。
在开发过程中,主要调用的 API 主要有:
几何 API

在这里插入图片描述

图 5 常用几何 API
主要面向应用程序提供几何运算方面的支持, 他提供了通用的几何图元,包含几何对象
的创建, 编辑, 定位等操作。
元素 API
在这里插入图片描述

图 6 常用元素 API
主要用于对元素的控制。元素为 MicroStation 中构件的基本单位, MicroStation 有很多
种类型的元素, 我们可以将其分成图形元素和控制元素。
模型 API

在这里插入图片描述

图 7 常用模型 API
主要用于对数据,例如存储构件的容器及模型层面的环境配置等进行操作,或对于视
图,比如说对元素显示,视图布局等进行控制。
文件 API
在这里插入图片描述

图 8 常用文件 API
主要用于修改模型的容器及环境配置, 比如说图层,样式,字体, EC 属性等。
事件 API

在这里插入图片描述

图 9 因指定事件出现触发 API
在这里插入图片描述

图 10 常用事件 API 表
主要用于监控用户特定操作事件,在用户做出指定操作后触发。
管理器 API

在这里插入图片描述

图 11 常用管理器 API

通过这些接口我们可以直接调用到 MicroStation 中的一些功能。例如通过
ACSManager 我们可以对坐标系进行变换,通过 SelectionSetManager 这个类完成对选择
集的操作。
约束及参数化 API
在这里插入图片描述

图 12 约束及参数化 API

在创建参数化模型时, 通常需要先规划一下参数化模型需要哪些参数去控制。若前期规
划得当, 后期可以省去很多修改模型带来的麻烦。SDK 中提供了参数化建模的编程接口。
DgnTool 命令工作集
在这里插入图片描述

图 13 人机交互界面

在这里插入图片描述

图 14 常用事件虚函数功能对照表
MicroStation 中超过一半的功能都是以交互式工具的形式而存在的,我们可以通过重写
该工具集中的虚函数来实现所需功能。通过上述 API 协调配合, 实现既定的功能。

3 开发环境搭建

3.1 MicroStation 安装流程介绍

在这里插入图片描述

图 15 双击运行安装包

在这里插入图片描述

图 16 勾选“我接受最终用户许可协议”

在这里插入图片描述

图 17 若需修改安装路径则点击该项
在这里插入图片描述

图 18 等待程序自动下载安装即可

在这里插入图片描述

图 19 程序安装完成

3.2 MicroStation SDK 安装流程介绍

在这里插入图片描述

图 20 双击运行安装包

在这里插入图片描述

图 21 勾选“我接受最终用户许可协议”
在这里插入图片描述

图 22 若需修改安装路径则点击该项

在这里插入图片描述

图 23 程序安装完成

3.3 Visual Studio 安装流程介绍

在这里插入图片描述

图 24 双击运行安装包
对于 Bentley 平台的开发来说, 若使用 C#语言进行开发,需勾选.NET 桌面开发,若使
用 C++语言进行开发,则需勾选使用 C++的桌面开发。您可根据您的实际情况按需安
装,同时后续也可在 Visual Studio 中继续添加模块。

在这里插入图片描述

图 25 Visual Studio 模块安装界面
因为 Bentley 二次开发基于.NET Framework4.6.2,因此, 若您安装的 Visual Studio 版
本为 2017,请注意勾选.NET Framework 4.6.2 开发工具。
在这里插入图片描述

图 26 模块安装界面

在这里插入图片描述

图 27 若需修改安装路径则点击该项
在这里插入图片描述

图 28 等待程序自动下载安装即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/567689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flume的安装及使用

Flume的安装及使用 文章目录 Flume的安装及使用Flume的安装1、上传至虚拟机,并解压2、重命名目录,并配置环境变量3、查看flume版本4、测试flume5、flume的使用 Flume的安装 1、上传至虚拟机,并解压 tar -zxvf apache-flume-1.9.0-bin.tar.g…

python来实现nmap扫描

今天分享一个用python实现nmap扫描的方法,以下是实现步骤 代码如下: import subprocessmissing_ips {166.139.144.163, 31.47.8.35, 58.242.86.191, 212.178.135.62, 103.1.35.114} port "7" for missing_ip in missing_ips:# 构造nmap命令…

【Elasticsearch】Elasticsearch 从入门到精通(二):基础使用

《Elasticsearch 从入门到精通》共包含以下 2 2 2 篇文章: Elasticsearch 从入门到精通(一):基本介绍Elasticsearch 从入门到精通(二):基础使用 😊 如果您觉得这篇文章有用 ✔️ 的…

基于MLP算法实现交通流量预测(Pytorch版)

在海量的城市数据中,交通流量数据无疑是揭示城市运行脉络、洞察出行规律的关键要素之一。实时且精准的交通流量预测不仅能为交通规划者提供科学决策依据,助力提升道路使用效率、缓解交通拥堵,还能为公众出行提供参考,实现个性化导…

C++ :设计模式实现

文章目录 原则单一职责原则开闭原则依赖倒置原则接口隔离原则里氏替换原则 设计模式单例模式观察者模式策略模式代理模式 原则 单一职责原则 定义: 即一个类只负责一项职责 问题: 类 T 负责两个不同的职责:职责 P1,职责 P2。当…

爆破、批量PoC扫描工具 -- POC-T

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。…

【java】27:java绘图

坐标体系 - 介绍: 下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点个像素;第二个是y坐标,表示当前位置为垂直方向…

视频不够清晰怎么办?教你几种有效方法

在我们日常生活中,有时候我们会遇到不清晰的视频,这给我们带来了很多不便。那么,怎么将不清晰的视频变清晰呢?本文将为您介绍一些常用的软件工具,帮助您提升视频的清晰度。 方法一:使用AI技术 AI技术可以通…

springboot-异步、定时、邮件任务

目录 一,前言 二,异步 2.1,案例: 1,首先创建一个service: 2,Controller: ① 想办法告诉spring我们的异步方法是异步的,所以要在方法上添加注解 Async ②去springboot主程序中开…

【Java--数据结构】模拟实现ArrayList

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 LIst 顺序表ArrayList 顺序表优点 IList接口 ArrayList中定义要操作的数组 在MyArrayList中 重写接口方法 新增元素 在指定位置插入元素 pos不合法异常 判断和查找元素…

Bentley二次开发教程19-文件及模型管理-参照操作

参照操作 模型参照(*.dgn) 当我们需要与同专业,或者跨专业协同配合时,总是无可避免的需要参照他人的模型。若想通过编程的方式提前将参照模型与指定场景绑定起来,那么就需要掌握模型参照的方法。关于该方法大致的使用…

python创建线程和结束线程

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 python创建线程和结束线程 在 Python 中,线程是一种轻量级的执行单元&#xff…

C++-DAY1

思维导图 有以下定义,说明哪些量可以改变哪些不可以改变? const char *p; const (char *) p; char *const p; const char* const p; char const *p; (char *) const p; char const* const p; const char *p:指针 p 所指向的内容不可改…

【C++庖丁解牛】C++11---右值引用和移动语义

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1 左值引用和右值引用2 左…

是德软件89600 RFID使用笔记

文章目录 1、进入RFID软件:2、RFID软件解调设置项3、如何查看一段指令数据本文是日常工作的笔记分享。 lauch VSA(矢量频谱分析)后会出现以下界面: 当然这是因为频谱仪的输入有信号才显示如下: 否则就显示频谱仪的噪底 这里的设置过程同一般的频谱仪,比如中心频率、span…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

ApiHug 的初心-ApiHug101

视频 秒懂 ApiHug -019 HOPE 🔥 H.O.P.E.: Help other people excellent 💝 是这个项目最初的初心 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ 🏠 gitee github search ApiHug ApiHug 🤗 ApiHug {Post…

数据结构(学习笔记)王道

一、绪论 1.1 数据结构的基本概念 数据:是信息的载体,是描述客观事物属性的数、字符以及所有输入到计算机中并被计算机程序识别和处理的符号的集合。(计算机程序加工的原料)数据元素:数据的基本单位,由若干…

相关电路整理(工程)相关FOC电路整理

1. 基于STM32G4的FOC电机驱动学习板 1.1 防反接电路 电源正确接入时 电流从 VIN 端流向负载,经由 Q3(NMOS) 通向地(GND)。在上电瞬间,由于 MOS 管的体二极管效应,地回路通过体二极管接通。接下来,由于 Vgs…

【sping】在logback-spring.xml 获取项目名称

在日志文件中我们想根据spring.application.name 创建出的文件夹。 也不想死在XML文件中。 application.yml spring:application:name: my-demo logback-spring.xml <springProperty name"application_name" scope"context" source"spring.app…