Quantcast
Channel: C++博客-eryar
Viewing all 519 articles
Browse latest View live

OpenCASCADE Point Classifier

$
0
0

OpenCASCADE Point Classifier

eryar@163.com

 

在解决几何问题时常会遇到这样的问题:给定平面上一个有N条边的简单多边形P和一点z,在问点z是在P的内部还是外部,或者是在多边形的边上。在OpenCASCADE中也有对点的位置判断的功能,叫分类器Classifier,其主要功能就是用于点的定位。点定位功能主要用于模型的网格化Mesh,布尔运算(BO)中面的重构等。

  

点定位的状态由TopAbs_State来表示,总共有以下几种状态:

 

引入UNKNOWN是因为这个枚举也经常用于表示计算失败的状态。当不能确定点在外部或内部时,就用UNKNOWN来表示。

 

       点定位相关的类名都是带有Classifier或其缩写,如:

l  CSLib_Class2d:最底层的多边形点定位类,用于二维空间点与多边形的定位;

l  BRepClass_FaceClassifier:判断参数点是否在面Face的参数空间和模型点是否在面上;

l  BRepClass3d_SolidClassifier:判断点是否在体Solid内部;

l  IntTools_FClass2d:判断参数点是否在面Face的参数空间;

 

判断一个点是否在多边形内部常见算法有:

(1)面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。

(2)夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。

(3)引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。时间复杂度:O(n) 适用范围:任意多边形。是非常不错的算法(不需考虑精度误差和多边形点给出的顺序),可以作为第一选择。算法思想:以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。如果为奇数,Q在多边形内;如果为偶数,Q在多边形外。

 

OpenCASCADE中判断点在多边形内部也是采用了射线法,相关代码如下:

 

其中变量nbc即是交点的个数。

x, y是需判定点与多边形中一条线段起点的差值,SH是表示点与起点的状态,起点在判定点下方时为-1,否则为1;

nx, ny是需判定点与多边形中一条线段终点的差值,NH是表示点与终点的状态,终点在判定点下方时为-1,否则为1;

当多边形中一条线段起点和终点与指定点状态不一致时,即判定点在线段的Y之间才会有相交。

返回值使用了一个位运算来判断交点个数是否为偶数。

 

参考资料:

1 https://blog.csdn.net/WilliamSun0122/article/details/77994526

2 https://blog.csdn.net/zsjzliziyang/article/details/108813349

3 https://www.jianshu.com/p/0e974c27af09

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-04-17 16:45 发表评论

IsoAlgo3d - IDF/PCF WebGL 3d viewer

$
0
0

IsoAlgo3d - IDF/PCF WebGL 3d viewer

eryar@163.com

 

Key Words. IDF, PCF, IsoAlgo, WebGL, WebAssembly

 

最近有国内外的友人提出基于WebGL的管道模型三维浏览器的想法很好,主要有以下几点优势:

基于HTML5WebGL技术,不需要安装程序,即可以在电脑、手机、平板等所有支持WebGL的浏览器上使用;

三维模型加上尺寸标注、材料描述等信息,比二维的ISO图更直观;

l 对于现场制作安装管道的施工人员,可以使用手机直接查看模型,识图更简单;

l 可以部署在公司内部服务器,数据更安全;

 

当前国际主流管道设计软件都可以生成IDF/PCF文件,这两种文件格式都是用于Isogen生成管道轴测图。其中IDFISOGEN Data File,主要来自Intergraph PDS AVEVA PDMSPCFPiping Component File,主要来自Intergraph SmartPlant 3DCADWorx。程序的主要技术思路为:通过将IDFPCF文件中数据解析,生成管道三维模型及标注,并使用WebGL进行三维模型的展示。

首先是WebGL技术来展示三维模型,并能方便用户对视图和模型交互,如三维视图的旋转、缩放、移动等;模型的交互为选择一个模型,查询其相关的材料信息等。

 

由于Javascript本身是开放的,为了保护核心代码和提高性能,可以使用WebAssembly来对核心业务代码进行封装。目前将其他编程语言转换在Javascript一般使用Emscripten SDK。下面来介绍一下Emscripten SDK的安装:

  1. 直接在https://github.com/emscripten-core/emsdk下载,下载后解压到指定目录;
  2. 修改解压后的文件emsdk.bat,配置好python;
  3. 启动命令窗口cmd,切换到解压目录,输入命令:
  4. emsdk install latest (有时安装不成功,是因为要从google下载,多试几次)
  5. emsdk activate latest
  6. 输入命令:emcc -v,显示如下信息表示安装成功。

 

