PipeCAD之管道标准库PipeStd

eryar@163.com

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

1. Introduction

前不久,两位老友徐总和毛总在上海浦东金桥的一茶一坐小聚,回想到几年前我们仨在那里聚会的情景。他们分别在A公司和I公司,我当时在做SPD的开发。在一起聊的话题也是关于设计软件的,当时也有一些思想碰撞的火花,想着做出一个什么软件,成为CEO,迎娶白富美,走上人生顶峰。结果几年过去,当年吹过的牛B,没有实现。其中有一个就是做一个管道标准库程序,方便管件的定义。定义好之后,可以导入AVEVA PDMS和Intergraph SmartPlant。

看着国内工厂/船舶设计软件如PDSOFT,UESOFT,PDMAX还有船舶设计软件SPD都不温不火,而且国外的AVEVA PDMS/Marine, Intergraph SmartPlant已经占据了国内市场,有时我也在想开发一个原来梦想的管道设计软件的意义和价值。

AVEVA PDMS/Marine我觉得是简单易用的软件,一致的操作方式,基于CSG的造型算法,还提供了二次开发语言PML及C#来对程序进行灵活扩展。基于文件的层次数据库,并提供了数据库的增、删、改及数据回退功能,可以用于大中型项目设计。由于很容易得到和谐版,所以用户很多。

Intergraph SmartPlant是美国的一款软件,由于其价格昂贵,在国内的用户都是不差钱的单位。由于没有使用过,所以对其不便于评价。但是由于国内外有业主会指定这款软件,所以国际上用户也很多。

再看国内的工厂/船舶设计系统PDSOFT,UESOFT,PDMAX及SPD等,都是基于AutoCAD开发的。早期基于AutoCAD,因为AutoCAD比较普及,所以会吸引一些会AutoCAD的用户。但是基于AutoCAD开发程序弊端之一是AutoCAD版本升级,程序要想适应AutoCAD,也必须跟着升级。弊端二是AutoCAD的提供的开发库ObjectARX, .NET等都不是开源的,如果是那些库出现BUG或是不支持的功能,要么去和Autodesk公司沟通,要么只有绕道了。有的使用ObjectARX的C++库开发,虽然程序性能好,还在使用MFC做GUI,但是开发效率低。弊端之三是有些功能与AutoCAD的功能纠缠不清,用户体验不太友好。

为了实现几年前的梦想,我决定开发一个管道设计软件PipeCAD。

2. PipeCAD

对PipeCAD的一个定位就是适用于中小型项目的管道设计软件。因为大型项目的用户一般都是用PDMS或SmartPlant。

使用开源库OpenCASCADE来进行三维图形开发,使用开源库Qt来进行GUI开发,提高程序开发效率。因为使用开源技术,出现BUG可以从根据上解决。不依赖其他闭源的软件,不会有其他软件升级带来的影响。

业务核心功能都自己实现,程序自主可控,方便增加新功能。

PipeCAD的初步开发以下功能模块:

l 管件库等级库管理程序PipeStd;

l 三维设计模块PipeCAD;

l 管道轴测图出图模块IsoAlgo。

3. PipeStd

PipeStd主要用来对管件标准数据、管道等级等数据进行管理。有了管件数据,就可以对管件进行三维显示。有了管道等级,就可以在三维设计模块来使用管件来对管道进行建模。PipeStd的使用方式与PDMS的Paragon模块类似,通过参数化的方式来定义管件。目前程序的主要功能已经实现,程序界面如下图所示:

其中还设想的功能有:

l 导入、导出PDMS中的管件及管道等级Piping Specification数据;

l 导入、导出SmartPlant中的管件及管道等级Piping Specification数据;

4. Conclusion

两位友人的提醒,决定开发一个三维管道设计软件PipeCAD。为中小型项目的管道设计提供了一个选择。核心功能都自己实现,程序自主可控。不依赖其他软件,如AutoCAD,提供良好的用户体验。

