[MDL] Understanding FacetTopologyTable

FacetTopologyTable is a public structure, used by public MDL functions, but I do not know any developer who understands it nor does know how to use it. But, as I am now working with solids, smart solids and meshes, I know I need to use it, but I do not know how to do so, because there is not any understandable documentation or any example. Always I asked about it, it was suggested to me to use some undocumented functions such as mdlElmdscr_meshDscrFromElmdscrExt function, but that function is moving from DLL to DLL and in new version also it is placed into namespace, so it is not as easy to use it... Also, there are some acis_exceprions raised when I use this function on some solids, so I do not want to use it anymore, I want to use public API.

If there is nobody who does understand it, why it is public?

Please, provide any example of using this interresting stuff, I want to understand it and to use it. 

Let's say I have a KIENTITY and I want to fill a PolyfaceArrays structure from result of mdlKISolid_fttCreateFromBody.

Parents
  • I can't provide an example, but I can suggest questions to Bentley Systems.

    Facet Topology Table

    FacetTopologyTable is a C struct defined in header file extgraph.h.  Its members include several pointers, which are dynamically-allocated, and integers which tell us the size of each dynamically-allocated list.

    The terminology used is clearly domain-specific.  For example, I don't know what these mean...

    • Fins
    • Cofins
    • Facet Fins

    There are comments in the header fle that refer to PK_TOPOL_XXX.  What is PK_TOPOL: should it concern us?  Do we have to be knowledgable about Parametric Kernel Topology (my guess) to understand this stuff?

    It's unclear what data is stored in some lists.  For example, the points list is of type double*, where I would expect to see a DPoint3d*, so maybe that's a list of xyz triplets (but I can't be sure).  Less clear is the uv list, also of type double*: is that really a list of uv pairs or a list of single values?

    Poly Face Arrays

    C struct PolyfaceArrays is defined in header file msmesh.h.  It looks similar to the FacetTopologyTable.  Presumably they serve different purposes, but from where I'm standing it's hard to see why two data types exists to help implement similar tasks.

    When should one use a FacetTopologyTable?  When should one use a PolyfaceArray?  Are there benefits in using one over the other?

     
    Regards, Jon Summers
    LA Solutions

Reply
  • I can't provide an example, but I can suggest questions to Bentley Systems.

    Facet Topology Table

    FacetTopologyTable is a C struct defined in header file extgraph.h.  Its members include several pointers, which are dynamically-allocated, and integers which tell us the size of each dynamically-allocated list.

    The terminology used is clearly domain-specific.  For example, I don't know what these mean...

    • Fins
    • Cofins
    • Facet Fins

    There are comments in the header fle that refer to PK_TOPOL_XXX.  What is PK_TOPOL: should it concern us?  Do we have to be knowledgable about Parametric Kernel Topology (my guess) to understand this stuff?

    It's unclear what data is stored in some lists.  For example, the points list is of type double*, where I would expect to see a DPoint3d*, so maybe that's a list of xyz triplets (but I can't be sure).  Less clear is the uv list, also of type double*: is that really a list of uv pairs or a list of single values?

    Poly Face Arrays

    C struct PolyfaceArrays is defined in header file msmesh.h.  It looks similar to the FacetTopologyTable.  Presumably they serve different purposes, but from where I'm standing it's hard to see why two data types exists to help implement similar tasks.

    When should one use a FacetTopologyTable?  When should one use a PolyfaceArray?  Are there benefits in using one over the other?

     
    Regards, Jon Summers
    LA Solutions

Children