为了方便开发,需要配置一个本地Web服务器。因为已经安装Python3环境,这里也使用Python来建立本地Web服务器,输入命令:

python -m http.server 8080 --directory d:/WebGL/

 

Python3.7开始,可以加-d/--directory 来指定文件夹了。

 

配置好开发环境,就可以将C/C++代码通过Emsdk封装成Javascript代码。在最新的浏览器上都提供了对WebAssembly的支持。

 

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-05-21 09:07 发表评论

IsoAlgo3d - Pipeline WebGL 3d viewer

$
0
0

IsoAlgo3d - Pipeline WebGL 3d viewer

eryar@163.com

 

Key Words. IDF, PCF, IsoAlgo3d, WebGL

 

WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScriptOpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。

WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

当前国际主流管道设计软件都可以生成IDF/PCF文件,其中IDFISOGEN Data File,主要来自Intergraph PDS AVEVA PDMSPCFPiping Component File,主要来自Intergraph SmartPlant 3DCADWorx。这两种文件格式都是用于Isogen生成管道轴测图。管道轴测图以轴测投影方式,在二维图纸上有立体效果,便于识图,可用于指导管道的制造和安装。如今,手机已经很普遍,手机中的浏览器也支持HTML5标准,所以可以借助于WebGL,将管道数据以三维形式展示,使管道数据的流转更直观高效。

只要支持WebGL的浏览器即可以使用,不需要安装其他插件,即可以在电脑、笔记本、手机等支持WebGL的浏览器直接使用。也可以部署在客户的服务器上,在局域网内使用不与外网连接,这样保证数据安全。

如上图所示,为在局域网的电脑上使用。

也可以在手机上使用:

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-05-23 11:02 发表评论

IsoAlgo3d WebGL 3d viewer test

$
0
0

IsoAlgo3d WebGL 3d viewer test

eryar@163.com

 

Key Words. IDF, PCF, IsoAlgo3d, WebGL

 

当前国际主流管道设计软件都可以生成IDF/PCF文件,其中IDFISOGEN Data File,主要来自Intergraph PDS AVEVA PDMSPCFPiping Component File,主要来自Intergraph SmartPlant 3DCADWorx。这两种文件格式都是用于Isogen生成管道轴测图。管道轴测图以轴测投影方式,在二维图纸上有立体效果,便于识图,可用于指导管道的制造和安装。如今,手机已经很普遍,手机中的浏览器也支持HTML5标准,所以可以借助于WebGL,将管道数据以三维形式展示,使管道数据的流转更直观高效。

只要支持WebGL的浏览器即可以使用,不需要安装其他插件,即可以在电脑、笔记本、手机等支持WebGL的浏览器直接使用。也可以部署在客户的服务器上,在局域网内使用不与外网连接,这样保证数据安全。

如上图所示,为在局域网的电脑上使用。

也可以在手机上使用:

现在将IsoAlgo3d放到https://eryar.github.io/PipeCAD/,使大家可以测试使用。目前程序支持导入IDF文件。对于AVEVA PDMS可以使用一个插件PDMS2IDF自动导出管道的IDF文件,插件界面如下:

若您对PDMS导出IDF插件感兴趣,可关注下方公众号,并发送消息:PDMS2IDF,即可获得下载链接的回复。

有了IDF文件,可以通过按钮打开IDF文件,即可在Web浏览器显示管道模型。对于电脑的Web浏览器的视图操作如下:

鼠标左键拖动是旋转视图;

鼠标右键拖动是移动视图;

鼠标左键双击,是缩放到选择的模型;若在空白处双击,则是显示全部模型。

 

对于手机上Web浏览器的视图操作如下:

一个手指拖动是视图旋转;

一个手指双击,是显示全部模型;

同时移动两个手指,是视图移动;

两个手指距离变大,是放大视图;

两个手指距离变小,是缩小视图;

 

后期将会对IsoAlgo3d进行升级,使其能显示二维ISO图中全部信息,包括尺寸标注,材料表等,使其也可以用来指导施工。



eryar 2021-06-13 15:44 发表评论

PipeCAD Model Editor

$
0
0

PipeCAD Model Editor

eryar@163.com

Key Words. PipeCAD, 三维管道设计软件,Model Editor

1. Introduction

