Issue
I created an ObjectDBX for a custom object. When the DWG is opened in Navisworks, the custom geometry is not shown, and in [Home] >> [Project] >> [Scene Statistics], it reports an error:
"Missing object enabler for application 'MyCustomerObjectApp …' "
How can I make my OE to work with Navisworks?
Solution
Navisworks uses RealDWG to read DWG files. The same mechanism for registering and demand loading for AutoCAD and RealDWG application apply for Navisworks. Please take a look at "Demand Loading on Detection of Custom Objects" section of “ObjectARX Developer Guide” about how to register your OE for demand loading.
Assuming that your custom Object Enabler (OE) is correctly registered, and you still see an issue, here are a few points that you may want to check:
- Navisworks cache (.nwc) file - when a dwg file is opened, Navisworks creates a cached file with the same file name with the extension .nwc by default. If you try to open a dwg file that has nwc present in the same folder and nwc is younger than dwg file, navisworks will go straight to nwc file. If you set the demand load after nwc is created, you will need to delete the nwc file to make sure Navisworks will open the dwg again.
- Missing dependency - Another possibility of causing the failure of demand load is missing dlls that dbx is depending on. You can check it using a tool like depends or Dependency Walker.
- [Scene Statistics] ([Home] >> [Project] >> [Scene Statistic]) dialog shows you if there is missing dll or proxy objects in the dwg file. You may want to check there if the demand loading is really failing or not.
- Rendering – Navisworks uses RealDWG to open the drawings. However, they then convert it to their own proprietary format which they then render themselves. Resulting render appearance may not be exactly the same as AutoCAD. e.g. ObjectARX SDK sample polysamp defines an entity using shell geometry. In AutoCAD, the entity is not rendered, while in Navisworks, it renders it.