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

GET 3D MOUSE POSITION WITH THE DEPTH BUFFER

$
0
0

I would suggest looking into source code of Draw Harness command vstate, which seems to be prints some information, that can be useful in your case:

Draw[22]> vstate -entities
Detected entities: b1 Depth: 109.763 Distance: 124.217 Point: 45.6609 50 64.9933 (Select3D_SensitiveTriangulation)
Detected Shape: TopoDS_TSolid b2 Depth: 118.732 Distance: 130.122 Point: 40 43.8525 61.7375 (Select3D_SensitiveTriangulation)
Detected Shape: TopoDS_TSolid b0 Depth: 124.353 Distance: 142.24 Point: 36.4524 40 59.6971 (Select3D_SensitiveTriangulation)
Detected Shape: TopoDS_TCompound
Get 3D mouse position with the depth buffer
Get 3D mouse position with the depth buffer | OPEN CASCADE

eryar 2020-11-24 20:55 发表评论

RvmTranslator7.3.2

$
0
0

RvmTranslator7.3.2

eryar@163.com

 

RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS)/AVEVA Marine to STEP, IGES, STL, DXF, 3D PDF, OBJ, 3DXML, IFC,.etc. So it can be used for exchanging model data between other CAD software, such as Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, .etc. 

RvmTranslator可以将AVEVA PDMS/Plant/Marine中导出的RVM文件进行可视化,以及将RVM转换成常见的三维文件格式。如STEPIGESSTLDXF, OBJ, 3DPDF, 3DXML, IFC等,便于与其他CAD系统进行数据交换,如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley等。 

RvmTranslator7.3.2发布啦!主要增加了尺寸测量功能。 

1 完善图形设置功能:

 

可以设置视图投影类型:平行投影和透视投影;

可以设置是否显示坐标轴;

可以设置是否显示视图右上方的方块;

可以设置视图背景色;

注:通过OK按钮将这些设置保存到了配置文件RvmTranslator.ini中,下次程序启动会使用这些配置选项。只有通过这个图形设置界面的设置才能保存到配置文件,其他视图操作如工具栏上的相关设置不保存到文件,只在程序运行中有效。

 

2 增加尺寸测量功能:

 

通过菜单Query->Meause Distance来激活测量距离功能。选择模型上的两个点,即可显示出距离标注。再次点击菜单Query->Meause Distance,勾选取消,即可清除标注。有了距离测量功能,可以方便用户简单测量的要求,方便模型的审查。

 

下载RvmTranslator7.3.2https://github.com/eryar/RvmTranslator/releases

 RvmTranslator7.3.2


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


eryar 2020-11-24 22:15 发表评论

PipeCAD - PipeIso件号标注

$
0
0

PipeCAD - PipeIso件号标注

eryar@163.com

 

Abstract. 虽然现在提倡无纸化、数字化,但是在当前的工程设计领域,二维工程图纸仍然是设计人员表达设计的主要手段和信载体,也是工程施工阶段和监理的重要依据。二维工程图不仅包含几何信息,还有大量富有工程意义的标注信息,这些标注信息通常由设计人员手工交互标注。在现实工程设计过程中,大量交互的标注操作不仅复杂、耗时,而且容易出错。如何又快(出图速度快)又好(标注美观、不干涉重叠等)的自动标注,是提高自动生成工程图质量的关键。

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图,标注

1. Introduction

How time flys! 转眼已经到了十二月。2020年是不平凡的一年,新冠肺炎(COVID-19)已经夺走了百万人的生命。想想武汉封城,宅家过年好像是昨天的事情。美国总统大选,两位古稀老人也是很拼的。由于美国的制裁,华为出售荣耀。没有独立自主的核心技术,卡脖子现象是避免不了。

 

1128日,成功完成万米海试的“奋斗者”号全海深载人潜水器胜利返航。

 

1232310分,嫦娥五号上升器3000N发动机工作约6分钟,成功将携带样品的上升器送入到预定环月轨道。这是我国首次实现地外天体起飞。

 

毛主席的《水调歌头·重上井冈山》可上九天揽月,可下五洋捉鳖,谈笑凯歌还。世上无难事,只要肯登攀。

2020年也是充实的一年,很有成就感的作品之一就是管道ISO图生成程序IsoAlgo基本成形。管道ISO图自动生成程序也是工业软件的一个卡脖子的痛点,广泛应用于工程设计行业,如化工、造纸、制药、造船、海工等。目前生成ISO图的国际主流程序是被鹰图Intergraph收购的ISOGEN

2. 件号自动标注

虽然现在提倡无纸化、数字化,但是在当前的工程设计领域,二维工程图纸仍然是设计人员表达设计的主要手段和信载体,也是工程施工阶段和监理的重要依据。二维工程图不仅包含几何信息,还有大量富有工程意义的标注信息,这些标注信息通常由设计人员手工交互标注。在现实工程设计过程中,大量交互的标注操作不仅复杂、耗时,而且容易出错,,经常会出现同一对象在不同视图上标注信息不一致的情况;此外,标注的质量还往往依赖于工程师的技术能力和经验。如果出图系统能实现自动标注,使工程师摆脱重复枯燥的劳动,而将精力放在更有创造性的工作上将大大地提高设计效率和设计质量。如何又快(出图速度快)又好(标注美观、不干涉重叠等)的自动标注,是提高自动生成工程图质量的关键。

田景成等研究了钢结构节点图的标注自动布局问题提出了基于可标注区域划分的布局方法钱玉森等研究了水工结构钢筋详图的标注自动布局问题提出了基于可标注域的布局方法和干涉分类处理方法;黄学良等采用网格化的方法,将标注布局问题简化为在状态矩阵中寻找符合某种条件的小块矩阵问题。布局效率高、算法通用性强。黄晓剑提出了基于动态优先级的带回溯的标注位置搜索算法。提出的标注动态优先级想法可以用来处理村注时优先给标注位置相对固定的标注。但是递归回溯算法处理标注较少,标注与标注干涉较少的情况效果较好,如果标注很多,标注间干涉多了后,递归算法容易造成递归栈溢出或者花费较长的时间。

