re: 工廠方法Factory Methods eryar 2015-01-21 18:05
@douzi
Hi douzi,
你好!
作為抽象基類的純虛函數即為實現方法。因為基類的純虛函數,所有派生的子類中必須要重新實現,否則編譯錯誤。這就是一種利用編譯器的約束。
子類實現的純虛函數的注冊方法與現在的方式一樣。
Best Regards,
Shing Liu
使用AutoCAD .NET開發了個合并DWG、DXF文件的小插件,使用方法及下載地址為:AutoCAD File Merger
http://www.shnenglu.com/eryar/archive/2015/01/15/209538.html
@付振宇
生成的文件后綴名沒有什么關系的,對于程序來說都是文本文件,自己寫程序直接讀數據都可以了。
有些程序可以用來顯示Triangle生成的這些文件,加個后綴好分辨文件中保存的數據。
@付振宇
Hi 付振宇,
你好!
Triangle的用法請參考Figure 2.2 Triangle Usage 中紅色線框中的部分。
各開關的用法請仔細看Figure 2.1 Options for the Triangle其說明。
Best Regards,
Shing Liu
re: Qt with OpenCascade eryar 2014-12-30 22:23
@zhx
你好啊 我也是在用OCC,之前用的是OCC6.5.0,現在想換位OCC6.8.0,可是安裝完之后發現6.8.0版本的網頁版的OCC文檔不能查找函數,是為什么呢?
=================================================
我也試了下,occ6.8.0開發文檔中的search功能的確不能用。
看了下,它是用php來調用javascript的,所以應該需要放到支持php的服務器上運行這個文檔就可以搜索了。
我在occ官網上search是可以的,如下為在occ官網上search類gp_Pnt:
http://dev.opencascade.org/doc/refman/html/search.php?query=gp_Pnt
@zhx
Hi,
你好!
OpenCASCADE的mesh算法只是針對二維的點集(即參數空間中的點),主要是為了替換掉6.3版本以前用的Triangle庫。
如果你是三維的點且可確定都在一個平面上,可以考慮將這些點投影到這個平面,Delaunay三角剖分后再映射回三維空間。
@xmzzy
你可能用的occ6.8.0,這個版本中去掉BRepMesh::Mesh()函數了,官方給的答復是這個函數只是調用了BRepMesh_IncrementalMesh來生成網格,沒有存在的意義,所以予以去除。
詳細可參考官方論壇:
http://www.opencascade.org/org/forum/thread_26649/?forum=36.8.0: BRepMesh::Mesh removed
去除原因及新的用法都有提及,原文如下:
Forum supervisor 2014/11/13 17:30
Dear Thorsen,
Method BRepMesh::Mesh did nothing more than called BRepMesh_IncrementalMesh with the given parameter, so it had no significant meaning and as result it was removed.
To perform meshing user should use BRepMesh_IncrementalMesh directly, for instance:
#include<BRepMesh_IncrementalMesh.hxx>
...
BRepMesh_IncrementalMesh(aShape, 0.001);
...
It is exactly the same what BRepMesh::Mesh did.
Best regards
FSR
@佚名
SetOwner可以將一塊內存設置到AIS_Shape中去,
所以你可以將ID或其他數據組織成一個結構體或類,需要時取出轉換一下即可。
@佚名
哦。
那可以看看
SetOwner (const Handle< Standard_Transient > &ApplicativeEntity);
//Allows you to attribute the owner ApplicativeEntity to
//an Interactive Object. This can be a shape for a set of
//sub-shapes or a sub-shape for sub-shapes which it
//is composed of. The owner takes the form of a transient.
SetOwner把一個指針數據放到AIS_InteractiveObject中去了,所以你也可以將ID放進去。
re: OpenCASCADE 的安裝與編譯 eryar 2014-11-01 20:11
@歐帥
:o)
re: OpenCASCADE 的安裝與編譯 eryar 2014-11-01 19:49
@歐帥
OpenCASCADE6.7.1的Samples編譯是有問題,我編譯試過,需要修改opencascade6.7.1文件夾中的msvc.bat,修改如下內容:
rem Launch Visual Studio - either professional (devenv) or Express, as available
if exist "%DevEnvDir%\devenv.exe" (
rem start "" "%DevEnvDir%\devenv.exe" "%PRJFILE%"
start "%DevEnvDir%\devenv.exe" "%PRJFILE%"
與早期版本相比是多了個引號,將引號去掉即可。
re: OpenCASCADE 的安裝與編譯 eryar 2014-10-31 12:43
@張三
就是OpenCASCADE編譯時設置的第三方庫所在的include/lib/bin相應的目錄中。
如果用的批處理,編譯好的lib/dll輸出到批處理里面對應的目錄。
re: OpenCASCADE 的安裝與編譯 eryar 2014-10-29 20:59
@謝謝
路徑不多,我6.7.1的Samples都可以正常編譯。
是不是你的6.7.1的路徑中包含了空格?
re: OpenCASCADE 的安裝與編譯 eryar 2014-10-29 20:32
@謝謝
將Samples編譯成功后,編譯方法如下:
3. Modifying and rebuilding samples:
--------------------------------------------
You can modify, compile and launch all sample projects in MS Visual C++ at once:
execute msvc.bat [vc8|vc9|vc10] [win32|win64] [Release|Debug]
To run all sample projects in MS Visual C++ at once:
execute msvc.bat vc8 win32 Debug
使用編譯時的批處理啟動Samples項目,并將你出錯的Sample工程設置為當前Project,F5即可調試了。
@佚名
在繪圖區感知到了一個shape,直接對其操作即可,為什么又要得到其ID?
如果一定要這個ID,可以通過SetOwner()將ID設置到AIS_InteractiveObject中去,這樣在感知到shape時可以取出ID了。
@佚名
inline Standard_Boolean TopoDS_Shape::IsEqual (const TopoDS_Shape& other) const
{
return (myTShape == other.myTShape) &&
(myLocation == other.myLocation) &&
(myOrient == other.myOrient);
}
函數IsEqual()的作用是:
Returns True if two shapes are partners, i.e. if they share the same TShape. Locations and Orientations may differ.
根據上面的代碼可知只是判斷是不是共享了相同的TShape,如果朝向Orientation不同,返回值也是不同的。看你前面將wire1.Reverse(),可能朝向會不同。
==================================
TopoDS_Shape的HashCode產生函數代碼如下:
Standard_Integer TopoDS_Shape::HashCode(const Standard_Integer Upper) const
{
//PKV
const Standard_Integer aI = (Standard_Integer) ptrdiff_t(myTShape.operator->());
const Standard_Integer aHS = ::HashCode(aI,Upper);
const Standard_Integer aHL = myLocation.HashCode(Upper);
return (aHS^aHL)%Upper;
}
應該取個大一點的Upper。
也可參考Singleton模式,使用一個static的std::map<std::string, TopoDS_Shape>自己來根據名字映射TopoDS_Shape,這就像Draw Test Harness中一樣了。
re: OpenCASCADE 的安裝與編譯 eryar 2014-10-27 22:49
@謝謝
不客氣。
運行Samples的方法,OpenCASCADE也在ReadMe.md文件中進行了說明:
2. Launching Open CASCADE Technology samples:
---------------------------------
To run the Open CASCADE Technology samples:
execute run.bat [vc8|vc9|vc10] [win32|win64] [Release|Debug] [SampleName]
To run the Animation sample:
execute run.bat vc8 win32 Debug Animation
因為OpenCASCADE的samples用到OpenCASCADE其他相關的dll,進而可能依賴一些第三方庫,所以Samples程序只要能找到所有依賴的dll就可運行了,包括第三方庫的dll。為了不影響機器的環境變量,用這種批處理的方式來運行例子也很方便的(這樣就不需要將相關的dll復制到system32中去了)。
re: OpenCASCADE 的安裝與編譯 eryar 2014-10-27 18:18
@謝謝
你好!
有時間寫一個samples 的編譯說明。
其實在samples\mfc\standard文件夾中的readme.txt中有詳細說明,仔細看看就知道了。
@佚名
您好!
不知道你用的哪個類的函數 issame()?
可以貼出相關代碼看看
@Wang
Hi Wang,
你好!
感謝你的反饋,Sample也是我的測試工程,其中這個SITE的PIPE大部分都已經通過測試。我再試試看你的這個模型。
導出的STL面多,模型顯示更細膩、精確,可以考慮加個精度設置。
re: Qt with OpenCascade eryar 2014-10-21 09:49
@soongv
Hi soongv,
You are welcome.
Thanks for your advice.
I will update the sample occQt according to your code.
Best Regards,
Xing
re: Qt with OpenCascade eryar 2014-10-20 14:27
@rio
這個例子適用在VS中用Qt的plugin來編譯。
re: Qt with OpenCascade eryar 2014-10-17 18:05
@rio
如果你的Qt Creator也是用的VS的編譯器,應該不會沖突。
re: Qt with OpenCascade eryar 2014-10-13 14:56
@lijin
是的,確保你用的是opencascade6.7版本。
使用Graphic3d::InitGraphicDriver這種方式是6.6以后用的
@BugWang
Hi Wang,
你好!
可以從最簡單的Hello World!程序入門,從而體驗一下occ的編碼風格,再慢慢深入。
Hello World的示例程序如下:
http://www.shnenglu.com/eryar/archive/2013/08/22/202708.html
re: Qt with OpenCascade eryar 2014-10-10 19:42
@lijin
是不是頭文件的路徑沒有設置?
re: Qt with OpenCascade eryar 2014-10-07 17:02
@rio
你是編譯的6.7.1的例子?
Sample Code for OpenCascade6.7.1: Qt with OpenCascade
@愛學習愛C++
你好!
導入STL格式的文件還沒試過,不過用netgen的GUI是可以導入的。
我也好長時間沒有看這個了,要再看看。。。
@佚名
你好!
擬合曲面的算法還沒有細看。
不過好像OCC有收費的模塊,專門用來從點云數據生成幾何數據,可以看看:
Surfaces from Scattered Points:
http://www.opencascade.org/support/products/ssp/
@佚名
過獎了。
我看OCC的例子程序中有個根據點生成面的功能,使用的類有:
1. Plate_Plate;
2. GeomPlate_Surface;
3. GeomPlate_MakeApprox;
相關實現可以參考示例程序。
@Spikef
AutoCAD Plant 3D 2013的自動分圖效果是不大好,很簡單的管道會分成好多張圖,2015還沒用過。
軟件自動分圖的關鍵就是尋找合適的分圖點,Isogen/Isodraft中不光可以在部件連接的地方分圖,還可以設置在管道上分圖。
感謝分享。
Are you all in the same company?
@Gautam
Hi ,
I have developed the program to generate Piping Isometric Drawing automatically: IsoAlgo.
IsoAlgo can generate piping isometrics drawings from PCF to DXF.
For more information about IsoAlgo, please visit:
http://code.google.com/p/isoalgo/You can download and have a try, any feedback is welcome.
@Girish Doshi
re: 工廠方法Factory Methods eryar 2014-08-15 14:23
不是我寫的,
是對《API Design for C++》中Factory Methods章節的翻譯。
@lcalqf
re: Read DXF File eryar 2014-08-14 10:36
過獎了,
我也是在學習中……
@張輝
re: IsoAlgo Split Point eryar 2014-08-10 19:53
用的google的
@dsmilely
re: IsoAlgo Split Point eryar 2014-08-04 22:20
@dsmilely
只有用工具啊,
Hi gayver,
The file of the pml code have sent to you.
Please check.
Enjoy!
:-)
@gayver
Hi gf,
The DXF Merger is not very perfect,
So do not release to the public.
But you can send me email: eryar@163.com for a Trial Version.
Regards,
eryar
@gf
re: 使用OpenGL中的GLUT eryar 2014-05-15 17:55
沒有找到opengl32.lib, glu32.lib和glut32.lib。
@Jerry