??xml version="1.0" encoding="utf-8" standalone="yes"?>սѯapp:C++博客 - սƵ2019|սع//www.pppqb.icu/eryar/zh-cnThu, 04 Jul 2019 01:37:10 GMTThu, 04 Jul 2019 01:37:10 GMT60RvmTranslator for Linux - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/06/24/RvmTranslator_Linux.htmleryareryarMon, 24 Jun 2019 11:27:00 GMT//www.pppqb.icu/eryar/archive/2019/06/24/RvmTranslator_Linux.html//www.pppqb.icu/eryar/comments/216449.html//www.pppqb.icu/eryar/archive/2019/06/24/RvmTranslator_Linux.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216449.html//www.pppqb.icu/eryar/services/trackbacks/216449.htmlRvmTranslator for Linux
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文gq行可视化,以及RVM转换成常见的三维文g格式。如STEPQIGESQSTLQDXF, OBJ, 3DPDF, 3DXML, IFC{,便于与其他CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?br />
׃使用的是跨^台的Qt{开源库Q现在将RvmTranslatorUL到Linuxpȝ中,如下图所CZؓRvmTranslator在Ubuntupȝ中的界面Q?br />

支持RVM文g中的中文字符Q?br />

RVM是AVEVA的一个统一模型格式Q包括其收购的船舶系lTribon也可以导出RVM格式的文件?/p>

上图体结构,


上图舶管路,因ؓ船体I间相对狭小Q船舶管路布|的密集些?br />
在Ubuntupȝ上试了下开发环境,觉得q比较顺手。开发的IDE可以用Qt CreatorQ基本满编码,调试的要求。用Qt Creatorq有一个好处就是方便代码的跨^台移植,在Ubuntu上的代码以Qt?.pro形式保存Q可以直接在Visual Studio中用Qt VS Addin打开~译?br />


Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5> Shing Liu(eryar@163.com)


eryar 2019-06-24 19:27 发表评论
]]>
RvmTranslator7.1 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/06/15/RvmTranslator7_1.htmleryareryarSat, 15 Jun 2019 02:04:00 GMT//www.pppqb.icu/eryar/archive/2019/06/15/RvmTranslator7_1.html//www.pppqb.icu/eryar/comments/216404.html//www.pppqb.icu/eryar/archive/2019/06/15/RvmTranslator7_1.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216404.html//www.pppqb.icu/eryar/services/trackbacks/216404.html

RvmTranslator7.1

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可以?/span>AVEVA PDMS/Plant/Marine中导出的RVM文gq行可视化,以及?/span>RVM转换成常见的三维文g格式。如STEPQ?/span>IGESQ?/span>STLQ?/span>DXF, OBJ, 3DPDF, 3DXML, IFC{,便于与其?/span>CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?/span>

RvmTranslator7.1修复了设计树上中文显C问题:

下蝲RvmTranslator7.1: https://share.weiyun.com/5I8biQw

 


Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5> Shing Liu(eryar@163.com)


eryar 2019-06-15 10:04 发表评论
]]>
OpenCASCADE直线与^面求?/title><link>//www.pppqb.icu/eryar/archive/2019/06/03/LinePlaneInt.html</link><dc:creator>eryar</dc:creator><author>eryar</author><pubDate>Mon, 03 Jun 2019 08:40:00 GMT</pubDate><guid>//www.pppqb.icu/eryar/archive/2019/06/03/LinePlaneInt.html</guid><wfw:comment>//www.pppqb.icu/eryar/comments/216393.html</wfw:comment><comments>//www.pppqb.icu/eryar/archive/2019/06/03/LinePlaneInt.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.pppqb.icu/eryar/comments/commentRss/216393.html</wfw:commentRss><trackback:ping>//www.pppqb.icu/eryar/services/trackbacks/216393.html</trackback:ping><description><![CDATA[ <h2 align="center"><strong class="dpun">OpenCASCADE<span style="font-family: 宋体;">直线与^面求?/span></strong></h2> <p><span style="font-family: 宋体;">在《解析几何》相关的书中都给Z直线和^面的一般方E和参数方程。其中直U的一般方E有点向式Ş式的?/span></p> <p align="center"><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162247978-832152196.png" alt="" /></p> <p><span style="font-family: 宋体;">׃q空间一点可作且只能作一条直U^行于已知直线Q所以当直线上一点(</span>x0, y0, z0)<span style="font-family: 宋体;">和它的一方向向量Q?/span><span style="font-family: Calibri;">m,n,p)</span><span style="font-family: 宋体;">为已知时Q直U就完全定了。所以在</span><span style="font-family: Calibri;">OpenCASCADE</span><span style="font-family: 宋体;">中直U类</span><span style="font-family: Calibri;">gp_Lin</span><span style="font-family: 宋体;">有一个构造函敎ͼ</span></p> <p>gp_Lin (const gp_Pnt &P, const gp_Dir &V) <span style="font-family: 宋体;">即通过点和方向来构造直Uѝ由直线的点向式方程Ҏ导出直线的参数方E:</span></p> <p align="center"><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162257277-2017434532.png" alt="" /></p> <p><span style="font-family: 宋体;">其中</span>OpenCASCADE<span style="font-family: 宋体;">的直U是用参数方E来表示的?/span></p> <p><span style="font-family: 宋体;">同理对于q面而言Q过I间一点可以作而且只能作一q面垂直于一已知直线Q所以^面的一点(</span>x0,y0,z0)<span style="font-family: 宋体;">和它的一个法U方?/span><span style="font-family: Calibri;">(A, B, C)</span><span style="font-family: 宋体;">为已知时Q^面就完全定了。所以^面方E也有点向式的:</span></p> <p><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162309663-376377789.png" alt="" /></p> <p><span style="font-family: 宋体;">从一个点和两个不q的向量确定一个^面作论的出发点,可以得出q面的参数方E:</span></p> <p><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162317894-220894722.png" alt="" /> </p> <p><span style="font-family: 宋体;">如上图所C,已知一个点</span>M0(x0,y0,z0)<span style="font-family: 宋体;">Q向?/span><span style="font-family: Calibri;">v1(x1,y1,z1)</span><span style="font-family: 宋体;">和向?/span><span style="font-family: Calibri;">v2(x2,y2,z2)</span><span style="font-family: 宋体;">Q我们来求点</span><span style="font-family: Calibri;">M0</span><span style="font-family: 宋体;">和向?/span><span style="font-family: Calibri;">V1</span><span style="font-family: 宋体;">Q?/span><span style="font-family: Calibri;">V2</span><span style="font-family: 宋体;">定的^面方E。点</span><span style="font-family: Calibri;">M(x,y,z)</span><span style="font-family: 宋体;">在^面上的充要条件是向量</span><span style="font-family: Calibri;">M0M</span><span style="font-family: 宋体;">?/span><span style="font-family: Calibri;">V1, V2</span><span style="font-family: 宋体;">共面。因为向?/span><span style="font-family: Calibri;">V1, V2</span><span style="font-family: 宋体;">不^行,所以共面的充要条g是存在唯一的一对实?/span><span style="font-family: Calibri;">u, v</span><span style="font-family: 宋体;">使:</span></p> <p><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162331852-1495156293.png" alt="" /></p> <p><span style="font-family: 宋体;">向量</span>M0M<span style="font-family: 宋体;">?/span><span style="font-family: Calibri;">V1</span><span style="font-family: 宋体;">Q?/span><span style="font-family: Calibri;">V2</span><span style="font-family: 宋体;">共面的充要条件是Q?/span></p> <p><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162530489-1079184086.png" alt="" /></p> <p><span style="font-family: 宋体;">Ҏq面的参数方E可知,要确定一个^面从参数方程的角度来看需要一个点和两个方向。从参数方程推导Z般方E的q程也是计算q面一般方E系数的Ҏ?/span></p> <p><span style="font-family: 宋体;">Ҏ直线的参数方E及q面的一般方E可以推导出直线与^面交点的计算公式Q推DE如下:</span></p> <p><img src="https://img2018.cnblogs.com/blog/534255/201906/534255-20190603162537534-652366768.png" alt="" /></p> <p><span style="font-family: 宋体;">从上面的推导q程可以看出Q计直U与q面的交点主要就是计参?/span>t<span style="font-family: 宋体;">Q当</span><span style="font-family: Calibri;">t</span><span style="font-family: 宋体;">求出后代入直U参数方E即可得C点坐标。从参数</span><span style="font-family: Calibri;">t</span><span style="font-family: 宋体;">的计公式可知,有个Ҏ情况是分母为零的情况,此时是直U与q面q共面需要特别处理?/span></p> <p><span style="font-family: 宋体;">?/span>OpenCASCADE<span style="font-family: 宋体;">中提供了直线与^面求交的计算c?/span><span style="font-family: Calibri;">IntAna_IntConicQuad</span><span style="font-family: 宋体;">Q其实现源码如下Q?/span></p> <p> </p> <div class="cnblogs_code"> <pre><span style="color: #0000ff;">void</span> IntAna_IntConicQuad::Perform (<span style="color: #0000ff;">const</span> gp_Lin& L, <span style="color: #0000ff;">const</span> gp_Pln&<span style="color: #000000;"> P, </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> Standard_Real Tolang, </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> Standard_Real Tol, </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> Standard_Real Len) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> Tolang represente la tolerance angulaire a partir de laquelle on considere </span><span style="color: #008000;">//</span><span style="color: #008000;"> que l angle entre 2 vecteurs est nul. On raisonnera sur le cosinus de cet </span><span style="color: #008000;">//</span><span style="color: #008000;"> angle, (on a Cos(t) equivalent a t au voisinage de Pi/2).</span> <span style="color: #000000;"> done</span>=<span style="color: #000000;">Standard_False; Standard_Real A,B,C,D; Standard_Real Al,Bl,Cl; Standard_Real Dis,Direc; P.Coefficients(A,B,C,D); gp_Pnt Orig(L.Location()); L.Direction().Coord(Al,Bl,Cl); Direc</span>=A*Al+B*Bl+C*<span style="color: #000000;">Cl; Dis </span>= A*Orig.X() + B*Orig.Y() + C*Orig.Z() +<span style="color: #000000;"> D; </span><span style="color: #008000;">// </span> parallel=<span style="color: #000000;">Standard_False; </span><span style="color: #0000ff;">if</span> (Abs(Direc) <<span style="color: #000000;"> Tolang) { parallel</span>=<span style="color: #000000;">Standard_True; </span><span style="color: #0000ff;">if</span> (Len!=<span style="color: #800080;">0</span> && Direc!=<span style="color: #800080;">0</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">check the distance from bounding point of the line to the plane</span> <span style="color: #000000;"> gp_Pnt aP1, aP2; </span><span style="color: #008000;">// </span> aP1.SetCoord(Orig.X()-Dis*A, Orig.Y()-Dis*B, Orig.Z()-Dis*<span style="color: #000000;">C); aP2.SetCoord(aP1.X()</span>+Len*Al, aP1.Y()+Len*Bl, aP1.Z()+Len*<span style="color: #000000;">Cl); </span><span style="color: #0000ff;">if</span> (P.Distance(aP2) ><span style="color: #000000;"> Tol) { parallel</span>=<span style="color: #000000;">Standard_False; } } } </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (parallel) { </span><span style="color: #0000ff;">if</span> (Abs(Dis) <<span style="color: #000000;"> Tolang) { inquadric</span>=<span style="color: #000000;">Standard_True; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { inquadric</span>=<span style="color: #000000;">Standard_False; } } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { parallel</span>=<span style="color: #000000;">Standard_False; inquadric</span>=<span style="color: #000000;">Standard_False; nbpts </span>= <span style="color: #800080;">1</span><span style="color: #000000;">; paramonc [</span><span style="color: #800080;">0</span>] = - Dis/<span style="color: #000000;">Direc; pnts[</span><span style="color: #800080;">0</span>].SetCoord(Orig.X()+paramonc[<span style="color: #800080;">0</span>]*<span style="color: #000000;">Al, Orig.Y()</span>+paramonc[<span style="color: #800080;">0</span>]*<span style="color: #000000;">Bl, Orig.Z()</span>+paramonc[<span style="color: #800080;">0</span>]*<span style="color: #000000;">Cl); } done</span>=<span style="color: #000000;">Standard_True; }</span></pre> </div> <p> </p> <p><span style="font-family: 宋体;">从上qC码中可以看出其计思\也是先计参?/span>t<span style="font-family: 宋体;">Q还加了一个特D用法,卛_参数</span><span style="font-family: Calibri;">Len!=0</span><span style="font-family: 宋体;">且参?/span><span style="font-family: Calibri;">t</span><span style="font-family: 宋体;">的分?/span><span style="font-family: Calibri;">!=0</span><span style="font-family: 宋体;">旉新判断直U与q面的^行状态。这个用法虽然有q状态的重新判断Q但是如果不q没有计算交点的处理。所以用这个函数时Q参?/span><span style="font-family: Calibri;">Len</span><span style="font-family: 宋体;">可以用默认?/span><span style="font-family: Calibri;">0</span><span style="font-family: 宋体;">Q即不用q段处理逻辑。还有个不严谨的地方是这里的实数判断没有用区间判断法?/span></p> <img src ="//www.pppqb.icu/eryar/aggbug/216393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.pppqb.icu/eryar/" target="_blank">eryar</a> 2019-06-03 16:40 <a href="//www.pppqb.icu/eryar/archive/2019/06/03/LinePlaneInt.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RvmTranslator7.0-OBJ - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/05/29/RvmTranslator_OBJ.htmleryareryarWed, 29 May 2019 13:04:00 GMT//www.pppqb.icu/eryar/archive/2019/05/29/RvmTranslator_OBJ.html//www.pppqb.icu/eryar/comments/216387.html//www.pppqb.icu/eryar/archive/2019/05/29/RvmTranslator_OBJ.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216387.html//www.pppqb.icu/eryar/services/trackbacks/216387.htmlRvmTranslator7.0-OBJ

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可以?/span>AVEVA PDMS/Plant/Marine中导出的RVM文gq行可视化,以及?/span>RVM转换成常见的三维文g格式。如STEPQ?/span>IGESQ?/span>STLQ?/span>DXF, OBJ, 3DPDF, 3DXML, IFC{,便于与其?/span>CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?/span>

OBJ文g?/span>Alias|Wavefront公司为它的一套基于工作站?/span>3D建模和动画Y?/span>"Advanced Visualizer"开发的一U标?/span>3D模型文g格式Q很适合用于3D软g模型之间的互|也可以通过Mayad。比如你?/span>3dsMax?/span>LightWave中徏了一个模型,x它调?/span>Maya里面渲染或动画,导出OBJ文g是一U很好的选择。目前几乎所有知名的3D软g都支?/span>OBJ文g的读写,不过其中很多需要通过插g才能实现?/span>RvmTranslator可以?/span>PDMS模型转换?/span>OBJ格式?/span>

 

上图?/span>RvmTranslator转换的工厂模型?/span>

上图?/span>RvmTranslator转换的船体模型?/span>

 

Download RvmTranslator

 https://share.weiyun.com/5fcHSBC



eryar 2019-05-29 21:04 发表评论
]]>
OpenCASCADE License FAQs - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/05/29/occ_license_faq.htmleryareryarWed, 29 May 2019 13:03:00 GMT//www.pppqb.icu/eryar/archive/2019/05/29/occ_license_faq.html//www.pppqb.icu/eryar/comments/216386.html//www.pppqb.icu/eryar/archive/2019/05/29/occ_license_faq.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216386.html//www.pppqb.icu/eryar/services/trackbacks/216386.htmlOpenCASCADE License FAQs

 