通过学习实践,实现自动标注算法,基本达到又快又好的要求。下面给出几个标注效果图:

3. Conclusion

管道ISO自动标注功能是自动生成ISO图程序中较关键的功能,通过学习实践,实现了件号自动标注功能,基本满足要求。

4. References

[1] 黄学良,陈钢,陈立平等. 标注自动布局的网格化方法. 计算机辅助设计与图形学学报.2008

[2] 田景成,刘晓平,唐卫清等. 钢结构中节点图的自动标注算法. 计算机辅助设计与图形学学报.1999

[3] 黄晓剑. ISO图的自动标注及智能编辑. 中国科学院计算技术研究所. 1998


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


eryar 2020-12-04 10:28 发表评论

RvmTranslator7.4.0-PDMS Text

$
0
0

RvmTranslator7.4.0-PDMS Text

eryar@163.com

 

RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS)/AVEVA Marine to STEP, IGES, STL, DXF, 3D PDF, OBJ, 3DXML, IFC,.etc. So it can be used for exchanging model data between other CAD software, such as Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, .etc.

RvmTranslator可以将AVEVA PDMS/Plant/Marine中导出的RVM文件进行可视化,以及将RVM转换成常见的三维文件格式。如STEPIGESSTLDXF, OBJ, 3DPDF, 3DXML, IFC等,便于与其他CAD系统进行数据交换,如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley等。

RvmTranslator7.4.0发布啦!主要增加了生成AVEVA PDMS中文的PML宏文件,可以在PDMS中生成三维汉字和其他任意字符。

考虑到PDMS在国内的普及,有时可能需要在模型中标记一些汉字,所以开发插件支持在PDMS中创建三维汉字。程序采用PML结合C++的方式开发,其中PML主要实现在PDMS中的界面,C++实现核心的功能。程序界面如下图所示:

 

 

为了方便用户使用此功能,现在将其集成到RvmTranslator中。使用方法如下:

通过菜单File->PDMS Text或者工具栏上的按钮,可以打开转换界面:

 

 

 界面参数为:

Text: 需要转换的文字,可以是中文及其他任意文字;

Size: 文字大小;

Thickness: 文字在PDMS中的厚度;

Font:字体;

点击OK即可在程序目录生成一个PML宏文件:PdmsText.pmlmac。在PDMS中选择一个ZONE,再将这个文件直接拖动到PDMSCommand Window中即可生成文字模型:

 

下载RvmTranslator

https://github.com/eryar/RvmTranslator/releases


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


eryar 2020-12-07 21:57 发表评论

RvmTranslator7.4.1-Clipping Box

$
0
0

RvmTranslator7.4.1-Clipping Box

eryar@163.com

 

RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS)/AVEVA Marine to STEP, IGES, STL, DXF, 3D PDF, OBJ, 3DXML, IFC,.etc. So it can be used for exchanging model data between other CAD software, such as Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, .etc.

RvmTranslator可以将AVEVA PDMS/Plant/Marine中导出的RVM文件进行可视化,以及将RVM转换成常见的三维文件格式。如STEPIGESSTLDXF, OBJ, 3DPDF, 3DXML, IFC等,便于与其他CAD系统进行数据交换,如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley等。

RvmTranslator的三维浏览功能是免费使用的,可以用来对AVEVA PDMS/Marine导出的RVM模型进行三维浏览。若导出RVM时导出了属性信息,也可以RvmTranslator中进行属性查询。

RvmTranslator是国产自主开发产品,三维浏览功能免费使用,不需要授权,可以替代AVEVA Review/Autodesk Navisworks来对PDMS模型进行模型审查。

程序的三维视图相关操作与PDMS类似,熟悉PDMS的用户很容易上手。程序精简小巧,不占用大量硬盘空间。欢迎使用并提出改进意见、建议。

RvmTranslator7.4.1发布啦!增加视图剖切功能,可以指定剖切范围,对范围外的模型进行剖切,这样便于观察指定范围内部模型。

使用方法:

通过菜单View-> Clipping Box或者工具栏上的按钮,都可以打开Clipping Box对话框:

 

当在三维视图中选择的有模型时,会根据模型的范围自动设置Clipping Box。用户可根据需要调整范围的位置和大小。

点击OK铵钮即可显示出剖切内部模型。

 

下载RvmTranslator

https://github.com/eryar/RvmTranslator/releases


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


eryar 2020-12-09 22:51 发表评论

PipeCAD - PipeIso支持PCF

$
0
0

PipeCAD - PipeIso支持PCF

eryar@163.com

 

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图

 

管道轴测图(ISO图)是管道制作安装所需的重要图纸,其中管件符号是固定大小,管子长度可变的一种非比例投影的出图形式。IsoAlgo可以读取管道标准数据文件PCFIDF生成管道轴测图纸。为了方便实时查看生成结果,集成IsoAlgoPipeCAD中,命名为PipeIso程序。PipeIso可以显示PCF/IDF的三维模型,并可查询相应的管件信息,还可以生成ISO图进行预览。

 

[Pipeline model viewer]三维视图中,选中一个管件,点击菜单Query->Attributes...可以查看管件相关信息。

 

在左边Design Explorer列表中选择一个管道,点击工具栏上的Generate ISO即可以生成管道ISO图。