在当代的三维辅助设计软件中,交互建模设计已经成为主流。友好、高效的对三维模型直接进行编辑或修改,不仅可以提高用户的工作效率,还会给用户留下美好印象,即软件良好的用户体验。交互建模的常见方法有:拖曳、约束、栅格捕捉、橡皮筋方法、引力场等,拖曳就是直接对选择的模型在三维空间中拖动来改变位置和方向;约束方法就是在拖曳的时候添加约束条件,如只能沿某个方向进行拖曳,软件中的应用有AutoCAD中的极轴捕捉功能;栅格捕捉也是一种带约束的拖曳,即拖曳的过程中只能沿正交网格中直线的交点拖动;橡皮筋方法主要用在绘制二维图形;引力场方法就像AutoCAD中的磁吸功能。如何设计高效、友好、方便的用户接口是当前各开发系统的厂家和专家所共同关心的问题,它的设计好坏可能直接影响用户是否接受其产品。

AVEVA(原CADCENTRE)是国际著名的工厂工程信息技术企业,成立于1967年,总部设在英国剑桥;AVEVA所提供的工厂工程一体化解决方案涵盖了陆地和海洋石油天然气、电力、石化、化工、核电、造船、环保、造纸、制药、冶金、矿山等多个行业,同时提供专业工厂工程技术咨询、技术服务和本地化可持续发展的应用开发。 AVEVA是目前全球发展最快的工厂工程信息技术企业之一,1996年在英国伦敦上市,2007财年年产值超过25亿美元。AVEVA在全球拥有超过1600名用户,每天有超过26,000名工程人员在使用AVEVA的解决方案。AVEVA在世界30多个国家和地区设有超过50个常驻办事机构,在英国剑桥总部及其他研发中心拥有超过300名研究和开发人员,为世界上最大的工厂工程信息技术研究和开发团队。AVEVA的快速发展与其方便易用,良好的交互建模方式分不开。

AVEVA交互建模主要是使用模型编辑器Model Editor,使用Model Editor可以只用鼠标就可以进行建模设计。

1 PDMS中的Model Editor

在管道建模过程中,AVEVAPDMS软件引入了模型编辑器Model Editor功能。使用Model Editor可以方便调整模型的位置,也可以灵活地创建管道模型,给用户以良好的体验。在PipeCAD的开发过程中,也引入Model Editor的功能,提高管道布置效率。

2. PipeCAD Model Editor

PipeCAD中引入Model Editor,可以方便地调整设备的位置。在交互过程中,也可以设置移动距离和旋转角度增量,使调整尽量准确。提供移动量和旋转量的文字反馈,使交互信息更直观。

Model Editor另一个重要的功能是管道的建模,即只需要使用鼠标的拖拽就可以完成管道建模,让管道建模So easy!

 

最后,将PipeCAD中的Model Editor使用方式录屏,给大家一个直观感觉:

 

3. Conclusion

初步实现Model Editor功能,能够方便地调整模型位置,为PipeCAD交互模型创建、布置打下基础。

致力于国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-07-01 07:55 发表评论

PipeCAD Standard Components

$
0
0

PipeCAD Standard Components

eryar@163.com

 

Key Words. PipeCAD, PipeStd, 管道设计软件,管件库

 

1. Introduction

管道标准部件库程序的主要用法与PDMSParagon模块类似,主要也是采用参数化的方式来表示管件。每种类型的管件Category包含三个集合:参数集Parameter Set、点集Point Set和形集Geometry Set。如下图所示为一带颈对焊法兰Weld Neck Flange的参数化管件:

1 法兰参数化模型

对于任意的管件模型都可以采用上述参数化的方式来建立,具有通用性。而常用的管件按类型分模型都是类似的,所以可以采用更方便的方式来生成管件库。

2. Standard Components

对于管件模型,不同类型的管件外形基本是固定的。如一个异径接头的外形就是一个圆锥;一个带颈对焊法兰外形是一个圆柱和一个圆锥组成,等等。所以可以根据分类来将标准管件的建模固化成一个表格的输入,而不需要每个管件都从参数集,点集和形集来开始建模。在管道中已经有分类的数据,即管道ISO图的管件符号信息SKEY

如上图所示为将一个闸阀Gate Valve标准件建模简化成一个数据表格。用户只需要根据相关标准输入图示上对应的数据,即可以直接生成管件的参数化模型。

如下图所示为通过表格输入法创建的标准管件模型:

将参数化管件建模固化成表格数据输入的功能完全采用Python实现,这样用户就有更大的自由度:用户可以自行添加管件类型。

3. Conclusion

综上所述,通过定义参数集、点集和形集来实现标准管件的参数化,可以通过统一的方式对任意标准管件进行参数化处理。这样程序操作方式统一,逻辑清晰。但是每个管件都要从参数集、点集和形集来创建,使用效率较低。

根据管件类型SKEY来分类,将标准管件的创建固化成表格数据输入,简化操作,提高效率。对于特殊管件,可以通过参数集、点集和形集的方式自己手动创建;也可以修改Python脚本文件,将管件建模过程也固化成表格数据输入。

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-07-05 19:34 发表评论