PipeCAD之管道标准库PipeStd的更多相关文章

  1. PipeCAD之管道标准库PipeStd(2)

    PipeCAD之管道标准库PipeStd(2) eryar@163.com Key Words. PipeCAD, PipeStd, 管道设计软件,管件库 1. Introduction 管道标准部件 ...

  2. PipeCAD之管道标准库PipeStd(3)

    PipeCAD之管道标准库PipeStd(3) Key Words: PipeCAD, PipeStd, Pipe Design 3D, Linux 1. Introduction    管道标准部件 ...

  3. Python标准库06 子进程 (subprocess包)

    这里的内容以Linux进程基础和Linux文本流为基础.subprocess包主要功能是执行外部的命令和程序.比如说,我需要使用wget下载文件.我在Python中调用wget程序.从这个意义上来说, ...

  4. Python标准库---子进程 (subprocess包)

    这里的内容以Linux进程基础和Linux文本流为基础.subprocess包主要功能是执行外部的命令和程序.比如说,我需要使用wget下载文件.我在Python中调用wget程序.从这个意义上来说, ...

  5. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  6. python 标准库 -- subprocess

    subprocess 主要功能室执行外部的命令和程序 一个进程可 fork 一个子进程, 并让这个子进程 exec 另外一个程序. 在 python 中, 可以通过标准库中的 subprocess 包 ...

  7. Python:标准库(包含下载地址及书本目录)

    下载地址 英文版(文字版) 官方文档 The Python Standard Library <Python标准库>一书的目录 <python标准库> 译者序 序 前言 第1章 ...

  8. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  9. go标准库的学习-io

    参考https://studygolang.com/pkgdoc 导入方式: import "io" o包提供了对I/O原语的基本接口.本包的基本任务是包装这些原语已有的实现(如o ...

随机推荐

  1. android删除表和清空表

    删除某一表: //删除某一个表 public void dropTable(SQLiteDatabase db){ db.execSQL("drop from tab_name") ...

  2. GridView 绑定 ObjectDataSource

    创建GridView <asp:GridView ID="GridView1" runat="server" DataSourceID="Obj ...

  3. @property 的本质是什么?

    将访问.变量.访问控制进行了绑定:编译器负责自动合成. @dynamic:不会自动合成成员变量和存取方法. @property 的本质是什么?@property = ivar + getter + s ...

  4. 关于element-ui框架里面table组件的使用

    1.表格的数据放哪里:后台返回的列表数据放到:data后面. 2.每一个列怎么显示数据:返回的列表里面的属性想要在列显示出来,将对应的字段名写到prop后面就行. 3.列表上面想显示序号:{{scop ...

  5. 【Git 二】Windows|Mac 安装 Git

    Windows 或 Mac 上安装 Git 相对于 Linux 上安装来说步骤是简便一些的.Linux 安装步骤见:[Git 一]Linux安装Git 一.Windows 安装 Git 直接下载对应 ...

  6. 基于vue的无缝滚动组件

    vue-seamless-scroll A simple, Seamless scrolling for Vue.js 在awesome上一直没有发现vue的无缝滚动组件,在工作之余写了个组件,分享出 ...

  7. 1193 Eason

    Eason Acceteped : 57   Submit : 129 Time Limit : 1000 MS   Memory Limit : 65536 KB Description 题目描述 ...

  8. zookeeper 性能测试

    zookeeper压力测试:性能对比(3个节点,5个节点,7个节点 创建节点.删除节点.设置节点数据.读取节点数据性能及并发性能) 测试结果如下: 五次测试三节点结果: 创建100W节点用时:15.0 ...

  9. ArcGIS api for javascript——1,2,3综合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  10. Java NIO和IO的主要差别

    我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景.以及它们怎样影响您的代码设计. Java NIO和IO的主要差别 下表总结了Java N ...