完善数据读取功能,使程序能够支持PCF管道数据文件。这样程序对于两个主流管道数据文件IDF/PCF都可以读取,从而生成ISO图。下面列出几个读取PCF在三维视图和生成ISO图的效果:

 

 

 

 目前程序标注的件号只是一个示意,后面完善材料表的同时再实现。三维视图中只用一条线来表示管道上的管件显得不太直观。其实可以给一个本地数据库,将管件相关尺寸分类型以固定的列表来输入,可以实现管道模型的完美重建。缺点是只能输入类型固定的管件数据,不够灵活,用户不能自定义任意类型管件。优点是对于常用的标准管件,可以快速设置尺寸。综上所述,再提供一个标准管件数据快速生成功能,可以输入管件的尺寸,便于在PipeIso的三维视图中重建管道模型。还可以生成PipeStd中的管件数据。

 软件为自主开发,欢迎试用并提供宝贵意见、建议。若对软件感兴趣,可以从如下地址获取到软件试用:https://github.com/eryar/PipeCAD/releases

 


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


eryar 2020-12-16 13:13 发表评论

PipeCAD - PipeIso Piping Spec

$
0
0

PipeCAD - PipeIso Piping Spec

eryar@163.com

 

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图

 

PipeIso-0.3.0发布啦!通过增加本地管道等级数据库,完美重建管道三维模型。

PipeIso的三维视图只显示一条线看得不是太直观,结合管道等级Spec和管件代码ItemCode可以唯一确定一个管件的数据。通过增加本地管件数据库,使其与管道等级及管件代码关联,即可以重现管道的三维模型。 

通过菜单Settings->Specification可以打开管道等级设置对话框,在Catalogue Explorer中选择相应的管件类型,即会出现数据库列表,及与之对应的尺寸图示,方便数据的输入。 

其中ItemCode的数据输入为管道等级Spec加上管件的代码ItemCode,用/连接起来。如下图所示: 

若管件的三维模型没有显示,则会绘制一条线,可以通过选择这条线来查询其属性,查得其管道等级Piping SpecItem Code,再到Specification中相应类型的管件中输入尺寸数据,即可以显示出管件的三维模型。

通过本地管道等级数据库的方式,可以简化标准管件的模型尺寸数据定义。有了管件的尺寸数据,即可以生成管件三维模型。在此基础上,再加上一些交互操作,如模型操作器来在三维视图中对管件的位置进行调整,就是一个管道建模出图的程序了。唯一的不足之处就是管件不能由用户自定义,若遇到类型中没有的管件,除了修改程序增加相应功能没有其他办法。
  

 软件为自主开发,欢迎试用并提供宝贵意见、建议。若对软件感兴趣,可以从如下地址获取到软件试用:https://github.com/eryar/PipeCAD/releases

 


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


eryar 2020-12-19 18:43 发表评论

PipeCAD - PipeIso Material List

$
0
0

PipeCAD - PipeIso Material List

eryar@163.com

 

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图

 

材料表是管道ISO轴测图的重要组成部分,ISO图中的材料经过汇总分类后,对每个管件都会有一个件号一一对应。材料表中的管件号与图面的上的管件号一致,方便材料查找。并且材料表的内容及位置都可以灵活配置,方便生成各个公司所需的样式。 

ISO图的配置文件是IsoAlgo.cfg,每种出图风格可以保存一个文件,把要用的出图风格改名为IsoAlgo.cfg即可。这个文件是JSON格式的文本文件,直接用记事本打开即可编辑。

首先是材料表的基本配置:

ListDatum:材料表的原点;

CharacterSize:材料表中文字大小;

ItemCodeLength:材料编码保留长度;

 

配置表格每列内容:

 

配置材料列表中可替换文字:

 

IsoAlgo提供灵活的材料列表配置选项,使材料表能经过配置满足各种需求。列出几个材料列表生成效果图:  

软件为自主开发,欢迎试用并提供宝贵意见、建议。若对软件感兴趣,可以从如下地址获取到软件试用:https://github.com/eryar/PipeCAD/releases

 


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


eryar 2020-12-25 20:10 发表评论

PipeIso - PDMS2IDF

$
0
0

PipeIso - PDMS2IDF

eryar@163.com

 

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图

 

AVEVA PDMS相对是很开放的软件,从数据到二次开发。对于模型审查,可以导出RVM及属性文件;对于管道数据而言,可以导出IDF文件。对于有编程技能的工程师,还提供PML.NET开发语言支持,方便对其功能进行深度定制。

PCF/IDF文件是鹰图Intergraph收购的Alias ISOGEN的管道数据文件。PCF(Piping Component File)IDF(Intermediate Data File)包含了生成管道ISO图需要的所有信息。即是管道ISO图对应的数字化文件。在数字化交付过程中,对应于管道ISO图的数字化文件即是IDF/PCFAVEVA生成ISO图的模块IsoDraft也是ISOGEN的一个分支,所以可以直接生成IDF。设置方式是以管理员权限进入IsoDraft模块,从菜单Options->Modify来对ISO出图风格设置: 

Reports and Symbol File设置页,设置Transfer File的路径Directory及文件名Filename。这样配置的文件名只是一个固定的,不够灵活。所以利用PML开发一个小插件PDMS2IDF,可以批量导出以管道名来命名的IDF文件,方便数字化交付使用。

程序用法简单,将pdms2idf.pmlfrm文件放到PMLLIB目录中,并在命令窗口输入命令:show !!pdms2idf,出现导出IDF文件程序界面: 

通过添加要导出的PIPE/BRANCH到导出列表,再设置导出目录,点击Apply

 

对于导出的IDF文件,可以使用自主开发的管道ISO图程序PipeIso进行三维浏览及生成ISO图:  

PipeIso软件为自主开发,欢迎试用并提供宝贵意见、建议。若对软件感兴趣,可以从如下地址获取到软件试用:https://github.com/eryar/PipeCAD/releases

 

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

 


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


eryar 2020-12-27 09:41 发表评论