PipeCAD - Pipe Specification

$
0
0

PipeCAD - Pipe Specification

eryar@163.com

 

Key Words. PipeCAD, 管道轴测图, Pipe Spec, 管道等级

 

1 Introduction

管道材料等级Specification是根据设计温度、设计压力和输送介质的要求,以及材料的性能和经济合理性确定管道和管道组成件的材质、品种和规格型号应根据工艺管道及仪表流程图(PID)上的管道材料等级选用。管道材料等级表中所列设计压力是指设计温度下允许的最高设计压力,实际压力应不大于此值方可选用该等级。管道等级一般由三部分组成,其编码方式为:

管道等级在设计软件中的体现就是帮助设计人员快速选择所需要的管件,避免错误。即设计模型中选择的管件,是通过等级来筛选的。设计模型通过属性spref来关联元件库的模型。每个等级部件Spec Component包含管件的模型引用catref,及材料描述引用datrefCatref指向管件的三维模型。datref为材料的参数化描述,及与ISO图相关的SKEY定义。管道等级中还关联其他信息,如螺栓等级,材料壁厚等等。其引用关系如下:

 

PipeCAD中也引入管道等级理念,提高管道设计建模效率和准确性。

 

2 Detail Text

元件说明文字Detail Text用于描述管道元件材料,可以是固定文字,也可以是与参数关联的描述。抽取管道ISO图时,主要使用Detail Text中的Skey和描述文字数据。

创建Detail Text主要是设置其SkeyDetail(ISO)材料描述。因为这里与具体的材料对应,建议其名字可以用材料编码,方便与物资管理系统对应。

 

3 Specification

简化管道等级操作,使管道等级的管理更简单方便。如在创建管道等级时,默认生成管件类型:

类型与等级的表头对应,不同管件类型表头是不同的。如普通管件表头中只需要一个通径,而异径接头、三通等需要两个管径。这些配置信息一般是根据管件类型确定,不会频繁修改,所以只保留一个SELE,简化操作。

 

4 Conclusion

有了管道等级数据,在管道设计过程中方便管件的正确选择。提高设计效率和准确性。实现管道等级功能,也为管道设计建模提供基础,下一步就可以实现管道建模功能。

致力于不依赖AutoCAD的国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-07-09 17:30 发表评论

PipeCAD - Admin

$
0
0

PipeCAD - Admin

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,项目管理

1. Introduction

PipeCAD管理模块Admin主要实现项目数据的管理:创建组Team,用户User和工作区数据集MDB,项目数据库DB等,并给用户分配权限。

通过数据库的设计,使其结构兼容PDMS数据库。兼容PDMS数据有很多优点,如可以导入PDMS项目数据,做到PDMS项目复用。也可以导出PDMS数据,使PipeCAD项目可以导入到PDMS中。

2. Reference Number

PDMS中有Reference Number概念,实际上也是项目数据库中每个对象唯一标示。上图所示为其Reference Number生成算法。Reference Number由两部分组成:第一部分由数据库文件编号和bucket号组成。bucket号是表示同时使用一个数据库文件的用户数。第二部分是从0开始的一个递增序号。

 

通过这两部分来组成一个唯一的标识,确保一个Reference Number在项目中唯一。这个编号相当于数据库的OID,即对象唯一标示号。以前还考虑过Twitter的雪花snowflake算法,对于分布式系统中,需要使用全局唯一ID的场景,snowflake算法还是不错的选择的。OID的生成对数据库的设计影响还是比较大的。把PDMS生成Reference Number摘出来做个笔记,也是方便自己加深印象和查找。

3. Login

PipeCAD启动也通过批处理来配置项目信息,方便项目统一配置管理。启动后,选择项目及用户,MDB,模块,输入密码等就可以登录相应模块,目前只需要三大模块就可以完成管道设计功能:管理模块Admin;元件库模块Paragon和设计模块Design。统一在Design模块完成模型设计及自动出图、出材料。

 

4.Admin

PipeCAD的管理模块Admin也做相应的简化处理。通过数据库的设计,每种类型的数据模式Schema保持一致。如Admin模块中使用到的System数据库;Paragon模块使用的CATA数据库;Design模块使用的DESI数据库。虽然数据库中内容不同,但是基本Schema是类似的。

PipeCADAdmin模块数据也是树结构,每个树结点对应一种类型,不同类型会有不同的属性数据。整个数据结构简单,清晰。

 

5. Conclusion

初步实现PipeCAD项目管理功能,为后面的用户登录,元件库数据存储及设计数据保存做好基础。

