Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
HowTo to port from GL-GI-Husk to HOOPS
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
11-06-2007 10:51 PM
Dear community,
is there something like a cook book, how-to, tips & tricks that describes the best practice to port an application using ACIS kernel and the abandoned GI/GI-Husks to ACIS and HOOPS?
Could anyone, who did it already post his/her experiences?
Maybe showing where the pitfalls and problems are and how to avoid them?
Anything covering this issue is greatly appreciated.
Greetings from Germany
Markus
Re: HowTo to port from GL-GI-Husk to HOOPS
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-11-2007 02:47 AM
Hello Markus,
I have developed an application using GI/GL, Visman and HOOPS with ACIS (of course).
HOOPS/3DGS (3D Graphics System) is the core sub-components of HOOPS/3DAF (3D Application Framework).
HOOPS/3DAF includes other sub-components these are helpful to shorten development time and effort.
HOOPS/MVO is one of such sub-components.
HOOPS/MVO provides many classes those simplify generic functionality rather calling many HOOPS APIs in HOOPS/3DGS.
HBaseDB, HBaseModel and HBaseView are major classes in MVO.
Those classes are similar to that of ACIS MFC as below.
HDB - CAcisApp
HBaseModel - CAcisDoc
HBaseView - CAcisView
HOOPS/3DGS (3D Graphics System) is the core sub-components of HOOPS/3DAF (3D Application Framework).
HOOPS/3DAF includes other sub-components these are helpful to shorten development time and effort.
HOOPS/MVO is one of such sub-components.
HOOPS/MVO provides many classes those simplify generic functionality rather calling many HOOPS APIs in HOOPS/3DGS.
HBaseDB, HBaseModel and HBaseView are major classes in MVO.
Those classes are similar to that of ACIS MFC as below.
HDB - CAcisApp
HBaseModel - CAcisDoc
HBaseView - CAcisView
There is also event handling class called HBaseOperator that is similar to input_event_handler class in GI/GL husk.
HBaseOperator - input_event_handler
MVO stands for Model View Operator.
HOOPS/MFC is a part of HOOPS/GUI sub-component.
Although it's not mandatory to use HOOPS/MFC, but it contains useful example code such as printing.
If you use HOOPS/MFC, the relation between ACIS MFC and HOOPS/MFC will be as below.
CHoopsApp - CAcisApp
CHoopsDoc - CAcisDoc
CHoopsView - CAcisView
Although it's not mandatory to use HOOPS/MFC, but it contains useful example code such as printing.
If you use HOOPS/MFC, the relation between ACIS MFC and HOOPS/MFC will be as below.
CHoopsApp - CAcisApp
CHoopsDoc - CAcisDoc
CHoopsView - CAcisView
HOOPS/MFC requires MOOPS/MVO, since each class has pointer to corresponding HOOPS/MVO classes.
CHoopsApp (HDB)
CHoopsDoc (HBaseModel)
CHoopsView (HBaseView)
Like AcisMfc did, event message from MFC class will be conveyed to lower level classes.
For my case, I made several classes to bridge MFC and HOOPS as below. (Classes that have prefix "AH" are my own class.)
MyApp[CWinApp] -> AHApp -> AHBaseDB -> HDB
MyDoc[CDocument] -> AHDoc -> AHBaseModel -> HBaseModel
MyView[CView] -> AHView -> AHBaseView -> HBaseView
MyApp[CWinApp] -> AHApp -> AHBaseDB -> HDB
MyDoc[CDocument] -> AHDoc -> AHBaseModel -> HBaseModel
MyView[CView] -> AHView -> AHBaseView -> HBaseView
I implemented ACIS related functions such as AcisInitInstance() and AcisExitInstance() in AHApp like AcisMfc did.
I implemented several event functions such as OnLButtonDown() in AHView so that application can call it like AcisMfc did.
I implemented several document related wrapper function such as OnEditUndo(), OnUpdateEditRedo(), AddEntity(), RemoveEntity() and so on.
I implemented several event functions such as OnLButtonDown() in AHView so that application can call it like AcisMfc did.
I implemented several document related wrapper function such as OnEditUndo(), OnUpdateEditRedo(), AddEntity(), RemoveEntity() and so on.
This structure may depend on each application or developer.
If you would like, you can use HOOPS/ACIS Bridge that is provided with ACIS.
This component provides HA_Part that wraps PART class, and provides means to automate creating/maintaining visualization object whenever ACIS ENTITY is created/modified/deleted.
HA_Render_Entity source code may be useful to understand how to make HOOPS object from ACIS ENTITY.
This component provides HA_Part that wraps PART class, and provides means to automate creating/maintaining visualization object whenever ACIS ENTITY is created/modified/deleted.
HA_Render_Entity source code may be useful to understand how to make HOOPS object from ACIS ENTITY.
There are few pitfall when developing an application using HOOPS and ACIS simultaneously (I think).
First of all, some terminologies are used common between ACIS and HOOPS, but meaning is different.
First of all, some terminologies are used common between ACIS and HOOPS, but meaning is different.
[SHELL]
ACIS - SHELL is one of topology class. It aggregates FACE entity.
HOOPS - SHELL is one of graphical object that is kind of polygonal data representation for surface.
ACIS - SHELL is one of topology class. It aggregates FACE entity.
HOOPS - SHELL is one of graphical object that is kind of polygonal data representation for surface.
[FACE]
ACIS - FACE is one of topology class. It has SURFACE geometry entity and aggregates LOOP entity that represents boundary of surface.
HOOPS - FACE is an element of SHELL.
ACIS - FACE is one of topology class. It has SURFACE geometry entity and aggregates LOOP entity that represents boundary of surface.
HOOPS - FACE is an element of SHELL.
[EDGE]
ACIS - EDGE is one of topology class. It has CURVE geometry entity and aggregates VERTEX.
HOOPS - EDGE is an element of SHELL.
ACIS - EDGE is one of topology class. It has CURVE geometry entity and aggregates VERTEX.
HOOPS - EDGE is an element of SHELL.
[VERTEX]
ACIS - VERTEX is one of topology class. It has APOINT geometry entity.
HOOPS - VERTEX is an element of SHELL.
ACIS - VERTEX is one of topology class. It has APOINT geometry entity.
HOOPS - VERTEX is an element of SHELL.
Second, each HBaseView will have individual HBaseOperator (derived class). If your application supports multiple views for one document, you should consider and implement mechanism to share one HBaseOperator for multiple HBaseView.
I hope this helps.
Bashi