PipeIso - IDF中文支持

$
0
0

PipeIso - IDF中文支持

eryar@163.com

 

Key Words. PipeCAD, PipeIso, IsoAlgo, ISO, PCF, IDF, 管道轴测图

 

前面提供了一个从PDMS设计模块直接导出IDF文件的插件,有人提出了IDF文件中文是乱码的问题。由于原来是使用的PDMS自带SAMPLE项目测试,IDF文件中只有英文,所以没有关注这个问题。若PDMS管道模型的材料描述包含中文,导出到IDF后,存在这个问题。用记事本之类的文本编辑工具打开IDF文件查看,可以看到中文是显示的乱码,不过也有一定规律,如在两个&之间的为中文数据等。

 

PipeIso软件是自主开发软件,国产软件必须支持中文。如下图所示,为中文材料描述在软件PipeIso中显示的效果。

PipeIso软件为自主开发,欢迎试用并提供宝贵意见、建议。若对软件感兴趣,可以从如下地址获取到软件试用:https://github.com/eryar/PipeCAD/releases


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


eryar 2020-12-30 15:18 发表评论

PipeCAD Project

$
0
0
     摘要: 聚焦PipeCAD这个产品的两个模块:Paragon和Design,为用户提供一个精巧、不依赖AutoCAD的自主研发的管道三维设计软件。
  阅读全文

eryar 2021-01-15 23:28 发表评论

PipeCAD Grid

$
0
0

PipeCAD Grid

eryar@163.com

 

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

 1. Introduction

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

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

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

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

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

 

通过设置XYZ三个方向上的间距,来快速生成轴网:

 2. Python

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

 3. Conclusion

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

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


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


eryar 2021-01-18 20:38 发表评论

OpenCASCADE Chamfer 2D

$
0
0

OpenCASCADE Chamfer 2D

eryar@163.com

 

 二维的倒角Chamfer功能可以将两个不平行的曲线进行倒角。如下图所示为QCAD中进行倒角的效果图:选择要倒角的两个边,及设置两个边上的倒角距离。

 

OpenCASCADE中也提供了这个二维曲线倒角功能,使用Tcl脚本在DRAW中显示如下:

polyline p 0 0 0 10 0 0 10 10 0

chamfer2d r p 3 5

vdisplay r

  

在源文件BRepTest_Fillet2DCommands.cxx中找到命令chamfer2d的实现: 

//=======================================================================
//function : chamfer2d
//purpose : Chamfer 2d.
//usage : chamfer2d result wire (or edge1 edge2) length1 length2
//=======================================================================
static Standard_Integer chamfer2d(Draw_Interpretor& di, Standard_Integer n, const char** a)
{
if (n != 5 && n != 6)
{
di << "Usage : chamfer2d result wire (or edge1 edge2) length1 length2";
return 1;
}
TopoDS_Shape W;
TopoDS_Shape E1, E2;
if (n == 6)
{
// Get the edges.
E1 = DBRep::Get(a[2], TopAbs_EDGE, Standard_True);
E2 = DBRep::Get(a[3], TopAbs_EDGE, Standard_True);
}
else
{
W = DBRep::Get(a[2], TopAbs_WIRE, Standard_True);
}
// Get the lengths.
const Standard_Real length1 = (n == 6) ? Atof(a[4]) : Atof(a[3]);
const Standard_Real length2 = (n == 6) ? Atof(a[5]) : Atof(a[4]);
// Algo.
 ChFi2d_ChamferAPI algo;
if (n == 6)
{
const TopoDS_Edge& e1 = TopoDS::Edge(E1);
const TopoDS_Edge& e2 = TopoDS::Edge(E2);
algo.Init(e1, e2);
}
else
{
const TopoDS_Wire& w = TopoDS::Wire(W);
algo.Init(w);
}
// Prepare the chamfer.
 algo.Perform();
// Get the result.
TopoDS_Edge M1, M2; // modified E1 and E2
TopoDS_Edge chamfer = algo.Result(M1, M2, length1, length2);
if (chamfer.IsNull())
{
di << "Error: the algrithm produced no result.";
return 1;
}
if (n == 6)
{
// Set result for DRAW.
DBRep::Set(a[1], chamfer);
// Update neighbour edges in DRAW.
DBRep::Set(a[2], M1);
DBRep::Set(a[3], M2);
}
else // recreate the wire using the chamfer
 {
BRepBuilderAPI_MakeWire mkWire(M1, chamfer, M2);
if (mkWire.IsDone())
DBRep::Set(a[1], mkWire.Wire());
else
DBRep::Set(a[1], chamfer);
}
return 0;
}

从上述源码可以看出,二维曲线倒角功能主要是由类ChFi2d_ChamferAPI实现。OpenCASCADE中的算法类的大致套路就是:

Init():初始化:数据输入。给定几种条件的初始化函数,对应几种情况的数据输入。

Perform():执行计算。根据输入数据,计算出结果;

Result()/Get():得到计算结果。

 

二维曲线的倒角功能是相对简单的功能,所以找到类ChFi2d_ChamferAPI中源码看看实现过程:

// Constructs a chamfer edge.
// Returns true if the edge is constructed.
Standard_Boolean ChFi2d_ChamferAPI::Perform()
{
myCurve1 = BRep_Tool::Curve(myEdge1, myStart1, myEnd1);
myCurve2 = BRep_Tool::Curve(myEdge2, myStart2, myEnd2);
// searching for common points
if (myCurve1->Value(myStart1).IsEqual(myCurve2->Value(myEnd2), Precision::Confusion()))
{
myCommonStart1 = true;
myCommonStart2 = false;
}
else
{
if (myCurve1->Value(myEnd1).IsEqual(myCurve2->Value(myStart2), Precision::Confusion()))
{
myCommonStart1 = false;
myCommonStart2 = true;
}
else
{
if (myCurve1->Value(myEnd1).IsEqual(myCurve2->Value(myEnd2), Precision::Confusion()))
{
myCommonStart1 = false;
myCommonStart2 = false;
}
else
{
myCommonStart1 = true;
myCommonStart2 = true;
}
}
}
return Standard_True;
}