完成PipeCAD数据库设计,使其简单、易维护。基本做到可以兼容PDMS数据,包括Reference Number的生成,一些具有引用关系的属性处理等。虽然现在使用SQLite,后面也可以快速切换到PostgreSQL数据库,为大型项目的设计提供数据支持。

致力于不依赖AutoCAD的国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。
为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)


eryar 2021-07-11 20:27 发表评论

PipeCAD - Equipment

$
0
0

PipeCAD - Equipment

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,设备建模,Equipment

 

1 Introduction

对于工程设计行业中的设备建模与机械设计行业的建模有很大不同,即在工程设计行业中,设备一般由厂家提供,不需要设计单位去设计,在建模设计软件中,不需要设备的精确外形,只需要一个占位,避免碰撞(与其他模型的干涉,操作空间的干涉等)和管道接口定位。设备模型的建立一般都可以通过基本体素来搭建,即采用的是CSG的造型方法。以及在此基础上增加参数条件,将设备模型做成模板,可以快速生成参数化的设备模型。PipeCAD也是采用相同的方式,一是可以通过基本体素来搭建;还可以定义设备模板,将同类设备模型参数化,使用参数法进行建模。

 

2 Equipment Modeling

设备建模也是其他专业建模的基础,总的逻辑是相同的。目前主要处理建模过程中的模型变换问题。设计树上大部分结点都有局部坐标系的概念:即子结点的坐标系原点是相对其父结点的坐标系的。这种设计方式对于模型位置调整有些便利:如要对整个分区ZONE进行位置移动时,可以只调整分区ZONEPosition属性即可。

 

3 Property List

增加属性列表Property List窗口,可以直接在属性窗口中修改属性值。

 

4 Python

通过将C++对象暴露给Python,可以在Python命令窗口中采用面向对象的方式来修改属性。对于有Python开发基础的用户,可以利用Python开发出程序化、自动化的插件。

 

5 Conclusion

PipeCAD基本实现设备建模的基本体素搭建的方式,为脚本化,参数化设备建模做好准备。通过将C++对象包装在Python中使用,使Python脚本的面向对象开发更直接。最后还是来个操作演示:

 

 



eryar 2021-08-04 11:49 发表评论

PipeCAD - Equipment Demo

$
0
0

PipeCAD - Equipment Demo

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,设备建模,Equipment

 

在实现一些基本图元Primitive(如长方体,圆柱体、圆锥体等)的造型显示处理后,即可以做一些简单的设备建模功能。通过基本图元的搭积木,可以创建出常用的设备模型。

 

如一个反应塔的模型只需要圆柱、圆锥体和封头这几个基本图元。

 

一个换热器模型只需要长方体、圆柱体和封头Dish即可。

 

泵的模型需要的基本图元也很简单。将这些模型放在一起,越来越有感觉:

 

综上所述,对于不需要精确表达的模型,使用CSG造型方法简单,方便。使用CSG还有一个优势就是便于模型参数化,即模板技术Template。如一个圆柱体,可以将其直径和高度数值以及位置数据都与变量关联,这样就做成一个参数化设备。参数化设备实际上是将脚本化的建模保存到设计树上,设计人员或软件管理人员如果有编程基础,可以更好地理解。通过基本图元搭积木的方式,基本可以实现一个可用的设备建模功能。

实际上现在这些设备模型的生成都是使用的Python脚本来实现的。使用Python脚本可以方便生成测试案例。脚本解释执行,对比于代码量大的C++项目来说,效率高。

 

鉴于使用基本图元搭积木的方式让设备建模功能基本可用,下一步计划实现设备管嘴Nozzle的添加。设备管嘴主要用于设备与管道的连接,有了管嘴,管线首尾的定位更方便。因为管嘴Nozzle是在Paragon模块中定义,与其他管件一样,做成的参数化模型,并通过等级控制。对于程序开发来说,也是实现模型数据从管件库Paragon模块到设计建模Design模块的连接,为管道建模打基础。

有了设计建模能力,程序也可以支持导出RVM之类的浏览文件,为工厂数字化交付提供数据来源。



eryar 2021-08-04 11:50 发表评论

PipeCAD - Equipment Nozzle

$
0
0

PipeCAD - Equipment Nozzle

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,设备建模,Equipment, Nozzle

 

1 Introduction

管嘴Nozzle是设备与管道连接的接口,通过把管嘴Nozzle建模,可以为管道建模时首尾点定位提供便利。

  

2 Nozzle Data

管嘴Nozzle一般分法兰连接或焊接两种形式,为了简化管嘴管件的参数化建模,也将其参数化建模转换成表格输入。管嘴的高度Height是由设计模块中管嘴的属性来确定的,这里也实现了由设计模块NOZZ的属性Height来确定参数化模型中的参数。同理还有弯头、参数化管件等实现逻辑。

 