l常用h问我使用OpenCASCADE开发商业Y件是否需要付费,下面?/span>OpenCASCADE的官方网站上截取其回{翻译成中文Q官方网址Q?/span>https://www.opencascade.com/content/faqs ?/span>

 

译l一?/span>Open CASCADE TechnologyUCؓ OCCT?/span>

 

OCCT许可?/span>GPL兼容吗?

是的Q从版本6.7.0开始,OCCT是根?/span>GNU LGPL版本2.1的条ƾ(以及一些小的附加权限)发布的,因此它与GNU GPL版本2及更高版本完全兼宏V?/span>

但是Q?/span>OCCT版本6.6.0及更早版本是Ҏ自定义许可证Q?/span>OCCT Public LicenseQ发布的?该许可在目的和意图方面类gGNU LGPLQ但?/span>GNU GPL不兼宏V?/span>

 

我可以?/span>OCCTҎGPLQ?/span>LGPL或其他许可(包括专有Q分发我的Y件品吗Q?/span>

是的你可以?/span> 但是Q您应始l确保最l品许可证W合产品中用的库的许可证要求?/span> 从版?/span>6.7.0开始,OCCTҎGNU LGPL版本2.1的条ƾ(以及一些小的附加权限)发布Q用该库的软g产品的要求在LGPL文本的第6部分中描q?如果您的最l品的许可与其中用的库的许可有Q何冲H,您需要采取措施(例如Q对此类最l品许可进行适当的修改)以解决Q何矛盾?/span>

如果有疑问ƈ避免可能的误解,误pL们获取徏议,我们很乐意回{您Ҏ事可能有的Q何疑问?/span>

 

我可以?/span>Open CASCADE技术制作商业品ƈq行销售吗Q?如果是,是否有Q何限Ӟ

是的Q您可以在商业应用程序中使用Open CASCADE技术(OCCTQ库Q而无需支付M开发许可费或运行时Ҏ版税。您的义务是要明注意您的Y件?/span>Open CASCADE技术(OPEN CASCADE公司的商标)Q在您的产品中提?/span>OCCT许可证的副本Qƈ遵@许可证本w的其他要求?从版?/span>6.7.0开始,此许可证?/span>GNU LGPL版本2.1Q具有一些小的附加权限)。另h意,OCCT使用“pȝ要求”面上列出的W三方组件?W三方组件的使用受其相应许可证的U束?/span>

 

 

如果我想发布自己使用OCCT的YӞ我是否有义务重新分发整个安装包,或者我只能分发我需要的部分代码Q?/span>

q样是允许的q期望您仅分发你的程序用到的库和资源?/span>

 

 

我对OCCT的用是否会늊M其他许可或专利?

您不需要Q何特定的安排来?/span>OCCT开源分发中包含的Q何算法。多q来Q我们一直没有听说过客户或用户?/span>Open CASCADE技术的M专利问题?/span>

 

 

我是否有义务使用OCCT的时候开源应用程序的完整源代码?

不,你不是?/span> 披露您的应用E序源代码的军_取决于您?/span>



eryar 2019-05-29 21:03 发表评论
]]>
OpenCASCADE点向q面投媄 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/05/29/ProjLib.htmleryareryarWed, 29 May 2019 13:02:00 GMT//www.pppqb.icu/eryar/archive/2019/05/29/ProjLib.html//www.pppqb.icu/eryar/comments/216385.html//www.pppqb.icu/eryar/archive/2019/05/29/ProjLib.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216385.html//www.pppqb.icu/eryar/services/trackbacks/216385.htmlOpenCASCADE点向q面投媄

 

OpenCASCADE?/span>ProjLibcL供了解析曲线Q直Uѝ圆、椭圆、抛物线、双曲线Q向解析曲面Q^面、圆柱面、圆锥面、球面、圆环面Q投q功能Q主要用来计三l曲U在二维参数I间的参数?/span>

 

其中点向q面投媄是最单的情况Q本文主要介l点向^面投q注意事项?/span>ProjLibcL个工LQ因为其函数都是静态函数。点向^面投影很单,直接?/span>ProjLib::Project(aPlane, aPoint)卛_?/span>

 

其实C码如下:

gp_Pnt2d  ProjLib::Project(const gp_Pln& Pl, const gp_Pnt& P)
{
  Standard_Real U, V;
  ElSLib::Parameters(Pl, P, U, V);
  return gp_Pnt2d(U,V);
}
inline void ElSLib::Parameters(const gp_Pln& Pl,
          const gp_Pnt& P,
          Standard_Real& U,
          Standard_Real& V) {
  ElSLib::PlaneParameters(Pl.Position(),P,U,V);
}
void ElSLib::PlaneParameters (const gp_Ax3& Pos,
         const gp_Pnt& P,
         Standard_Real& U,
         Standard_Real& V)
{
  gp_Trsf T;
  T.SetTransformation (Pos);
  gp_Pnt Ploc = P.Transformed (T);
  U = Ploc.X();
  V = Ploc.Y();
}

从上面的代码可以看出Q点向^面投影实现就是将点变换到q面所在的坐标pM。用这个类向^面投p注意的事Ҏq面的构造。^?/span>gp_Pln有如下构造函敎ͼ

 

默认构造函敎ͼ构造了一?/span>XOYq面

Z一个坐标系gp_Ax3构造^?/span>

Z一个点和一个方向构造^?/span>

Zq面的系数方E,?/span>AX+BY+CZ+D=0

前两个构造函数很清晰Q而第三个构造函数即Z一个点和一个方向构造^面的方式没有明确Q注释不清晰。这里的方向指定了^面的法向Q但是还~少一个方向来定一个坐标系Q所以用这个构造函数来生成q面的时候,需要理解其生成另外一个方向的法是不是自己需要的?/span>

gp_Pln::gp_Pln (const gp_Pnt& P,
  const gp_Dir& V)
{
  Standard_Real A = V.X();
  Standard_Real B = V.Y();
  Standard_Real C = V.Z();
  Standard_Real Aabs = A;
  if (Aabs < 0) Aabs = - Aabs;
  Standard_Real Babs = B;
  if (Babs < 0) Babs = - Babs;
  Standard_Real Cabs = C;
  if (Cabs < 0) Cabs = - Cabs;
  //  pour determiner l'axe X :
  //  on dit que le produit scalaire Vx.V = 0. 
  //  et on recherche le max(A,B,C) pour faire la division.
  //  l'une des coordonnees du vecteur est nulle. 
  if( Babs <= Aabs && Babs <= Cabs) {
    if (Aabs > Cabs)  pos = gp_Ax3 (P, V, gp_Dir (-C,0., A));
    else              pos = gp_Ax3 (P, V, gp_Dir ( C,0.,-A));
  }
  else if( Aabs <= Babs && Aabs <= Cabs) {
    if (Babs > Cabs)  pos = gp_Ax3 (P, V, gp_Dir (0.,-C, B));
    else              pos = gp_Ax3 (P, V, gp_Dir (0., C,-B));
  }
  else {
    if (Aabs > Babs)  pos = gp_Ax3 (P, V, gp_Dir (-B, A,0.));
    else              pos = gp_Ax3 (P, V, gp_Dir ( B,-A,0.));
  }
}

当这里确定^面坐标系的方式与需要的不一致时Q在使用投媄法的时候就会生问题?/span>



eryar 2019-05-29 21:02 发表评论
]]>
Compile OpenCASCADE7.3 with VS2008 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/04/18/compile_occ730_vs2008.htmleryareryarWed, 17 Apr 2019 23:17:00 GMT//www.pppqb.icu/eryar/archive/2019/04/18/compile_occ730_vs2008.html//www.pppqb.icu/eryar/comments/216353.html//www.pppqb.icu/eryar/archive/2019/04/18/compile_occ730_vs2008.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216353.html//www.pppqb.icu/eryar/services/trackbacks/216353.html