执行计算函数Perform中,根据边EDGE中的曲线数据,判断两个曲线的端点处是不是相连接的,并记录下连接状态:是首首连接、首尾连接等。这里面判断两个点是不是相等使用的gp_PntIsEqual()函数,这个是根据两个点之间的距离来判断的,需要计算出两个点之间的距离。这里可以使用距离的平方来判断SquareDistance来判断两个点是不是相等,可以提高性能。因为计算距离需要要开方,开方比较耗时。关于开方的数值算法,还有个传奇故事:一个Sqrt函数引发的血案 https://www.cnblogs.com/pkuoliver/archive/2010/10/06/sotry-about-sqrt.html

 

// Returns the result (chamfer edge, modified edge1, modified edge2).
TopoDS_Edge ChFi2d_ChamferAPI::Result(TopoDS_Edge& theEdge1, TopoDS_Edge& theEdge2,
const Standard_Real theLength1, const Standard_Real theLength2)
{
TopoDS_Edge aResult;
if (Abs(myEnd1 - myStart1) < theLength1)
return aResult;
if (Abs(myEnd2 - myStart2) < theLength2)
return aResult;
Standard_Real aCommon1 = (myCommonStart1?myStart1:myEnd1) + (((myStart1 > myEnd1)^myCommonStart1)?theLength1:-theLength1);
Standard_Real aCommon2 = (myCommonStart2?myStart2:myEnd2) + (((myStart2 > myEnd2)^myCommonStart2)?theLength2:-theLength2);
// make chamfer edge
GC_MakeLine aML(myCurve1->Value(aCommon1), myCurve2->Value(aCommon2));
BRepBuilderAPI_MakeEdge aBuilder(aML.Value(), myCurve1->Value(aCommon1), myCurve2->Value(aCommon2));
aResult = aBuilder.Edge();
// divide first edge
BRepBuilderAPI_MakeEdge aDivider1(myCurve1, aCommon1, (myCommonStart1?myEnd1:myStart1));
theEdge1 = aDivider1.Edge();
// divide second edge
BRepBuilderAPI_MakeEdge aDivider2(myCurve2, aCommon2, (myCommonStart2?myEnd2:myStart2));
theEdge2 = aDivider2.Edge();
return aResult;
}

这个代码很好理解,根据Perform()函数中计算到的相连状态,再结合参数曲线计算出倒角得到的线aResult,及倒角后的两条边。

二维曲线倒角算法相对简单,在理解二维曲线倒角的基础上再去深入理解三维倒角原理。

因为OpenCASCADE的BREP结构中没有保存从Vertex到Edger的关系,所以查找两条边EDGE的相连关系时只能从几何点之间的距离来处理。

对于距离的比较,能直接用平方距离比较的情况下尽量避免开方,可以提高性能。


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


eryar 2021-01-31 19:14 发表评论

[转]Python 重新加载模块

$
0
0

Python 3.X重新加载模块


为防止两个模块互相导入的问题,Python默认所有的模块都只导入一次,如果需要重新导入模块,
Python2.7可以直接用reload(),Python3.X可以用下面几种方法:

方法一:基本方法
from imp import reload
reload(module)

方法二:按照套路,可以这样
import imp
imp.reload(module)

方法三:看看imp.py,有发现,所以还可以这样
import importlib
importlib.reload(module)

方法四:根据天理,当然也可以这样
from importlib import reload
reload(module)


https://blog.csdn.net/xiakexiaohu/article/details/74999108


eryar 2021-02-03 16:00 发表评论

OpenCASCADE Chamfer 3D Basics

$
0
0

OpenCASCADE Chamfer 3D Basics

eryar@163.com

倒角Chamfer造型功能是几何内核一般都具有的功能,OpenCASCADE中也提供倒角Chamfer造型功能。如下图所示:

 

Draw Test Harness中的源文件BRepTest_ChamferCommands.cxx可以看到三维倒角功能的类是BRepFilletAPI_MakeChamfer,通常使用倒角类有两种方式:

指定要倒角的边Edge及倒角距离:这种情况是对倒角边相邻的两个面进行等距离倒角;

指定要倒角的边Edge及两个倒角距离,还有一个面Face:这种情况是对倒角边相邻的两个面进行不等距离倒角,其中距离1是在面Face上的倒角距离。即当两个倒角距离不相等时,需要多给一个参数一个面来确定倒角距离。

 

Draw Test Harness中对应于三维倒角的命令是: chamf

 

对于等距倒角可以用Tcl脚本在DRAW中演示如下:

box b 10 10 10
explode b e
chamf ch b b_1 5
vdisplay ch

通过命令box创建一个边长为10的立方体,通过命令explode将立方体按边e分解。通过命令chamf来对立方体进行等距倒角:指定立方体b及倒角边b_1和倒角距离5

 

对于不等距倒角可以用Tcl脚本在DRAW中演示如下:

box b 10 10 10
explode b f
explode b_1 e
chamf ch b b_1_1 b_1 3 8
vdisplay ch

 通过命令box创建一个边长为10的立方体,通过命令explode将立方体按面f分解,再将一个面b_1按边e分解。通过命令chamf来对立方体进行不等距倒角:指定立方体b及倒角边b_1_1及距离1所在面b_1和两个倒角距离38

最后,我们打开源码工程发现倒角库中有个ChFiKPartpackage,对于倒角功能里面缩写有这样的规则:Chamfer一般缩写为ChFillet一般缩写为FiFil。那么这个K Part指的是什么呢?通过对源码的分析,K Part指的是倒角或倒圆的结果,如下图所示:

 