通过在表格中输入对应尺寸参数,可以快速生成管嘴参数化模型:

 

 

3 Nozzle Spec

为了在设计模块Design中使用管嘴,也需要像管道那样生成等级Spec。管嘴的等级相对比较简单,只分一个大类Generic Type,这个大类对应SELE树结点。

 

 

4 Nozzle Modeling

通过选择创建的管嘴等级,可以为设备创建一个管嘴。

 

下图所示为带管嘴的换热器模型:

 

 5 Conclusion

PipeCAD实现管嘴建模功能。管嘴是设备连接管道的接口,有了管嘴模型,创建管道时可以方便其首尾坐标定位。因为管嘴和管件一样,都是在管件库模块Paragon中定义模型,通过等级Spec在设计模块Design中引用。所以实现了管嘴的建模,也为管道建模的实现提供基础。并且管嘴模型与设计模块中中属性Height关联,也为参数化设备模板、可变参数管件的实现提供基础。最后还是一个操作演示,给大家一个直观感受:

 



eryar 2021-08-04 11:51 发表评论

PipeCAD - Piping Design

$
0
0

PipeCAD - Piping Design

eryar@163.com

Key Words. PipeCAD, 三维管道设计软件,管道建模,Piping Design

1 Introduction

管道设计软件的主要功能就是管道设计,管道建模主要思路有两种:一是以管子为基础,管件与管子建立连接关系。一是以管件为基础,管子默认自动生成。两种方式各有利弊,以管子为基础,建模时可以不用关注管件顺序,但是修改管件位置的逻辑处理复杂。以管件为基础,管子根据相邻管件位置自动生成,管件顺序很关键。PipeCAD也采用以管件为基础的建模方式。

2 Create Pipe

通过菜单上按钮Pipline->Create来创建管道Pipe。输入管道名称Name,选择管道等级Spec,以及管径Bore和设计参数即可。

3 Modify Pipe

通过菜单Pipeline->Modify来修改管道。管道修改数据包括分支Branch的创建和修改。分支Branch数据主要是指定其首尾(Head/Tail)的位置和连接关系。

4 Branch Detail

分支Branch的详细数据包括首尾位置Position,方向Direction及管径Bore和连接方式。一种方式是直接修改这些数据。当首尾位置在一条直线且于方向平行,及首尾方向相反的情况下会生成管道模型。其他情况只显示一个虚线。

分支Branch的首尾(Head/Tail)也进行标记,且用不同的形状来区分。其中首Head是用一个带柄的箭头来表示,尾Tail是不带柄的箭头来表示。

5 Branch Connection

修改分支Branch还有一种方式是指定连接的模型,连接模型可以是其他管道、管件或设备和设备管嘴Nozzle。这种方式可以直接在模型中交互选择,比较方便。

6 Conclusion

PipeCAD实现管道的分支Branch建模功能。分支Branch需要指定其首尾的位置、方向及连接信息。在分支的显示上也加上首尾的箭头,并显示不同的箭头来区分首尾。下一步为管件的创建。最后还是一个操作视频:



eryar 2021-08-04 11:52 发表评论

PipeCAD - Piping Component

$
0
0

PipeCAD - Piping Component

eryar@163.com

Key Words. PipeCAD, 三维管道设计软件,管道建模,Piping Design

1 Introduction

管道设计软件PipeCAD前面已经实现管道PIPE和分支BRANCH的创建,管道设计的主要功能是布置其中的管件,如法兰、阀门等。因为管件都是通过参数化的方式实现,所以管件的创建需要通过管道等级SPEC连通设计数据和部件库数据。管件的创建还需要处理模型定位的问题:在部件库中,管件都是在一个局部坐标系中建模,需要转换到设计模型实际的位置上。

 

根据分支BRANCH的等级SPEC提供等级过滤,首先根据大类类型如弯头Elbow,法兰Flange, 阀门Valve等;再根据Skey过滤。通过Skey过滤,让用户对ISO图上的管件符号有个认识,其实Skey已经对管件进行了分类,避免过滤类型杂乱无章。

2 Connect Component

创建管件目前有两种方式:直接连接Connect和在模型中点击一个点放置Place

管件模型创建后,可以通过下面的快捷定位功能来快速调整管件位置。后期也可以使用Model Editor来调整。

3 Conclusion

管道设计软件PipeCAD基本实现管件的建模功能。现在主要是验证功能阶段,下一步通过创建一个工厂模型来完善建模过程中的细节。

 