Compile OpenCASCADE7.3 with VS2008

eryar@163.com

 

1. 概述

?span style="margin: 0px; padding: 0px; font-family: "Times New Roman";">OpenCASCADE的源码文件夹中有?/span>adm文g夹,里面提供了各个^C~译源码的项目文件。其中在Windows操作pȝ中用微软的Visual Studio?/span>msvc文g夹中提供?/span>VS相应版本的项目文件。所以在使用批处理对OpenCASCADE源码q行~译的时候,会根?/span>vc的版本来启动相应版本?/span>visual studio。如果文件夹中没有对应的VS版本Q就打不开相应?/span>VS?/span>

 

在最新版本的OpenCASCADE7.3.0中,没有提供VS2008的项目文件。所以对于想?/span>OpenCASCADE用于老的pȝQ如XPpȝ中时Q或者主E序是用VS2008~译的,q时需要将OpenCASCADE?/span>VS2008来编译了?/span>

2. 生成VS

其实OpenCASCADE?/span>VS目都是采用Tcl脚本生成的,而且生成的脚本里面还保留了对VS2008的支持。下面就介绍一下如何生?/span>VS目。在OpenCASCADE源码文g夹中有个批处理文?/span>genproj.bat

 

׃q个批处理会调用Tcl文g中的命oQ所以需要将Tcl加入到环境变?/span>PATH中以便于q行Tcl脚本文g中的命o。如上图?/span>

SET "PATH=%PATH%;D:\OpenCASCADE-7.3.0\tcltk-86-64\bin;"

是Tcl加入到PATH的一U方法,配置好这个就可以直接双击genproj.batQ运行截囑֦下:

 

Ҏgenproj.bat中的注释可知genprojq可以带上参敎ͼW一个参数是VS~译器的版本Q第二个参数是操作系l。我们要生成Windows操作pȝ?/span>VS2008的项目,所以输入参敎ͼ

genproj vc9 wnt

q样q成了VS2008的项目了Q?/span>

 


Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5>Shing Liu(eryar@163.com)


eryar 2019-04-18 07:17 发表评论
]]>
武汉Ƨ凯德信息科技有限公司 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/04/08/wuhan_ocade_intro.htmleryareryarMon, 08 Apr 2019 03:34:00 GMT//www.pppqb.icu/eryar/archive/2019/04/08/wuhan_ocade_intro.html//www.pppqb.icu/eryar/comments/216344.html//www.pppqb.icu/eryar/archive/2019/04/08/wuhan_ocade_intro.html#Feedback4//www.pppqb.icu/eryar/comments/commentRss/216344.html//www.pppqb.icu/eryar/services/trackbacks/216344.html武汉Ƨ凯德信息科技有限公司

武汉Ƨ凯德信息科技有限公司取名来源?/span>OpenCASCADE的音译,主要提供开源几何造型?/span>OpenCASCADE相关的咨询、培训和定制开发服务?/span>Open意ؓ开攑ֈ享,正是因ؓ分nQؓ他h创造h值才会有更多的回报。将会l分?/span>OpenCASCADE的一些技巧和实现原理Q共同进步?/span>

 

目前公司的品有Q?/span>

l RvmTranslator