这里先引入opencascade中倒角中K Part的概念,后面再对其源码进行深入分析。

 

今天是小年,马上就要到农历牛年的春节了,提前给大家拜年啦!经历了2020年的新冠疫情,健康的身体才是革命的本钱。感谢大家的信任和支持,祝大家身体健康,万事如意,牛年牛牛牛!

 


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


eryar 2021-02-05 21:36 发表评论

OpenCASCADE Rolling Ball

$
0
0

OpenCASCADE Rolling Ball

eryar@163.com

 

在《The NURBS Book》书中引入了三边球面片(Three-sided Spherical Surface)的概念:

当三个曲面两两相交时,会使三边界曲线交于一个角点(如图a),由于在产品零部件中,尖边和尖角经常是我们不希望有的,一方面是会有应力集中,另一方面尖的部分容易使人受伤。因此,经常需要对曲面的尖边和尖角进行处理,使其变得光滑,这种操作通常称为“圆角”或“倒角”,所得到的曲面称为圆角曲面(Fillet Surface)。一个常用的获得圆角曲面的概念性方法是“滚球法”(Rolling marble)。设一个半径为R的小球在物体内侧沿着所有的边界曲线滚动,得到图b中所示的曲面S4-S7, S4-S6为倒边曲面(edge fillet)S7为倒角曲面(Corner fillet)。倒角曲面S7是一个三边曲面片(Three-side patch)。

 

在实际造型时也经常需要对曲面连接部分进行光滑处理,除了常见的倒角Chamfer和倒圆Fillet以外,opencascade也提供了rolling ball的造型算法用来对相边曲面进行圆滑处理,如下图所示: 

如下图所示为对圆柱相连部分使用Rolling Ball”生成一个圆滑过渡的圆弧曲面。

 

对于这种对称的模型,也可以使用旋转造型算法,把轴的外轮廓构造出来,再绕轴线旋转一周也可以得到。当相连曲面部分不对称的时候,旋转造型也无能为力了。

 

如上图所示,当相连接部分是不对称的曲线椭圆时,旋转造型算法已经不适用,这时就需要使用“滚球法”来对连接部分进行处理。对于更复杂的情况,如下图所示的也适用。

 

这里先引入opencascade中对相连曲面圆滑处理的造型算法“滚球法”Rolling Ball,有兴趣的同学可以自己尝试。对实现原理感兴趣的,可以自己Debug源码。希望有更多人去深究源码,做到知其所以然,提高数学的应用水平。

 


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


eryar 2021-02-08 13:29 发表评论

OpenCASCADE Connect Edges to Wires

$
0
0

OpenCASCADE Connect Edges to Wires

eryar@163.com

 

1 Introduction

在边界表示法(BREP)中,WIRE是由首尾依次相连的EDGE组成的闭合结构,有的内核也叫做LOOP。BREP结构中,就是通过WIRE来限定FACE的边界范围。FACE中的几何曲面都是用参数曲面形式来表示,简单的通过参数U,V范围来限定,只能得到一些简单规则的曲面片。不规则的任意形状的曲面片,只能通过WIRE来限定。例如,地球这个球面,中国的边境线就相当于WIRE,限定出中国的疆土。

有时在构造WIRE的时候,拿到的是一些无序的EDGE,如何将无序的EDGE生成WIRE,OpenCASCADE中提供了多种方法,下面分别来对这些方法进行介绍。

 

2 BRepBuilderAPI_MakeWire

BRepBuilderAPI_MakeWire是生成WIRE最直接的类,底层使用类BRepLib_MakeWire。生成WIRE的时候有两种方式:一种是依次Add边EDGE;一种是添加一些边,这些边可以是无充的。两种方式的处理逻辑是不同的,对于第一种依次添加EDGE的方式,则要求添加的EDGE是相连的。若不相连或者有其他错误,会直接给出错误信息:

 

对于添加一些边EDGE的方式,会对添加的EDGE做一个相连检查。

 

3 ShapeAnalysis_WireOrder

ShapeAnalysis_WireOrder主要用于将无序的EDGE生成WIRE时,EDGE的首尾依次相连的顺序Order。这个类的方式就简单一些,直接根据EDGE的两个端点坐标来检查相连状态。这个功能原来也介绍过:OpenCASCADE中散乱Edge生成Wire

https://www.cnblogs.com/opencascade/p/WireOrder.html

 

 

4 ShapeAnalysis_FreeBounds

ShapeAnalysis_FreeBounds这个类中提供static函数ConnectEdgesToWires()用于将无序的EDGES生成一些WIRE。所以这个类可以用于检测一些无序的EDGE中存在几个WIRE。

 

5 BRepAlgo_Loop

BRepAlgo_Loop用于将一个FACE上的多个EDGE生成多个WIRE。功能与ShapeAnalysis_FreeBounds中的ConnectEdgesToWires类似,但多个要求,这些EDGE都是一个FACE上的EDGE,而且对这些EDGE的Orientation也有要求。若Orientation不是依次相连,则也会生成WIRE失败。

 

6 Conclusion

综上所述,OpenCASCADE考虑了将无序EDEG生成WIRE的情况。由于是多人协同开发,造成重复的代码实现。建议将重复实现整理归纳,只保留一份稳定性、性能好的实现。

 


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


eryar 2021-03-06 11:34 发表评论

解析几何之二次型

$
0
0

解析几何之二次型

eryar@163.com

Abstract. 通过二次多项式的形式把二次曲线和二次曲面之间的求交问题统一成对将参数方程代入隐式方程得到问题的求解。

Key Words. Quadratic Form, Conic, Analytical Intersection

1. Introduction