eryar 2021-08-10 11:55 发表评论

PipeCAD - Project Creation

$
0
0

PipeCAD - Project Creation

eryar@163.com

Key Words. PipeCAD, 三维管道设计软件,管道建模,创建项目

1 Introduction

PipeCAD建模出图相关功能验证部分已经完成,现在就结合实际使用过程来完善程序。首先,是需要从无到有的创建一个项目。创建项目程序也是通过批处理来启动,启动的批处理文件名为ProjectCreation.bat

通过按钮Existing Projects可以查看已经存在的项目信息。

2 Project Creation

输入项目编号,名称,代码和描述,项目存储路径等信息。其中项目编号Number是项目根文件夹的名称;项目代码Code是不与其他项目冲突的三个大写字母代码。项目环境变量配置Project Variables用来设置项目所需文件夹路径,根据项目代码Code自动生成。

点击OK来创建项目,看到如下提示表示创建完成:

Project目标文件夹中已经生成了所需的所有子文件夹:

其中批处理文件evarsMaster.bat为项目所需路径的环境变量配置文件。当创建已经存在的项目时,会给出提示:

若项目编号,代码等必须输入数据为空,也会给出提示。

3 Conclusion

从无到有的创建项目,从而再进入到Admin管理模块来对项目进行具体的设置。结合实际使用过程来继续完善PipeCAD功能,尽快推出可使用的版本。



eryar 2021-08-13 17:51 发表评论

PipeCAD - 创建轴网

$
0
0

PipeCAD - 创建轴网

eryar@163.com

 Key Words. PipeCAD, 三维管道设计软件,轴网Grid

1 Introduction

轴网Grid在系统中使用没有等级Spec的型材来表示,在三维视图中会显示成虚线。结构轴网的主要作用是:

为多专业(管道、结构等专业)协同设计提供参考定位;

为管道ISO图中提供参考定位;

为管道平面布置图中绘制轴网及轴网标识号;

在软件PipeCAD中提供创建及显示轴网的用户界面如下图所示:

通过设置XYZ三个方向上的间距,来快速生成轴网。生成之前可以使用预览功能。预览生成的是辅助线和文字,不是实际模型。

预览后可以生成轴网模型:

2 Python

为了给有编程基础或对编程感兴趣的用户提供更二次开发功能,选择面向对象的“胶水”语言Python来给PipeCAD提供二次开发功能。上述创建轴网的功能开发就是使用了Python脚本,可以提高开发效率。

考虑到程序框架基本稳定,后面会对使用Python开发作介绍:

 

首先,创建模元素使用函数:PipeCad.CreateItem(Type, Name)。命令有两个参数:Type,输入要创建元素的类型,如型材SCTNName为模型名称,不输入则使用默认命名;

使用函数PipeCad.CurrentItem()获取当前树节点上选择的模型元素。因为Python是面向对象的,所以可以方便地查询或设置某对象属性。如上图所示为设置型材起点startPositionendPosition属性。

3 Conclusion

选择面向对象的“胶水”语言Python来给PipeCAD提供二次开发功能,提高开发效率。利用Python开发轴网功能,方便用户对轴网模型的编辑。

考虑到PipeCAD主要框架基本稳定,后期会介绍Python相关的功能函数。待程序发布后,有兴趣的同学可以在PipeCAD上进行开发。

致力于国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。



eryar 2021-08-27 14:05 发表评论

PipeCAD - 结构型材库

$
0
0

PipeCAD - 结构型材库

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,结构型材库

 

1 Introduction

型钢在工程设计中有大量应用:如厂房的主体框架结构;设备的基座;支架;电缆托架;梯子平台等。PipeCAD提供结构建模功能,软件功能基本包括设备、管道、结构,可以用于实际 工厂设计。

 

2 结构型材库

结构型材库和管道元件库类型,也是由树形结构来组织数据:

在其图形集合GMSS中,只有三种类型,最常用的是定义一个型材的轮廓SPRO,轮廓由一系列带圆弧半径的点SPVE组成。通过这种方式,可以定义型材的带倒圆角的轮廓。在其特征线集合PTSS中,定义一些定位线PLINE。在结构建模过程中,需要使用这些定位线PLINE来对型材进行定位。如对于一个首尾位置确定的等边角钢,指定不同对齐线时,角钢在模型中的位置会有不同。

实际设计过程中使用到的型材类型是确定的,为了简化用户建库,将型材的建库简化成表格输入,省去从形集GMSS和特征线集PTSS等手工创建的繁琐过程。

不等边角钢数据表格

不等边角钢模型

工字钢库

工字钢模型

工字钢库

工字钢模型

T型钢库

T型钢模型

