<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi all, <br>
    <br>
    Are there any other thoughts on this? Or ideas on the proper steps
    forward for the iGeom implementation in CGM?<br>
    <br>
    Cheers,<br>
    <br>
    Patrick<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 02/02/2015 12:43 PM, Patrick
      Shriwise wrote:<br>
    </div>
    <blockquote cite="mid:54CFC55E.4030202@wisc.edu" type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hi Evan, <br>
      <br>
      As to 2). I completely agree and I think if I'm reading it
      correctly its aligning with the second of my two purposed
      solutions in the prior email. <br>
      <br>
      1) does seem to add a complication or two. I'm glad you brought it
      up! <br>
      <br>
      I don't know much about how these bodies fit into the hierarchy of
      CGM, but naively it seems that if they are still treated as
      RefVolumes then operations on these sheets could be handled as
      usual in CGM behind the iGeom interface. For the user, it might be
      good to add something in iGeom which will notify them that a sheet
      body/volume has been returned if it is a possibility in the
      function they have called. What it looks like to me from this code
      in Body.cpp<br>
      <br>
      CubitBoolean Body::is_sheet_body()<br>
      {<br>
        DLIList<RefVolume*> volumes;<br>
        ref_volumes(volumes);<br>
        while (volumes.size())<br>
          if (!volumes.pop()->is_sheet())<br>
            return CUBIT_FALSE;<br>
        return CUBIT_TRUE;<br>
      }<br>
      <br>
      is that sheet bodies are still in fact treated as RefVolumes.
      However after looking at some of the OCC code, sheets in OCC come
      back as OCCSurfaces. I'm assuming that these are then translated
      to RefVolumes in the context of CGM, but I lack the expertise to
      know exactly. Does anyone have an exact answer to this?<br>
      <br>
      If we can still treat RefVolumes which are sheets in the same way
      as other RefVolumes then I think returning only RefVolumes is
      still a valid option. If we find that this is not the case or that
      it will obscure the interface by causing certain operations to be
      compromised, then we might have an entirely different problem to
      deal with. <br>
      <br>
      Cheers, <br>
      <br>
      Patrick <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <div class="moz-cite-prefix">On 01/30/2015 12:20 PM, Vander Zee,
        Evan B. wrote:<br>
      </div>
      <blockquote
        cite="mid:553D5F34658FB846ACEA00D6140EAC688BD74790@PAYTON.anl.gov"
        type="cite">
        <meta name="Generator" content="Microsoft Word 14 (filtered
          medium)">
        <style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Consolas","serif";
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:990065870;
        mso-list-type:hybrid;
        mso-list-template-ids:-300136328 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
        <div class="WordSection1">
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">There

              are two additional things that we might want to consider
              in this discussion.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><o:p> </o:p></span></p>
          <p class="MsoListParagraph"
            style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><span
                style="mso-list:Ignore">1)<span style="font:7.0pt
                  "Times New Roman"">      </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">When

              are bodies that CGM is passing through the iGeom interface
              allowed to be “sheet bodies?”  In other words, when should
              we be able to pass what are essentially 2-dimensional
              entities through the iGeom interface?<o:p></o:p></span></p>
          <p class="MsoListParagraph"
            style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><span
                style="mso-list:Ignore">2)<span style="font:7.0pt
                  "Times New Roman"">      </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">The

              input path of iGeom is a consideration as well as the
              output side.  We can assume, I think, that the only entity
              handles a user passes into methods through the iGeom
              interface are entity handles that have been accessed
              through the iGeom interface.  If we want to allow
              operations that apply to multiple volumes, but we never
              pass back entity handles that refer to multiple-volume
              bodies, then we should make sure that the interface
              includes methods that support passing in a list of
              entities or an entity set.  For example, the interface
              already supports subtract with entity set arguments as
              well as with entity handles.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">I
              think that with a little documentation, we could expect
              users to be responsible for cleaning up single-entity
              entity sets that are returned from operations that could
              in some cases return multiple volumes.  However, making it
              easier to use and not expecting a lot of the user is often
              the better path.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">These

              are just a few comments from a guy who’s relatively new to
              CGM.  Please continue the discussion with comments from
              more experienced developers.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:windowtext">-Evan</span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
          <div>
            <div style="border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0in 0in 0in">
              <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">
                  <a moz-do-not-send="true"
                    class="moz-txt-link-abbreviated"
                    href="mailto:cgma-dev-bounces@mcs.anl.gov">cgma-dev-bounces@mcs.anl.gov</a>
                  [<a moz-do-not-send="true"
                    class="moz-txt-link-freetext"
                    href="mailto:cgma-dev-bounces@mcs.anl.gov">mailto:cgma-dev-bounces@mcs.anl.gov</a>]
                  <b>On Behalf Of </b>shriwise<br>
                  <b>Sent:</b> Friday, January 30, 2015 9:15 AM<br>
                  <b>To:</b> Paul Wilson; CGMA Development<br>
                  <b>Subject:</b> Re: [cgma-dev] Continuing discussion
                  of iGeom handling of RefVolume vs Body<o:p></o:p></span></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><br>
            <br>
            Hi all,<br>
            <br>
            From an iGeom perspective, I'm not sure that using bodies is
            a bad thing... The real issue to me is the mix currently
            being used. It has been shown to cause problems in iRel. In
            any case, I think that we should move entirely to one or the
            other. <br>
            <br>
            The real issue to me is that outside of the user's knowledge
            of the geometry, they can't be sure if the body they are
            getting from UniteEnts, IntersectEnts, etc. contains
            disjoint volumes or not. <br>
            <br>
            <b><u>Using RefVolumes Exclusively</u></b><br>
            As it currently stands in specification, in the iGeom
            interface there is no notion of a body or, perhaps more
            importantly, an Entity which <i>contains</i> other
            entities. There are only Entities and EntitySets. The point
            being that returning a recast cgm Body as an Entity from
            iGeom simply shouldn't be allowed as it breaks established
            conventions of iGeom unless we do one of two things:<br>
            <br>
            1) Only return bodies as EntitySets which contain the
            appropriate Entities (these relationships being set within
            the functions being called.)<br>
                - This would require <br>
            <br>
            2) Return arrays of Entities from functions when
            appropriate, along with an indicator of the array size.<br>
            <br>
            Either way, a proper iGeom implementation will require a bit
            of a deeper look at any function that currently returns a
            Body to determine the proper way to handle this. For
            example, the createSphere function should really return a
            single RefVolume as the body created from this process
            wouldn't be expected to have more than one volume. However,
            I think that other functions like uniteEnts and so on will
            require something like 1) or 2) above. <br>
            <br>
            <b><u>Using Bodies Exclusively</u></b><br>
            All this being said about RefVolumes, it would certainly be
            possible to always return Bodies from iGeom for dimension 3
            entities, but as I mentioned above I think this should
            always be done using EntitySets. This implementation would
            be less clean as iGeom models would then perhaps contain
            many EntitySets most of which really only contain one
            entity. The user would then have to retrieve their created
            entities proper by querying the EntitySets. It adds an
            unnecessary level of abstraction and might cloud the user's
            idea of what EntitySets are intended for.<br>
            <br>
            One last thing I'll say in favor of using RefVolumes
            exclusively but returning lists is that it adds clarity to
            the interface. By having boolean functions like uniteEnts
            and others return lists or EntitySets, it will imply to the
            user that iGeom is capable of doing these operations in the
            case of disjointed volumes and that they may be getting
            multiple volume entities back from these functions. If we
            were to return bodies only, it then becomes ambiguous (and
            perhaps confusing to the user) as to whether or not any
            function called is returning one or more volumes. <br>
            <br>
            That's my take. Apologies for the lack of insight in the
            changes found in the current PR. The situation is not as
            simple as I'd initially thought. <br>
            <br>
            Cheers, <br>
            <br>
            Patrick <o:p></o:p></p>
          <div>
            <p class="MsoNormal">On 01/29/2015 03:17 PM, Paul Wilson
              wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <p class="MsoNormal">Hello,<br>
              <br>
              There has been some discussion in a <a
                moz-do-not-send="true"
                href="https://bitbucket.org/fathomteam/cgm/pull-request/8/igeom-updates">
                pull request</a> that I thought would be better brought
              to the mailing list.<br>
              <br>
              This was initially motivated by the realization that iGeom
              was inconsistent in returning a RefVolume vs a Body in
              different calls.  Thus, two entity handles that referred
              to the same volume in space would not be detected as the
              same volume.<br>
              <br>
              Faced with two choices - refer only to RefVolumes or refer
              only to Body's - we settled on referring only to
              refVolume's in the iGeom interface.  However, this breaks
              the ability to refer to a Body such as my be returned by
              uniting two volumes that are disjoint - which is part of
              the interface.<br>
              <br>
              So.... perhaps we need to only deal with Body in the iGeom
              interface.  Perhaps Patrick can offer some of the
              downsides to this approach?<br>
              <br>
              Paul<br>
              <br>
              <br>
              <o:p></o:p></p>
            <pre>-- <o:p></o:p></pre>
            <pre>-- ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --<o:p></o:p></pre>
            <pre>Paul Wilson ~ UW-Madison ~ 608-263-0807 ~ cal: <a moz-do-not-send="true" href="http://bit.ly/pphw-cal">http://bit.ly/pphw-cal</a><o:p></o:p></pre>
            <pre>Professor, Engineering Physics. ~ <a moz-do-not-send="true" href="http://cnerg.engr.wisc.edu">http://cnerg.engr.wisc.edu</a><o:p></o:p></pre>
            <pre>Faculty Director, Advanced Computing Infrastructure ~ <a moz-do-not-send="true" href="http://aci.wisc.edu">http://aci.wisc.edu</a>        <o:p></o:p></pre>
          </blockquote>
          <p class="MsoNormal"><br>
            <br>
            <o:p></o:p></p>
          <pre>-- <o:p></o:p></pre>
          <pre>Patrick C. Shriwise<o:p></o:p></pre>
          <pre>Research Assistant<o:p></o:p></pre>
          <pre>University of Wisconsin - Madison<o:p></o:p></pre>
          <pre>Engineering Research Building - Rm. 428<o:p></o:p></pre>
          <pre>1500 Engineering Drive<o:p></o:p></pre>
          <pre>Madison, WI 53706<o:p></o:p></pre>
          <pre>(608) 446-8173<o:p></o:p></pre>
        </div>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
Patrick C. Shriwise
Research Assistant
University of Wisconsin - Madison
Engineering Research Building - Rm. 428
1500 Engineering Drive
Madison, WI 53706
(608) 446-8173
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Patrick C. Shriwise
Research Assistant
University of Wisconsin - Madison
Engineering Research Building - Rm. 428
1500 Engineering Drive
Madison, WI 53706
(608) 446-8173
</pre>
  </body>
</html>