二次型(quadratic form):n个变量的二次多项式称为二次型,即在一个多项式中,未知数的个数为任意多个,但每一项的次数都为2的多项式。线性代数的重要内容之一,它起源于几何学中二次曲线方程和二次曲面方程化为标准形问题的研究。二次型理论与域的特征有关。

二次型是n个变量上的二次齐次多项式。下面给出一个、两个、和三个变量的二次形式:

 

其中a, ...,f是系数。注意一般的二次函数和二次方程不是二次形式的例子,因为它们不总是齐次的,可能包含一次项和常数项。

几何造型中的圆锥曲线Conic Curve与二次曲面Quadric是一般的二次方程,方程分别为:

 

 在学习《线性代数》时也有关于二次型及其标准型的内容,在同济第四版《线性代数》书中这样写到“二次型及其标准型,这样一个问题,在许多理论问题或实际问题中常会遇到,现在我们把这类问题一般化,讨论n个变量的二次齐次多项式的化简问题。” 学这个有什么用啊?能解决哪些实际问题?下面我们看看二次型在实际问题中的应用。

2. Classification

在《工程技术中的偏微分方程》一书中,有二次型的一个应用,即对二次线性方程的分类Classification。我们从实际问题出发,可以推导并建立热传导方程,波动方程和Laplace方程,同时指出他们分别是抛物型、双曲型和椭圆型三类方程的典型代表。设有二阶线性方程

 

在解析几何中,XOY平面上的二次曲线方程的一般形式:

 

通过适当的坐标变换可以将上式化简成椭圆、双曲线和抛物线的标准方程,即对于任意二次圆锥曲线,都可以通过化成标准型的方法来判断圆锥曲线的类型。根据不同的类型,选择不同的求解方法。

 

3. Analytical Intersection

在《计算机图形学基础教程》书中有一章节“求交分类”,对几何曲线曲面求交进行了分析。摘录书中部分内容如下:

在几何造型中,通常利用集合运算(并、交、差运算)实现复杂形体的构造,而集合运算(布尔运算)需要大量的求交运算。如何提高求交的实用性、稳定性、速度和精度等,对几何造型系统至关重要。

在早期的几何造型系统中,用多面体来表示形体。在这种多面体模型中,形体所有的表面都是平面,所有的边都是直线段,因此求交计算主要是线段和平面的求交,求交问题的解决都相对简单。

但多面体模型的缺点是明显的。它只能近似表示形体。同时,复杂形体表面的离散会带来巨大的数据量,要求计算机有较高的存储量和运算速度。因此,有必要采用精确表示的形体模型,然而精确表示的形体也会给几何造型系统引入复杂的几何元素,也必然给几何元素的求交带来困难。

CSG模型是曾被广泛使用的形体表示模型,在这种模型中,形体通过基本体素的组合来实现,基本体素通常是立方体、圆柱、圆锥、球和圆环体等。基于CSG表示的造型系统,引入了二次曲面体和基本体素后,二次曲面的求交在这些造型系统中是不可避免的。

当前的几何造型系统,大多采用精确的边界表示BREP模型。在这种表示法中,形体的边界元素和某类几何元素对应,它们可以是直线、圆弧、二次曲线、Bezier曲线和B样条曲线等,也可以是平面、圆环面Torus、二次曲面、Bezier曲面和B样条曲面等,求交情况十分复杂。

对于含有两个变量的二次方程,对应的是二维二次圆锥曲线,在OpenCASCADE中的类gp_Circ2d, gp_Elips2d, gp_Hypr2d, gp_Parab2d, 他们都有一个函数Coefficients,能计算其二次型的系数。在解析几何曲线求交计算包中IntAna2d,提供了一个类IntAna2d_Conic用来表示圆锥曲线,类IntAna2d_AnaIntersection可以对这些圆锥曲线进行求交计算。

对于含有三个变量的二次方程,对应的是三维二次曲面,在OpenCASCADE中的类有gp_Pln, gp_Sphere, gp_Cylinder, gp_Cone, 他们也都有一个函数Coefficients,能计算其二次型的系数。在解析几何求交计算包中IntAna,提供了一个类IntAna_Quadric用来表示二次曲面。类IntAna_QuadQuad使用解析法(解方程)对两个二次曲面进行求交计算;类IntAna_QuadQuadGeo使用几何方法对两个二次曲面进行求交计算;类IntAna_ConicQuad用来对圆锥曲线和二次曲面进行求交计算。

3.1   二次曲线与二次曲线求交

二次曲线与二次曲线求交指的是用代数方法来计算两个曲线之间的相交情况,对应的类是IntAna2d_AnaIntersection。代数方法是利用代数运算,特别是求解代数方程的方法求解。由于圆锥曲线在其局部坐标系下具有标准的隐式方程和参数方程的噶啊,这类求交的策略是将坐标系变换到该圆锥曲线的局部坐标系下,一个圆锥曲线用隐式方程的形式表示,另一个圆锥曲线用参数方程的形式。对于曲线的参数方程而言,只有一个变量,将参数表示代入隐式方程即可获得一个变量的方程。occt中相关代码分析可参考:Intersection between 2d conic in OpenCASCADE

https://www.cnblogs.com/opencascade/p/6618865.html

 

 

3.2   二次曲线与二次曲面求交

二次曲线与二次曲面的求交计算,可以把二次曲线的参数形式代入二次曲面的隐式方程,得到关于参数的4次方程。然后用4次方程的求要公式计算出交点。occt中相关代码分析可参考:对应的类是IntAna_IntConicQuad

解析几何求交之直线与二次曲面

https://www.cnblogs.com/opencascade/p/IntAna_IntConicQuad.html

解析几何求交之圆与二次曲面

https://www.cnblogs.com/opencascade/p/IntAna_Circle.html 

3.3   二次曲面与二次曲面求交