RvmTranslator可以?/span>AVEVA PDMS/Plant/Marine中导出的RVM文gq行可视化,以及?/span>RVM转换成常见的三维文g格式。如STEPQ?/span>IGESQ?/span>STLQ?/span>DXF, OBJ, 3DPDF, 3DXML, IFC{,便于与其?/span>CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?/span>

?/span>1 RvmTranslatorE序界面

 

?/span>2 RvmTranslator转换?/span>3DXML到达索系l?/span>

?/span>3 RvmTranslator转换?/span>STEP?/span>CATIA

?/span>4 RvmTranslator 转换?/span>IFC

 

l IsoAlgo

IsoAlgo?/span>piping Isometric drawing generation Algorithm的简Uͼ意ؓ道轴测囑և囄法。国际主的道轴测囑և囄?/span>ISOGEN是英国一家公司开发的Q现?/span>Intergraph收购Q?/span>Intergraph也在2010q被国公司Hexagon收购?/span>ISOGEN作ؓ相对成熟的YӞ也存在一些问题,如环出图成折线Q以及客L一些定制化要求不能及时反馈{?/span>IsoAlgoh自主知识产权Q全面兼?/span>ISOGEN的输入,如管道数据文?/span>PCF?/span>IDFQ以?/span>SKEY定义文g?/span>IsoAlgo生成道轴测囑֦下:






通过E序IsoAlgo3d方便地将PCF/IDF可视化,更便L昄出管道信息。以及基?/span>IsoAlgo3d定制开发相关的焊点理E序?/span>

定制开?/span>

随着国内版权意识的提高以及本地化的一些标准规范要求,考虑成本和效率,有越来越多的定制化开发服务。成功案例有Q?/span>

v GIM建模

随着国家늽数字化三l设计的推广Q提ZGIM三维设计标准Qؓ了满_|?/span>GIM工程数字化移交,为某公司定制开发了GIM建模功能Q?/span>

v FORAN定制

FORAN是一?/span>3D造船软gQ?/span>FORAN软gp班牙SENER集团开发,该公总船舶设计起家Q已?/span>50q的历史Q具?/span>40多年的造船CAD软g开发和应用l验。目前在q行软g开发和应用的同Ӟ仍然承接船舶设计目?/span>FORAN软g是世界上应用最为广泛的大型造船专业软g之一Q全球用户包括了120家以上的设计公司和造船厂,q年来更以较快的速度在全球推qѝ?/span>

定制开发了全面支持FORAN几何宏及NORM参数化模型,方便直接讉KFORAN的数据库Q脱?/span>FORAN环境q行三维可视化?/span>

 

船舶子零g?/span>

船舶子零g图也U小图Q零件图上除了图形及其标注外Q还应包括管材规根{弯数据、校数据、表面处理、安装位|等信息?/span>

 



eryar 2019-04-08 11:34 发表评论
]]>
AVEVA PDMS to DIALux - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/04/02/Pdms2Dialux.htmleryareryarTue, 02 Apr 2019 08:19:00 GMT//www.pppqb.icu/eryar/archive/2019/04/02/Pdms2Dialux.html//www.pppqb.icu/eryar/comments/216327.html//www.pppqb.icu/eryar/archive/2019/04/02/Pdms2Dialux.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216327.html//www.pppqb.icu/eryar/services/trackbacks/216327.htmlAVEVA PDMS to DIALux

eryar@163.com

  Abstract. DIAL develops DIALux - the world's leading software for planning, calculation and visualisation of indoor and outdoor lighting. With a community of over 700,000 users, the light planning tool is available in 25 languages and is free of charge for users. All renowned luminaire manufacturers offer digital product data for planning in DIALux. The software makes professional lighting design easier and accessible to everyone. As a platform and tool, it connects planners and manufacturers all over the world. DIALux is available as a desktop version and as a basic mobile app.

DIALux can import model by IFC, so use RvmTranslator to convert PDMS model to IFC format and imported by DIALux for lighting calculation.

Key Words. DIAlux, IFC, RvmTranslator

1. Introduction

首席灯光环境模拟与计Y?/span>DIALux德国DIAL研发Q能满照明设计的所有需求:从标准化的室内、户外或街道的照明规划与计算Q到专业的灯光设计、视觉立体化、能量评伎ͼ模拟效果接近真实Q方便设计师验证各种Ҏ用法Q导出报告,全方位协助设计师高效完成创作?/span>

DIALux完全免费开放下载,有含中文在内?/span>26U语a版本Q在全球?/span>100多万用户Q在中国大陆?/span>10万多名用P用户主要包含照明设计师、徏{师、工E公司等Q是全球领先的照明规划与计算软g?

 

PDMS主要用于工厂辅助设计Q其中也会涉及到仪表、电气专业。通过使用RvmTranslator可以快速地?/span>PDMS模型导入DIALux软gq行灯光照明设计?/span>

2. PDMS to IFC

RvmTranslator7.0可以?/span>PDMS模型转换?/span>IFC格式Q?/span>IFC主要用于BIM的数据交换,所以灯光设计Y?/span>DIALuxZ方便导入其他软g创徏的徏{模型,增加?/span>IFC导入的功能。?/span>IFC导入功能Q就可以导入PDMS的模型了?/span>

上图?/span>RvmTranslator转换的示例模型成IFC文g?/span>

 

上图所CZؓ导入RvmTranslator转换?/span>IFC文g?/span>DIALux.

3. Showcase

DIALux软g生成的光照效果很逼真Q下面给出几个实际工厂的光照效果的例子:

 

 

4. Download

直接在搜索引擎中输入RvmTranslator7.0Q即可以扑ֈ下蝲地址?/span>



eryar 2019-04-02 16:19 发表评论
]]>
[转]GLTF-3D囑Ş界的JPEG - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/03/30/gltf.htmleryareryarSat, 30 Mar 2019 13:47:00 GMT//www.pppqb.icu/eryar/archive/2019/03/30/gltf.html//www.pppqb.icu/eryar/comments/216324.html//www.pppqb.icu/eryar/archive/2019/03/30/gltf.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216324.html//www.pppqb.icu/eryar/services/trackbacks/216324.htmlGLTF?/strong>

1.glTF(GL TransmissionFormat)Q即囑Ş语言交换格式Q它是一U?D内容的格式标准,?strong>Khronos Group理QKhronos Groupq管理着OpenGLpd、OpenCL{重要的行业标准Q;

2.glTF的设计是面向实时渲染应用的,量提供可以直接传输l图形API的数据Ş式,不再需要二ơ{换;

3.glTF对OpenGL ES、WebGL非常友好Q?/p>

4.glTF的目标是Q?D领域的JPEGQ?/p>

5.作ؓ一个标准,?015q?0月发布(glTF 1.0Q以来,已经得到了业界广泛的认可Q你可以怿它的水^Q?/p>

6.glTF目前最新版本ؓ2.0已于2017q?月正式发布?/p>

GLTF具体的数据存储格式可以去官方|站上看Qhttps://www.khronos.org/gltf/Q大概就是相对于XML的JSON存储方式?/p>

 

文章x的是GLTFl我们带来的便利——节约存储I间Q减带宽压力?/p>

那么如何获得GLTF格式文gQ?/strong>

目前已经有了很多的{换工P

 

其中Input代表输入模型的格式,输出为gltf格式。由于之前用过Dae格式的文Ӟhttps://www.khronos.org/collada/Q,因此文章选取COLLADA2GLTF工具转换文gQ?/p>

 

千万别纠l于工具源代码的~译Q因为KhronosGroup已经l出了Release版本。这里说一些用方法:

1.解压zip文gQ在根目录新建dae文g?#8212;—用于存放原始的dae文g

2.在根目录新徏gltf文g?#8212;—用于存放转换后的gltf文g

3.在根目录按住Ctrl+Shift+Alt+鼠标右键Q打开PowerShellH口

4.在命令行中输入:./collada2gltf-bin.exe input.dae output.gltf –i dae/input.dae –o gltf/output.gltf

其中input为dae文g的名Uͼoutput出gltf文g的名U?/p>

5.Enter开始{换?/p>

PS C:\Users\Ruby\Desktop\COLLADA2GLTF-v2.1.2-windows-Release-x64>./COLLADA2GLTF-bin.exe elf.dae elf.gltf -i dae/elf/elf.

dae -o gltf/elf.gltf

Convertingdae\elf\elf.dae -> gltf\elf.gltf

Time: 320 ms

原始dae文g包含4个jpg贴图一?strong>2.46MQ{换后?strong>一个单?/strong>的gltf文gU?strong>1.38MQ含贴图Q。其实我很好奇那些脓图文件去哪儿了,于是打开了gltf文g查看Q发现在image数组下已l把q些贴图文g用base 64~码Q变成一堆机器码直接插在gltf文g中?/p>

完成模型转换以后Q利用ThreeJS的LoadGLTF API导入|页中浏览效果如下: 

如何在GLTF格式中捕获动画?

上述q程展示了从Collada到gltf的{换以及让gltf模型展示在网上。下面将l箋研究如何获取gltf模型的动画("Talk is cheapQshow me the code"——哈哈哈) 

效果如图所C:

xQgltf从模型到动画都run了一遍?/p>

 

ȝ

GLTF格式L3D囑Ş界的JPEGQ能够实现快速的模型数据交换。在2017q中旬更新的2.0版本克服了一些低版本的功能缺P使得自n功能得到发展Q同Ӟgltf解析及{换Tool的快速发展,为GLTF的进一步推q做Z很多的A献。文中也应证了,作ؓGLTF格式的用P能够利用现有的工具对模型处理Q减模型的数据量,在WebGL的应用中在成倍地节省带宽的同时能够获取同质量的模型以及动甅R?/p>

 

原文Qhttps://cloud.tencent.com/developer/news/204942

 



eryar 2019-03-30 21:47 发表评论
]]>
解析几何求交之圆与二ơ曲?/title><link>//www.pppqb.icu/eryar/archive/2019/02/21/IntAna_Circle.html</link><dc:creator>eryar</dc:creator><author>eryar</author><pubDate>Thu, 21 Feb 2019 14:05:00 GMT</pubDate><guid>//www.pppqb.icu/eryar/archive/2019/02/21/IntAna_Circle.html</guid><wfw:comment>//www.pppqb.icu/eryar/comments/216252.html</wfw:comment><comments>//www.pppqb.icu/eryar/archive/2019/02/21/IntAna_Circle.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.pppqb.icu/eryar/comments/commentRss/216252.html</wfw:commentRss><trackback:ping>//www.pppqb.icu/eryar/services/trackbacks/216252.html</trackback:ping><description><![CDATA[<h2 align="center"><strong class="dpun"><span style="font-family: 宋体;">解析几何求交之圆与二ơ曲?/span></strong></h2> <p align="center"><a><span style="text-decoration: underline;">eryar@163.com</span></a></p> <p> </p> <p>Abstract. OpenCASCADE provides the analytic intersection between a conic and a quadric in the package IntAna.</p> <p>Key Words. Analytic geometry, intersection, coninc, quadric</p> <h3>1. Introduction</h3> <p>OpenCASCADE<span style="font-family: 宋体;">中的?/span><span style="font-family: Calibri;">IntAna</span><span style="font-family: 宋体;">提供了解析几何曲U(二次曲线Q与解析曲面Q二ơ曲面)求交、解析曲面与解析曲面求交的功能。其?/span><span style="font-family: Calibri;">IntAna</span><span style="font-family: 宋体;">分别?/span><span style="font-family: Calibri;">Intersection Analytic</span><span style="font-family: 宋体;">的前三个字母~写Q表C析几何求交?/span></p> <p><span style="font-family: 宋体;">我们学过了《线性代数》中的二ơ型Q其中二ơ型在解析几何中的一个应用就是二ơ曲U和二次曲面方程的化及其性质的分析?/span></p> <p><span style="font-family: 宋体;">本文主要l合源码分析圆与二次曲面求交的实玎ͼ其他二次曲线与二ơ曲面求交的可以依此cL?/span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214824833-1915945009.png" /></p> <h3>2. Quadratic form</h3> <p><span style="font-family: 宋体;">在解析几何中Qؓ了便于研I二ơ曲U?/span></p> <p><span style="font-family: 宋体;"><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214837282-2133613567.png" /></span></p> <p><span style="font-family: 宋体;">的几何性质Q我们可以选择适当的坐标旋转变?/span></p> <p><span style="font-family: 宋体;"><span style="font-family: 'PingFang SC','Helvetica Neue','Helvetica','Arial',sans-serif;"><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214848027-1841343209.png" /></span></span></p> <p><span style="font-family: 宋体;">把方E化成标准Ş式:</span></p> <p><span style="font-family: 宋体;"><span style="font-family: 'PingFang SC','Helvetica Neue','Helvetica','Arial',sans-serif;"><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214858700-736435163.png" /></span></span></p> <p><span style="font-family: 宋体;">Ҏ标准形式中的pL来分析这个二ơ曲U是什么曲U,卛_、椭圆、抛物线、双曲线?/span></p> <p><span style="font-family: 宋体;">?/span>OpenCASCADE<span style="font-family: 宋体;">中解析几何的二次曲面有以下几U类型:</span></p> <p>l gp_Pln<span style="font-family: 宋体;">Q^面可看作二次曲面的特?/span></p> <p>l gp_Sphere<span style="font-family: 宋体;">Q解析球?/span></p> <p>l gp_Cylinder<span style="font-family: 宋体;">Q解析柱?/span></p> <p>l gp_Cone<span style="font-family: 宋体;">Q解析锥?/span></p> <p><span style="font-family: 宋体;">q些解析曲面都可以统一使用二次多项式来表示Q即q个二次多项式的pL定了一个二ơ曲面?/span>OpenCASCADE<span style="font-family: 宋体;">中相应的cL</span><span style="font-family: Calibri;">IntAna_Quaric</span><span style="font-family: 宋体;">Q?/span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214911122-186510965.png" /></p> <h3>3. Math Trigonometric Function Roots</h3> <p>OpenCASCADE<span style="font-family: 宋体;">中类</span><span style="font-family: Calibri;">IntAna_IntConicQuad</span><span style="font-family: 宋体;">中提供了二次曲线与二ơ曲面求交功能,其中计算圆与二次曲面怺的函数是Q?/span></p> <p>  //! Creates the intersection between a circle and a quadric.</p> <p>  Standard_EXPORT IntAna_IntConicQuad<strong class="dpun">(</strong>const gp_Circ<strong class="dpun">&</strong> C<strong class="dpun">,</strong> const IntAna_Quadric<strong class="dpun">&</strong> Q<strong class="dpun">);</strong></p> <p><span style="font-family: 宋体;">其实现原码中注释如下Q?/span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221214923311-1114783430.png" /> </p> <p><span style="font-family: 宋体;">Ҏ其注释,可知其计过E如下:圆的方E在其局部坐标系中用参数形式表示Q?/span></p> <p><span style="font-family: 宋体;"><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221215036103-137187322.png" /></span></p> <p><span style="font-family: 宋体;">二ơ曲面方E的pL也变换到圆的坐标pMQ因为圆的参数方E中?/span>0<span style="font-family: 宋体;">Q所以将圆的参数方程代入二次曲面的方E后Q和</span><span style="font-family: Calibri;">z</span><span style="font-family: 宋体;">相关的项的系数都可以化了?/span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221215058087-823214203.png" /></p> <p><span style="font-family: 宋体;">得到一个三角函数的方程后,q时p引入基础模块中的数学工具集来解决问题了?br /></span><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221215127233-2101143657.png" /></p> <p><span style="font-family: 宋体;">c?/span>math_TrigonometricFunctionRoots<span style="font-family: 宋体;">主要用于对如下Ş式的三角函数方程q行求解Q?/span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221215136068-2104905422.png" /></p> <h3>4. Conclusion</h3> <p><span style="font-family: 宋体;">对于圆与二次曲面求交的实现来看,也可以不用变换二ơ曲面的坐标p,直接圆的参数方E代入曲面的二次方程中:</span></p> <p><img alt="" src="https://img2018.cnblogs.com/blog/534255/201902/534255-20190221215146977-191005949.png" /></p> <p><span style="font-family: 宋体;">最l化也可得到一个三角函数方E,但是计算量与变换曲面坐标pd比来看会更大?/span></p> <p><span style="font-family: 宋体;">从上面的源码分析可知Q在</span>OpenCASCADE<span style="font-family: 宋体;">中对于解析曲U与曲面求交使用二次多项式系数来表示的。通过二ơ曲U用参数形式的方E来表示Qƈ代入二次曲面的方E,化简后直接?/span><span style="font-family: Calibri;">math</span><span style="font-family: 宋体;">包中的工P多项式方E求解和三角函数求解工具Q对方程q行求解?/span></p> <h3>5. References</h3> <p>1. <span style="font-family: 宋体;">同济大学应用数学p?/span>. <span style="font-family: 宋体;">U性代敎ͼW四版)</span><span style="font-family: Calibri;">. </span><span style="font-family: 宋体;">高等教育出版C?/span></p> <p>2. <span style="font-family: 宋体;">丘维?/span>. <span style="font-family: 宋体;">解析几何</span><span style="font-family: Calibri;">. </span><span style="font-family: 宋体;">北京大学出版C?br /></span></p><span style="font-family: 宋体;"><p> </p><div class="dpun"><div id="cnblogs_post_body" style="background-color: transparent; color: #000000; font-family: &quot;Helvetica Neue&quot;,Helvetica,Verdana,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><p style="margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"></p></div><div id="MySignature" style="background-color: transparent; color: #000000; display: block; font-family: &quot;Helvetica Neue&quot;,Helvetica,Verdana,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><hr style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /> <h5>Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5> <img width="200" height="200" title="Ƣ迎xOpenCASCADE公众? style="background-image: none; border-bottom-color: #000000; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: #000000; border-left-style: none; border-left-width: 0px; border-right-color: #000000; border-right-style: none; border-right-width: 0px; border-top-color: #000000; border-top-style: none; border-top-width: 0px; display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" alt="Shing Liu(eryar@163.com)" src="https://files.cnblogs.com/files/opencascade/qrcode_occ.gif" border="0" /> <hr style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /></div><span style='display: inline !important; float: none; background-color: transparent; color: #000000; font-family: "Helvetica Neue",Helvetica,Verdana,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 23.8px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;'> </span><div style="background-color: transparent; clear: both; color: #000000; font-family: &quot;Helvetica Neue&quot;,Helvetica,Verdana,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><font color="#002000"></font></div></div><p><strong class="dpun"></strong><em></em><u></u><sub></sub><sup></sup><strike></strike><br /></p></span><img src ="//www.pppqb.icu/eryar/aggbug/216252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.pppqb.icu/eryar/" target="_blank">eryar</a> 2019-02-21 22:05 <a href="//www.pppqb.icu/eryar/archive/2019/02/21/IntAna_Circle.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解析几何求交之直U与二次曲面 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/01/29/IntAna_IntConicQuad.htmleryareryarTue, 29 Jan 2019 14:06:00 GMT//www.pppqb.icu/eryar/archive/2019/01/29/IntAna_IntConicQuad.html//www.pppqb.icu/eryar/comments/216225.html//www.pppqb.icu/eryar/archive/2019/01/29/IntAna_IntConicQuad.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216225.html//www.pppqb.icu/eryar/services/trackbacks/216225.html解析几何求交之直U与二次曲面

eryar@163.com

 

Abstract. OpenCASCADE provides the analytic intersection between a conic and a quadric in the package IntAna.

Key Words. Analytic geometry, intersection, coninc, quadric 

1. Introduction

OpenCASCADE中的?/span>IntAna提供了解析几何曲U(二次曲线Q与解析曲面Q二ơ曲面)求交、解析曲面与解析曲面求交的功能。其?/span>IntAna分别?/span>Intersection Analytic的前三个字母~写Q表C析几何求交?/span>

我们学过了《线性代数》中的二ơ型Q其中二ơ型在解析几何中的一个应用就是二ơ曲U和二次曲面方程的化及其性质的分析?/span>

本文主要l合源码分析直线与二ơ曲面求解的实现来抛砖引玉,后期二ơ曲U与二次曲面求交的各U情况做全面分析?/span>

2. Quadratic form

在解析几何中Qؓ了便于研I二ơ曲U?/span>

的几何性质Q我们可以选择适当的坐标旋转变?/span>

把方E化成标准Ş式:

Ҏ标准形式中的pL来分析这个二ơ曲U是什么曲U,卛_、椭圆、抛物线、双曲线?/span>

?/span>OpenCASCADE中解析几何的二次曲面有以下几U类型:

l gp_PlnQ^面可看作二次曲面的特?/span>

l gp_SphereQ解析球?/span>

l gp_CylinderQ解析柱?/span>

l gp_ConeQ解析锥?/span>

q些解析曲面都可以统一使用二次多项式来表示Q即q个二次多项式的pL定了一个二ơ曲面?/span>OpenCASCADE中相应的cLIntAna_QuaricQ?/span>

 

 3. Math Direct Polynomial Roots

OpenCASCADE中类IntAna_IntConicQuad中提供了二次曲线与二ơ曲面求交功能,其中计算直线与二ơ曲面相交的函数是:

  //! Creates the intersection between a line and a quadric.

  Standard_EXPORT IntAna_IntConicQuad(const gp_Lin& L, const IntAna_Quadric& Q);

其实现原码中注释如下Q?/span>

 

Ҏ其注释,可知其计过E如下:直U方E用参数形式表示Q?/span>

参数表C的直线方程代入二次曲面方程Q化可得一个二ơ多式Q对二次多项式进行求解即得直U与二次曲面的交炏V?/span>

得到一个二ơ多式的方E后Q这时就要引入基模块中的数据工具集来解决问题了?/span>

 

c?/span>math_DirectPolynomialRoots可以用来?/span>4ơ及以下的多式方程q行求解。对于化后的直线与二ơ曲面方E是一个二ơ多式方程Q则使用q个cȝ接进行求解?/span>

4. Conclusion

从上面的源码分析可知Q在OpenCASCADE中对于解析曲U与曲面求交使用二次多项式系数来表示的。通过方E化后直接?/span>math包中的工具对方程q行求解?/span>

使用OpenCASCADE熟练会发C们的~码风格也是有一定的套\的,即一个类会提供几个构造函敎ͼ不同参数进行输入。有的在构造函C调用初始化函?/span>Init()来对法需要的其他输入数据q行初始化,有的则直接在构造函C调用的计函?/span>Perform()。如果构造函C没有调用计算函数Perform()Q则需要手动调?/span>Perform()。算法的成功通过函数IsDone()来检。根据检判断是否取倹{?/span>

春节pCQ祝大家在新的一q里心想事成Q万事如意!

5. References

1. 同济大学应用数学p?/span>. U性代敎ͼW四版). 高等教育出版C?/span>

2. 丘维?/span>. 解析几何. 北京大学出版C?/span>



eryar 2019-01-29 22:06 发表评论
]]>
RvmTranslator7.0-IFC - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/01/19/RvmTranslator70_IFC.htmleryareryarSat, 19 Jan 2019 06:11:00 GMT//www.pppqb.icu/eryar/archive/2019/01/19/RvmTranslator70_IFC.html//www.pppqb.icu/eryar/comments/216214.html//www.pppqb.icu/eryar/archive/2019/01/19/RvmTranslator70_IFC.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216214.html//www.pppqb.icu/eryar/services/trackbacks/216214.htmlRvmTranslator7.0-IFC

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.

I am pleased to announce a new release of RvmTranslator7.0.

RvmTranslatoer7.0 is a major release, which includes the following new features: translate PDMS rvm to IFC file.

RvmTranslator可以?/span>AVEVA PDMS/Plant/Marine中导出的RVM文gq行可视化,以及?/span>RVM转换成常见的三维文g格式。如STEPQ?/span>IGESQ?/span>STLQ?/span>DXF, OBJ, 3DPDF, 3DXML, IFC{,便于与其?/span>CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?/span>

RvmTranslator7.0增加了一个新的文件{?/span>IFC?IFC目前是国际通用?/span>BIM标准Q现在很?/span>BIM软g都采用其作ؓ数据交换的标准。ؓ了PDMS中的模型可以导入BIM软gQ开发了此功能。程序{换了PDMS中几何模型及树Şl构?/span> 

 

 

IFC(IndustryFoundationClasses)

 IFC是由国际协同工作联盟IAI(InternationalAllianceForInteroperability)应用面向对象技术所建立的信息标准?/span>IAI的发展v源于1994q?/span>8月,q?/span>12家公总AutoCAD13?/span>ARXpȝ为基Q研I不同应用Y件在协同工作的可能性,l果发觉不但可行更有可观的经效益。于1995q克服了核心的问题后Q发表了U?/span>IFC的信息交换格式,1995q?/span>10月,他们在北成?/span>IAIl织。ƈ发现q已是全球工业的问题Q随后他们将此思想推广到其他国Ӟ很快的其他国家也相成立?/span>IAI分部。ƈ?/span>1996q于伦敦召开了第一ơ的IAI国际会议。目前成员涵?/span>24个国家及8个附属或注册的团体,如澳zӀ法国、d国、日本、韩国、北Ƨ、新加坡及英国等Q其l成单位p131个,包含建筑业主、承包商、政府官员、学术单位、资产管理、Y件厂商、徏讑օ司等?/span>

IAI主要目标为提?/span>AEC?/span>FM厂商Q获得相同单一建筑信息的沟通模?/span>(SingleBuildingInformationModel,BIM)Q?/span>IAI认ؓBIM能有效减成本及提高效率Q故UCؓbuildingSMART(以聪明的方式建筑)IAI希望把所有的建筑信息透过一套标准将其整合在一P像是把门、墙{实际对象以及一些空间、结构过E等抽象概念以电子信息方式有pȝ的呈现出来。这些信息让各种不同软g的间可以互相传递与分nQ例如美语是国际间的共同语言一般,IFC便是一U由共同语言Q在建筑生命周期中扮演共享智能对象的角色?/span>

IFC是一U开放性质信息格式Q作Z息的交换以及׃n使用Q在技术上采用BIM概念及面向对象等来进行信息内容的处理Q目的在于让在此领域?/span>BIMpȝ的各U不同应用YӞ?/span>IFC信息格式的标准化及一致性,而有一个信息交换的标准格式可以遵@Q不同软体间的信息可相互交换,毋须再各自徏立信息,避免信息传递时发生错漏造成财务和时间上的损失,国际间各大Y件公司(?/span>Autodesk?/span>Bentley?/span>Graphisoft?/span>TEKLA?/span>NEC?/span>Fujitsu{)Q都已陆l开发以BIM概念l合IFC标准的Y件?/span> 

Download RvmTrnaslator

https://yun.baidu.com/pcloud/album/info?uk=3808749571&album_id=3634993082542187183



eryar 2019-01-19 14:11 发表评论
]]>
QString::toStdString() crashes - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/01/17/std_string_crash.htmleryareryarThu, 17 Jan 2019 13:50:00 GMT//www.pppqb.icu/eryar/archive/2019/01/17/std_string_crash.html//www.pppqb.icu/eryar/comments/216209.html//www.pppqb.icu/eryar/archive/2019/01/17/std_string_crash.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216209.html//www.pppqb.icu/eryar/services/trackbacks/216209.html今天在Qt中开发程序时Q遇C个QString::toStdString()的内存问题,用法如下Q?/p>
void test(const QString& theFileName)
{
    std::string aFileName = theFileName.toStdString();
    std::ofstream aFile(aFileName);
    aFile << aFileName;
}

在函数还没执行完崩溃了Q跟t发现是std::string的问题。最后发现是因ؓ引用的库的Runtime Library不同D的,一个是MDdQ一个是MTdQ后来改成一致即可?/p>



eryar 2019-01-17 21:50 发表评论
]]>
Consolas 字体 - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/01/15/Consolas.htmleryareryarTue, 15 Jan 2019 08:53:00 GMT//www.pppqb.icu/eryar/archive/2019/01/15/Consolas.html//www.pppqb.icu/eryar/comments/216204.html//www.pppqb.icu/eryar/archive/2019/01/15/Consolas.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216204.html//www.pppqb.icu/eryar/services/trackbacks/216204.html

概述

q套字型使用了微软的ClearType 字型qx技术,q同Windows Vista、Office 2007及Microsoft Visual Studio中发行,或可在微软的|站下蝲。在Windows Vista?套新字型中,Consolasq似于前版Windows??Ƒֆ建字型:Lucida Console与Courier NewQ主要ؓE序代码的显C字型而设计的Q特别之处是它的“0”字加入了一斜撇Q以方便与字?#8220;O”分L? 在Consolas之前Q程序代码的昄字型大多为Courier New或其他等宽字型,字型的柔边(反锯齿)效果则依个h喜好选择开启或关闭Q然而Consolas是专为柔Ҏ果而设计的字型Q特别是Z搭配微Y的ClearType技术,如果不开启ClearTypeQConsolas的显C效果会打大折扣。另外,ClearType技术还需要搭配液晶显C器才会有最佌现?

应用

传统上,E式~写员在Windows环境底下Q一般都会用Courier New或其他近似的{宽字体来显C程序代码。通常用来~写E序代码的程序都会让~程员选择用来昄E序代码的字体。由于Courier New的字型比较肥大,使每个画面或面所能显C的E序代码大ؓ减少。Consolas除了能够在较的I间昄更多的内容,它的清晰字型亦ɾ~程员能够更快捷的分辨每一个文字?br />
q个字体用来~码很清晎ͼ舒服Q主要是数字0和字?可以Ҏ的区别出来,q里做个备忘Q方便在~码环境中设|这个字体?img src ="//www.pppqb.icu/eryar/aggbug/216204.html" width = "1" height = "1" />

eryar 2019-01-15 16:53 发表评论
]]>
Mesh BRep Shapes - սƵ2019|սع//www.pppqb.icu/eryar/archive/2019/01/06/BRepMesh.htmleryareryarSun, 06 Jan 2019 02:49:00 GMT//www.pppqb.icu/eryar/archive/2019/01/06/BRepMesh.html//www.pppqb.icu/eryar/comments/216169.html//www.pppqb.icu/eryar/archive/2019/01/06/BRepMesh.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216169.html//www.pppqb.icu/eryar/services/trackbacks/216169.html

Mesh BRep Shapes

eryar@163.com

Abstract. 当对OpenCASCADE?/span>BRep表示法的数据l构有了一定的理解后,可以自己实现一个显C数据生成的功能Q即|格剖分功能?/span>

Key Words. BRep, Mesh, Triangulation

1. Introduction

?/span>OpenCASCADE中网格剖分功能是很重要的一个模块,他可用于生成模型的可视化数据Q还可用?/span>HLR消隐Q对于离散求交算法也是基于网格数据?/span>OpenCASCADE开源版本中的模?/span>TKMesh可以用来生成|格的显C数据,主要的类?/span>BRepMesh_IncrementalMesh?/span>

在?/span>BRepMesh_IncrementalMesh的过E中发现其剖分精度高Q且_ֺ不便于控制。如对一个球q行|格剖分Q想得到一个粗p的效果Q即一个多边ŞQ?/span>BRepMesh_IncrementalMesh是不Ҏ得到的?/span>

如上图所CZؓ同一个球的不同的剖分_ֺ得到的模型。ؓ了能_控制|格剖分_ֺQ以便后期?/span>LOD{优化算法,自己实现一个网格剖分功能?/span>

|格剖分的主要思\是遍历每个TopoDS_Face?/span>TopoDS_WireQ根?/span>Wire扑ֈ边界或面上的孔洞。将Wire对应Cl参数空_q对二维参数I间中的边界先进行一ơ三角网格剖分。对于^面来_只需要这一步就可以满可视化的要求。对于其他曲面来_需要在二维参数I间中额外插入一些点Q以使最l生成的|格满剖分_ֺ要求。最后将二维参数I间的三角剖分映到三维I间?/span>

2. Mesh Boundary Region

因ؓ使用BRepBuilderAPI_MakeFace可以通过Add(TopoDS_Wire)来添加面上的开孔,所以一?/span>TopoDS_Face会有大于1个的TopoDS_Wire。找出外边界和内?/span>Wire后可q行一ơ三角剖分,如下图所C:

 

如上图所C,对于q面而言Q直接对边界及内孔进行一ơ三角剖分即可以得到满意的网格数据。对于曲面而言Q这昄是不满_ֺ要求的?/span>

 

如上图所CZؓ球面的第一ơ对边界q行三角剖分得到的效果。因为在一个参C的边是退?/span>Degenerated边,所以退化边的参数空间上没有均分。将参数I间的三角剖分映到三维I间后,得到的是一条线Q其实是两个非退化边?/span>

 

3. Deflection Control

对于曲面来说Q如果直对边界进行一ơ三角剖分,是达不到_ֺ要求。ؓ了曲面|格剖分效果更好Q就需要对按边界剖分后的网D行插入点l箋剖分。对于上面球面的参数I间区域Q根据精度要求插入点剖分后的l果如下图所C:

 

得到的三l效果如下图所C:

 

4. Demo

下面l出几个自己实现|格剖分的结果与OpenCASCADE?/span>TKMesh作个ҎQ?/span>

 

上图己实现网格剖分算法对椭球面的|格剖分l果

 

上图?/span>TKMesh|格剖分法Ҏ球面的网格剖分结?/span>

 

上图己实现网格剖分算法对椭圆环面的网格剖分结?/span>

 

上图?/span>TKMesh|格剖分法Ҏ圆环面的|格剖分l果

通过上面的对比可以发玎ͼ在大致相同的昄效果情况下,OpenCASCADE产生了更多的点和三角Ş数据。自己实现的|格剖分产生的网D量相对可控且性能高?/span> 

5. Conclusion

OpenCASCADE中开源的|格剖分?/span>TKMesh可以实现模型的可视化数据生成功能Q但是对于网格剖分的_ֺ可控性差。ؓ了对模型的网格精度进行更好地控制Q自己实C套网格剖分功能,且性能要优?/span>TKMesh。在E序的编写过E中Q可以加?/span>BREP数据l构中一些概늚理解。有兴趣的读者在熟悉BREP数据l构后,也可以尝试下|格剖分功能的实现?/span>


Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5>Shing Liu(eryar@163.com)


eryar 2019-01-06 10:49 发表评论
]]>
OpenCASCADE Incremental Mesh - սƵ2019|սع//www.pppqb.icu/eryar/archive/2018/12/31/IncementalMesh.htmleryareryarMon, 31 Dec 2018 14:45:00 GMT//www.pppqb.icu/eryar/archive/2018/12/31/IncementalMesh.html//www.pppqb.icu/eryar/comments/216159.html//www.pppqb.icu/eryar/archive/2018/12/31/IncementalMesh.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216159.html//www.pppqb.icu/eryar/services/trackbacks/216159.htmlOpenCASCADE Incremental Mesh

eryar@163.com

 

Abstract. OpenCASCADE IncrementalMesh is used to build the mesh of a shape with respect of their correctly triangulated parts. The blog focus on the deflection control of the algorithm.

 

Key Words. Mesh, Visualization

 

1. Introduction

Mesh是生成三l模型显C数据的关键法?/span>OpenCASCADE?/span>TKMesh提供了网格剖分算法,用于生成BREP体的昄数据。原来的一些文章对|格剖分的算法及其用法进行过说明Q本文主要对|格剖分的核心部分进行深入挖掘,理解其剖分精度控制原理。感兴趣的读者可以结合源码,学习其实现方法。当理解其算法原理后Q也可以自己实现一套结合实际需求的高性能|格剖分库?/span>

|格剖分的主要流E如下:

 

遍历TopoDS_Shape?/span>TopoDS_FaceQ对于每?/span>TopoDS_FaceQ遍历其TopoDS_WireQ对于每?/span>TopoDS_Wire遍历?/span>TopoDS_EdgeQ在ҎEdge?/span>Face得到PCurve。因?/span>TopoDS_Wire是闭合的Q所?/span>Wire?/span>PCurve是在参数I间闭合区域。对PCurve围成的参数区域进行三角剖分,三角剖分的l果映射Cl空_最l生成每?/span>Face的网格剖分。这个流E很好理解,但是如何对网格剖分的质量q行控制呢?即用相对的三角|格来更好地表示三维模型呢?

 

2. Mesh Deflection Control

OpenCASCADE?/span>BRep体进行三角剖分网格化的类?/span>BRepMesh_IncrementalMeshQ此cL两个主要的选项来控制三角网格化Q线性偏?/span>Linear deflection和角度偏?/span>Angular deflection?/span>

三角|格剖分W一步是所有的?/span>Edgeq行LQ即Ҏ一定的_ֺ生成多段U;

 

U性偏差限制离散的多段U与曲线之间的距;角度偏差限制每段U段端部切线的夹角?/span>

W二步是寚wq行三角剖分。线性偏差也限制L的三角Ş中点到曲U的距离?/span>

 

应用E序应该提供适当的偏差参C辑ֈ生成满意的三角网根{角度偏?/span>Angular deflection比较单且允许使用一个默认|12~20度)。线性偏?/span>Linear deflection有绝对的含义Q需要由E序来给定正的倹{给一个很的U性偏差gD|格剖分q密Q消耗大量内存及影响昄效率Q但是值太大得到的|格效果是昄q。所以对?/span>LOD的网格来_需要根据模型尺寸来讄相应的线性偏差倹{?/span>

上面对网格剖分的参数讄q行了介l,下面对网格剖分的实现原理q行说明。因为曲U曲面是三维的,而对曲面q行剖分的底层三角剖功能是个二维三角剖分库,所以网格剖分ȝ思\是对曲线在二l参数空间进行剖分,参数空间剖分的l果通过曲面参数方程映射回到三维I间。通过?/span>pcurve围成的参数空间闭合区域进行二l三角剖分,卛_对三l曲面进行剖分。类BRepMesh_FastDiscretFace是对每个TopoDS_Faceq行LQ其中函?/span>control()是用来控制生成网格的质量的?/span>

 

最多P代次数是11ơ。在每一ơP代过E中Q检查生成的所有三角Ş在参数空间中心点处与曲面的距L否满线性偏差,如果不满I则插入新的点以便下次q代?/span>

 

从上面的代码可以看出其实现思\与其cdIncrementalq是很脓切的Q即增量法?/span>

 

 

3. Conclusion

OpenCASCADE的网格剖分中|格质量控制是相寚w要的核心功能。在理解其原理后Q可以自己实C个更清晰的网格剖分库?/span>

 

2018q就q结束了Q这一q收获颇与ͼ其中最大的收获是有了自己的小宝宝?/span>

 

分n创徏价倹{虽?/span>OpenCASCADE不是完美的,但是Ҏ目前世界上唯一一Ƒ֊能相对完善的开攄几何造型库?/span>OpenCASCADE的开攑ֈ享,l她带来生机。当他h因ؓ我的blog的分享的文章或代码联pLӞ他们的一声感谢,我都会觉得很高兴?/span>

 

2019q马上就要到来,希望大家在新的一q里Q创造、创斎ͼH破自我Q更上一层楼Q?/span>


Z方便大家在移动端也能看到我的博文和讨Z,现已注册微信公众PƢ迎大家扫描下方二维码关注?/h5> Shing Liu(eryar@163.com)


eryar 2018-12-31 22:45 发表评论
]]>
RvmTranslator6.6 - RVM to CATIA - սƵ2019|սع//www.pppqb.icu/eryar/archive/2018/12/09/RVM2CATIA.htmleryareryarSun, 09 Dec 2018 08:35:00 GMT//www.pppqb.icu/eryar/archive/2018/12/09/RVM2CATIA.html//www.pppqb.icu/eryar/comments/216114.html//www.pppqb.icu/eryar/archive/2018/12/09/RVM2CATIA.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216114.html//www.pppqb.icu/eryar/services/trackbacks/216114.htmlRvmTranslator6.6 - RVM to CATIA

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, .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.

I am pleased to announce a new release of RvmTranslator6.6.

 

RvmTranslatoer6.6 is a minor release, which includes the following new features:

 

RvmTranslator可以?/span>AVEVA PDMS/Plant/Marine中导出的RVM文gq行可视化,以及?/span>RVM转换成常见的三维文g格式。如STEPQ?/span>IGESQ?/span>STLQ?/span>DXF, OBJ, 3DPDF, 3DXML{,便于与其?/span>CADpȝq行数据交换Q如Autodesk AutoCAD, Plant3d, 3ds Max, CATIA, Solidworks, Pro/E, Unity3d, Bentley{?/span>

 

RvmTranslator6.6主要增加导出带设计结构的STEP文gQ此文g在导?/span>CATIA后的l构与模型与PDMS中一_如下图所C:

 

Download RvmTranslator

https://yun.baidu.com/pcloud/album/info?uk=3808749571&album_id=3634993082542187183

  



eryar 2018-12-09 16:35 发表评论
]]>
PipeCAD之管道标准库PipeStd(2) - սƵ2019|սع//www.pppqb.icu/eryar/archive/2018/11/26/PipeCAD_PipeStd2.htmleryareryarMon, 26 Nov 2018 14:08:00 GMT//www.pppqb.icu/eryar/archive/2018/11/26/PipeCAD_PipeStd2.html//www.pppqb.icu/eryar/comments/216082.html//www.pppqb.icu/eryar/archive/2018/11/26/PipeCAD_PipeStd2.html#Feedback0//www.pppqb.icu/eryar/comments/commentRss/216082.html//www.pppqb.icu/eryar/services/trackbacks/216082.htmlսѯapp:PipeCAD之管道标准库PipeStd(2)

eryar@163.com

 

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

 

1. Introduction

道标准部g库程?/span>PipeStd的主要用法与PDMS?/span>Paragon模块cMQ主要也是采用参数化的方式来表示g。每U类型的gCategory包含三个集合Q参数集Parameter Set、点?/span>Point Set和Ş?/span>Geometry Set。本文主要来介绍如何创徏一个参数化的标准管件。如下图所CZؓ一带颈对焊法兰Weld Neck Flange的参数化gQ?/span>

?/span>1 法兰参数化模?/span>

 

2. Category

cdCategory是一cȝ件数据的集合Q如90度弯头、闸阀{。创建类型的时候会自动创徏其三个必ȝ集合Q参数集、点集和形集Q如下图所C:

?/span>2 创徏Category

 

3. Parameter Set

参数集合Parameter Set用来定义该种cd的管仉要输入哪些参敎ͼ即管件标准中定义的数据?/span>

?/span>3 带颈对焊法兰寸数据表格

上图来于Q?/span>//www.wermac.org/flanges/dimensions_welding-neck-flanges_asme-b16-5.html

?/span>ASME B16.5标准中定义的寸数据。其中每个尺寸,?/span>AQ?/span>D{都可以看作里参数集中的一个参数?/span>

?/span>4 参数集定?/span>

每一个参数可以对应一个尺寸,在上?/span>4所C的左边定义好参数集后,在右边的列表中可以ؓ每个径的管件输入相应的寸数据?/span>

 

4. Point Set

炚wPoint Set主要用来定义g的连接点或一些辅助定义位炏V如下图所C:

?/span>5 炚w定义

每个炚w要定义一个编P对于点的~号也有U定。如对于普通的gQ编?/span>1?/span>2表示g的两端。对于三通其支管要用~号3{。这些约定是Z后面生成轴测囄要求。点的位|?/span>PXQ?/span>PYQ?/span>PZ及方?/span>DXQ?/span>DYQ?/span>DZ都是可以用前面定义的参数表示。如某个D用参?/span>1Q就写成$PA1。或者还可以用数学表辑ּQ如Q?/span>$PA1 + 2 * cos($PA2){?/span>

 

5. Geometry Set

形集Geometry Set主要来定义管件的几何形状。用一些基本ŞӞ如长方体Q圆׃、圆C{来构造管件外形。每U基本体都是用参数表C,如下图所CZؓ圆柱体的参数Q?/span>

?/span>6 参数化基本体

对于圆柱体,需要确定其轴向PAXIQ高?/span>PHEI及直径(PDIAQ等。对于数据值型的参数都是可以用数学表辑ּ来表C。这样可以不同的管径对应不同的形状?/span>

?/span>7 DN10?/span>DN80的法?/span>

 

6. Conclusion

lg所qͼ通过定义参数集、点集和形集来实现标准管件的参数化。通过l一的方式,对Q意标准管件进行参数化处理。这L序操作方式统一Q用简单。对于一些特D管Ӟ也可以通过q种方式来徏模,灉|自由。不像有的Y件是管件类型通过编码的方式写在E序中,如果要增加程序中没有的管件类型,只有改程序的不便?/span>

g标准库程?/span>PipeStd的管件定义基本成型,下一步实现管道等U?/span>Piping Specification功能。管道等U的作用主要用于{选过滤,方便材料控制。考虑到后面生?/span>ISO轴测囄功能Q因为每U管仉会有SKEYQ而这?/span>SKEY已经分好cd了。所以管道等U的处理也尽量简化,直接ҎSKEY来分大的cd及小c,如法兰的大类?/span>FlangeQ小c里面根?/span>SKEY来筛选,FLWNQ?FLSO{?/span>



eryar 2018-11-26 22:08 发表评论
]]>
PipeCAD之管道标准库PipeStd - սƵ2019|սع//www.pppqb.icu/eryar/archive/2018/11/25/PipeCAD_PipeStd.htmleryareryarSun, 25 Nov 2018 14:27:00 GMT//www.pppqb.icu/eryar/archive/2018/11/25/PipeCAD_PipeStd.html//www.pppqb.icu/eryar/comments/216080.html//www.pppqb.icu/eryar/archive/2018/11/25/PipeCAD_PipeStd.html#Feedback2//www.pppqb.icu/eryar/comments/commentRss/216080.html//www.pppqb.icu/eryar/services/trackbacks/216080.htmlPipeCAD之管道标准库PipeStd

eryar@163.com

 

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

 

1. Introduction

前不久,两位老友徐d毛d上v东金桥的一茶一坐小聚,回想到几q前我们仨在那里聚会的情景。他们分别在A公司?/span>I公司Q我当时在做SPD的开发。在一赯的话题也是关于设计Y件的Q当时也有一些思想撞的火花,想着做出一个什么YӞ成ؓCEOQ迎娶白富美Q走上h生顶峰。结果几q过去,当年吹过的牛BQ没有实现。其中有一个就是做一个管道标准库E序Q方便管件的定义。定义好之后Q可以导?/span>AVEVA PDMS?/span>Intergraph SmartPlant?/span>

看着国内工厂/船舶设计软g?/span>PDSOFTQ?/span>UESOFTQ?/span>PDMAXq有船舶设计软gSPD都不温不火,而且国外?/span>AVEVA PDMS/Marine, Intergraph SmartPlant已经占据了国内市场,有时我也在想开发一个原来梦想的道设计软g的意义和价倹{?/span>

AVEVA PDMS/Marine我觉得是单易用的软gQ一致的操作方式Q基?/span>CSG的造型法Q还提供了二ơ开发语aPML?/span>C#来对E序q行灉|扩展。基于文件的层次数据库,q提供了数据库的增、删、改及数据回退功能Q可以用于大中型目设计。由于很Ҏ得到和谐版,所以用户很多?/span>

Intergraph SmartPlant是美国的一ƾYӞ׃其h格昂贵,在国内的用户都是不差q单位。由于没有用过Q所以对其不便于评h。但是由于国内外有业M指定q款软gQ所以国际上用户也很多?/span>

再看国内的工?/span>/船舶设计pȝPDSOFTQ?/span>UESOFTQ?/span>PDMAX?/span>SPD{,都是ZAutoCAD开发的。早期基?/span>AutoCADQ因?/span>AutoCAD比较普及Q所以会吸引一些会AutoCAD的用戗但是基?/span>AutoCAD开发程序弊端之一?/span>AutoCAD版本升Q程序要想适应AutoCADQ也必须跟着升。弊端二?/span>AutoCAD的提供的开发库ObjectARX, .NET{都不是开源的Q如果是那些库出?/span>BUG或是不支持的功能Q要么去?/span>Autodesk公司沟通,要么只有l道了。有的?/span>ObjectARX?/span>C++库开发,虽然E序性能好,q在使用MFC?/span>GUIQ但是开发效率低。弊端之三是有些功能?/span>AutoCAD的功能纠~不清,用户体验不太友好?/span>

Z实现几年前的梦想Q我军_开发一个管道设计Y?/span>PipeCAD?/span>

 

2. PipeCAD

?/span>PipeCAD的一个定位就是适用于中型目的管道设计Y件。因为大型项目的用户一般都是用PDMS?/span>SmartPlant?/span>

使用开源库OpenCASCADE来进行三l图形开发,使用开源库Qt来进?/span>GUI开发,提高E序开发效率。因Z用开源技术,出现BUG可以从根据上解决。不依赖其他闭源的YӞ不会有其他Y件升U带来的影响?/span>

业务核心功能都自己实玎ͼE序自主可控Q方便增加新功能?/span>

 

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

g库等U库理E序PipeStdQ?/span>

三维设计模块PipeCADQ?/span>

道轴测囑և图模?/span>IsoAlgo?/span>

 

3. PipeStd

PipeStd主要用来对管件标准数据、管道等U等数据q行理。有了管件数据,可以对gq行三维昄。有了管道等U,可以在三维设计模块来用管件来对管道进行徏模?/span>PipeStd的用方式与PDMS?/span>Paragon模块cMQ通过参数化的方式来定义管件。目前程序的主要功能已经实现Q程序界面如下图所C:

其中q设想的功能有:

导入、导?/span>PDMS中的g及管道等U?/span>Piping Specification数据Q?/span>

导入、导?/span>SmartPlant中的g及管道等U?/span>Piping Specification数据Q?/span>

 

4. Conclusion

两位友h的提醒,军_开发一个三l管道设计Y?/span>PipeCAD。ؓ中小型项目的道设计提供了一个选择。核心功能都自己实现Q程序自d控。不依赖其他软gQ如AutoCADQ提供良好的用户体验?/span>

 



սƵ2019 2018-11-25 22:27 发表评论
]]>