球扁钢模型

3 Conclusion

PipeCAD将常用的型钢建库简化成表格数据输入,可以提高结构建库效率。对于常用的型材,只需要在表格中输入相应的数据即可。

有了结构型材,下一步可以实现根据国内梯子平台标准,生成准确的梯子平台模型。根据国内支吊架标准,生成准确的支吊架模型。这样PipeCAD主要建模功能基本上都具备,程序可以实际建模使用。

致力于国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。



eryar 2021-09-04 20:53 发表评论

PipeCAD 创建项目

RvmTranslator 操作视频

PipeCAD - 结构建模

$
0
0

PipeCAD - 结构建模

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,结构建模

 

1 Introduction

在设计院一般都设置了结构专业,结构专业也会使用很多专业软件,如PKPMYJK等。他们会在相应的软件中建立结构模型,对结构进行设计及受力分析,最后出图出材料。对于像PDMS这样的管道设计软件,结构建模的任务最终都落到管道设计人员的肩上。国内也有一些结构相关的PDMS二次开发插件,可以把结构专业软件的模型导入到PDMS中,这样就可以解决PDMS中结构模型由管道设计人员负责导致的模型不准确的问题。当然最理想的方式是结构、管道等设计员都能在同一个平台来进行设计,保证数据的准确性。

PipeCAD中通过表格的方式完成结构型材库后,还需要创建结构等级,方便在设计模块中选用。对于结构专业的模型,后期考虑也可以通过导入的方式来创建,保证结构模型准确。

2 结构等级

结构等级的创建也只有一个分类,即按型材的类型分类。创建等级SPEC时,选择用途为STL,程序会自动创建出这些分类SELE

创建型材等级SPEC后,通过如下界面来选择型材库加入到等级中:

3 结构建模

结构建模先提供基本的功能,如建立一个普通的框架结构。

 

通过选择型材的等级,输入三个方向上的间距,来创建结构模型。

4 Conclusion

PipeCAD通过型材等级将型材库与设计模型联系起来,通过选择型材等级,输入间距来验证结构建模过程。由于框架结构在一般的设计院是由结构专业设计,为了避免重复建模及数据的准确性,折中的方法是从结构专业软件中导入结构模型。

 

致力于国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。



eryar 2021-09-07 18:42 发表评论

PipeCAD - 异常处理

$
0
0

PipeCAD - 异常处理

eryar@163.com

 

Key Words. PipeCAD, 三维管道设计软件,异常处理,Exception

 

1 Introduction

面向对象程序开发语言都提供了异常处理Exception。程序中的错误是多样化的,但出现错误程序直接崩溃,但发现错误能提供一些方式对错误加以纠正也比程序直接崩溃要友好很多。异常机制则通过规定异常可能发生的区域try,以及异常捕捉catch,来处理发生异常的善后问题。对于抛掷出来异常,可能是跨越数个函数调用而被捕捉处理。捕捉是根据抛掷的对象类型与捕捉对象类型的匹配来完成。

熟悉PDMS的脚本PML开发的技术人员,对于PML中异常应该会熟练使用。当使用PML报错时,会给出一个编号(由带括号的两个数字组成):

 这就是PML中的异常。对于异常的捕捉处理采用如下写法:

 关于PML更多异常处理细节可以参考PDMS的文档《Software Customisation Guide》。本文主要介绍PipeCAD中的异常处理。

2 Exceptions

因为PipeCAD的脚本是使用Python,所以当一个命令没有成功执行或者有其他Python语句有语法错误时,都会抛出异常。抛出异常后,脚本剩余部分代码将会中断,不被执行。并会给出错误原因的提示。

  PipeCAD中,对于可能抛出异常的地方加上try,异常的捕捉没有像PML那样给出一个编号,但是给出了异常的类型,根据异常不同的类型可以进行相应的异常处理。如上图是管理Admin模块中创建用户User时对于重名的异常处理:

 在命令窗口会现错误信息提示,在异常处理中也可以弹出错误对象框。

3 Conclusion

PipeCAD有的脚本使用PythonPipeCAD中的异常处理方式就是Python中异常处理的方式。PipeCAD实现自定义命令函数的异常处理,提高程序的健壮性。当有异常发生时,会给用户以信息提示。对于有脚本开发能力的技术人员来说,通过对异常的处理,可以方便实现一些功能。如当创建一个对象时,对象名称已经使用,则可以对这个名称的对象进行一些属性修改这个功能来说,使用异常就更直接。

致力于国产三维管道设计软件的开发,若您有任何意见、建议,欢迎交流。



eryar 2021-09-17 10:59 发表评论
Viewing all 519 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>