[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

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

    One addition...

    One of suggested functions to use instead of mdlKISolid_fttCreateFromBody was mdlKISolid_facetBodyToPolyfaceArrays which probably does what I asked for under the hood (I know its declaration). I do not understand, why such function is not public, while mdlKISolid_fttCreateFromBody is public. Ofcorse, my goal is to understand FacetTopologyTable.

    I think that the usage of both structures is the same, but PolyfaceArrays structure is more transparent. 

  • Unknown said:
    Ofcorse, my goal is to understand FacetTopologyTable.

    I wouldn't spend any time on this and would just use the suggested mdlKISolid_facetBodyToPolyfaceArrays. FacetTopologyTable won't survive to see the next version; extgraph.h is a remnant of the pre-XM openGL accelerated view implementation.

    -B



  • Will be functions mdlKISolid_facetBodyToPolyfaceArrays and mdlElmdscr_meshDscrFromElmdscrExt or equivalents public?

    How about that acis_exception? What may casue it on V8i SS2?

  • Unknown said:
    Will be functions mdlKISolid_facetBodyToPolyfaceArrays and mdlElmdscr_meshDscrFromElmdscrExtor equivalents public?

    These are currently still un-published and likely to remain that way. There will be new C++ and Managed classes for collecting facets and creating mesh elements from facets.

    Unknown said:
    How about that acis_exception? What may casue it on V8i SS2?

    Difficult to say, if you ignore the exception does it facet correctly? Does the acis brep have any faults...does it render ok?

    -B



  • Unknown said:
    Difficult to say, if you ignore the exception does it facet correctly? Does the acis brep have any faults...does it render ok?

    Solid comes from DWG (attached).

    It renders OK.

    It does NOT facet, MDL function mdlElmdscr_meshDscrFromElmdscrExtor does not return SUCCESS. However, if I copy this solid, element copy can be facetted without issue.

    In V8i SS2, exception is thrown in all KISOLID functions, in V8i SS3 depends on used KISOLID function. 

    testssolid.dwg
  • I don't see a problem in SS3 with mdlElmdscr_meshDscrFromElmdscrExt, which is what the Mesh From Element tool uses.

    -B



  • Yes, as I wrote, in SS3 depends on used MDL function, however this function works there... Try in SS2 :)

  • I have a similar Problem, and mdlElmdscr_meshDscrFromElmdscr (Ext) should be the solution - but how it's usage?
    Parameter to call? How (or what) link? I've didnt found any lib or dlo with this functions.

    Tom
Reply Children
No Data