二次曲面与二次曲面的求交计算,也可以把二次曲面的参数形式代入二次曲面的隐式方程。对应的类是IntAna_QuadQuad,其中对圆柱与二次曲面的求交计算源码注释如下图所示: 

3.4   二次曲面与二次曲面求交几何方法

几何方法求交是利用几何的方法,对参与求交的曲面的形状、位置以及方向等几何特点进行计算和判断,识别出交线的形状和类型,从而精确求出交线。对于一些交线退化或相切的情况,用几何方法可以更加迅速和可靠。在occt中对应的类是IntAna_IntConicQuad。关于源码分析可以参考:

OpenCASCADE 平面与球面求交

https://www.cnblogs.com/opencascade/p/PlaneSphere.html

OpenCASCADE 平面求交

https://www.cnblogs.com/opencascade/p/IntAna_PlanePlane.html

 

4. Conclusion

综上所述,通过二次多项式的形式把二次曲线和二次曲面之间的求交问题统一成对将参数方程代入隐式方程得到问题的求解。提供二次曲面几何求交算法,可以更快地得到结果。其实对于不包含B样条曲线曲面的模型(如CSG模型)来说,IntAna2d和IntAna已经可以实现求交,所以对于这些模型求交计算很快。

这也解决了我以前的一个疑问:为什么没有解析的三维圆锥曲线与曲线求交算法?因为三维圆锥曲线本身就是两个二次曲面的交线。没有像二维圆锥曲线和二次曲面那样有隐式方程。

5. References

5.1   同济大学数学教研室. 高等数学. 第四版 高等教育出版社

5.2   同济大学应用数学系. 线性代数. 第四版 高等教育出版社

5.3   潘祖梁, 陈仲慈. 工程技术中的偏微分方程. 浙江大学出版社

5.4   丘维声. 解析几何. 北京大学出版社

5.5   孙家广, 胡事民. 计算机图形学基础教程. 清华大学出版社


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


eryar 2021-03-10 13:45 发表评论

SmartPlant3D VUE解析

$
0
0

SmartPlant3D VUE解析

eryar@163.com

 

Intergraph鹰图公司的SmartPlant3D可以导出VUE文件用于模型审查Reivew,和AVEVA公司的PDMS可以导出RVM文件一样。这些文件中包含了模型的几何信息及部分属性信息,方便模型审查,提高设计效率。在数字化工厂、智能工厂、数字化交付的趋势下,通过解析这些数据文件,获取其中的模型信息,能为数字化交付平台提供数据基础。

AVEVA公司的PDMS导出的RVM文件,其结构简单,解析相对容易。早在几年之前,已经实现RVM文件数据的完全解析,并实现产品RvmTranslator。

 

上图所示为船舶Marine模块导出的船舶设计模型。

 

上图所示为工厂Plant模块导出的工厂设计模型。

RvmTranslator提供了RVM文件的浏览功能,操作习惯和PDMS保持一致,并能将模型转换成常见的三维文件格式。还能直接查询模型的相关属性信息。该产品也提供一些定制化开发服务,已经成功为几家数字化交付平台提供了RVM数据转换服务。

 

Intergraph公司的VUE文件相对复杂,可以浏览VUE文件的软件,除了自家产品Intergraph Reivew和Intergraph FreeView等之外,还有Autodesk公司的Navisworks Manage有导入VUE的插件。如果能直接支持对VUE文件的解析,对完善数字化交付产品线有重要意义,即能同时支持国际两个主流工程设计软件的数据。为了在数字化交付、数字化工厂中贡献我们的力量,我们开始了对VUE文件的解析工作,并取得了重大进展。 

上图所示为Intergraph FreeView中显示的VUE模型。 

上图所示为我们解析VUE文件中的模型数据并显示出来的效果。

 


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


eryar 2021-03-29 12:20 发表评论

PmuReviewer Preview

$
0
0

PmuReviewer Preview

eryar@163.com

 

Intergraph鹰图公司的SmartPlant3D可以导出VUE文件用于模型审查Reivew,和AVEVA公司的PDMS可以导出RVM文件一样。这些文件中包含了模型的几何信息及部分属性信息,方便模型审查,提高设计效率。在数字化工厂、智能工厂、数字化交付的趋势下,通过解析这些数据文件,获取其中的模型信息,能为数字化交付平台提供数据基础。

AVEVA公司的PDMS导出的RVM文件,其结构简单,解析相对容易。早在几年之前,已经实现RVM文件数据的完全解析,并实现产品RvmTranslator。

 

上图所示为船舶Marine模块导出的船舶设计模型。

 

上图所示为工厂Plant模块导出的工厂设计模型。

Intergraph公司的VUE文件相对复杂,可以浏览VUE文件的软件,除了自家产品Intergraph Reivew和Intergraph FreeView等之外,还有Autodesk公司的Navisworks Manage有导入VUE的插件。如果能直接支持对VUE文件的解析,对完善数字化交付产品线有重要意义,即能同时支持国际两个主流工程设计软件的数据。为了在数字化交付、数字化工厂中贡献我们的力量,我们开始了对VUE文件的解析工作,并取得了重大进展。现将AVEVA的RVM模型文件浏览和Intergraph的VUE文件浏览集成一个三维环境,命名为PmuReviewer,即工厂模型审查程序。现在程序已经能处理大部分模型及模型颜色信息。 

上图所示为Intergraph FreeView中显示的VUE模型。 

 

上图所示为PmuReviewer中显示的模型,有设备、管道、管道焊缝、阀门、结构、梯子模型等。

程序采用Ribbon风格界面,暂时只支持RVM和VUE的浏览,后续会加入其他功能,如尺寸测量,模型剖切等。

 


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


eryar 2021-04-06 23:21 发表评论
Viewing all 519 articles
Browse latest View live