Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Converting Poly to Edge Selection

    SDK Help
    0
    3
    385
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 07/02/2004 at 10:55, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   8.500 
      Platform:   Windows  ;   Mac OSX  ; 
      Language(s) :     C++  ;

      ---------
      Hi,

      am I right that there is a MCOMMAND_SELECTPOLYTOPOINT but not a matching MCOMMAND_SELECTPOLYTOEDGE ?

      I would like to convert a polygon selection to an edge selection, and then I would like to deselect all "non border" edges. Could somebody give a roughly outline how to acieve this?

      If I'm ready with 3, I would also like to set the Hypernurbs value of these edges and make them phong breaking edges. any clue how to do that?

      Generally the SDK is imho *very* short on edge handling, and an example about handling and manipulation the different kind of selections would certainly be a big bonus here.

      Thanks for any insight

      Kabe

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 08/02/2004 at 01:38, xxxxxxxx wrote:

        Ok, so here's what I think I've figured out so far:

        Use PolygonObject GetPolygonS() to get the polygon selection

        Use BaseSelect GetSegments() ro get the number of segments, and GetRange(LONG seg, LONG* a, LONG* b) to access the polygons of each selection. Ok, now I have the polygon indices, and can access the single faces after retrieving the polygon array with GetPolygon().

        Next I create a Neighbor Object and initialize it using Init(LONG pcnt, Polygon* vadr, LONG vcnt, BaseSelect* bs).

        GetEdgePolys(LONG a, LONG b, LONG* first, LONG* second) delivers me the Polygons attached to the edge a-b. Do I get a NULL for the first or second Poly, provided the edge in question is an "outer edge" of the selection?

        So, and now I'm stuck. I think I should create a BaseSelect and stuff the edges in it to use PolygonObject's SetSelected Edges(...) with EDGES_PHONG to break the edges the lines.
        And, much more important: How can I retrieve the edge indices?
        BTW: Do I have to repeat that call with EDGES_SELECTION or can I combine these selection types?

        I also don't understand how to set edge weightings in the HNData, as this has only polyweight and pointweight, yet no edgeweight afathe SDK shows.

        Thanks for any corrections, further info and helpful advice!

        Cheers

        Kabe

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 08/02/2004 at 07:31, xxxxxxxx wrote:

          1./2. Correct. Use

          MCOMMAND_CONVERTSELECTION and then set the MDATA ids according to the dialog in Cinema 4d.
          
          3. Afaik the edge HN weightings ain´t nothing else but weightings of the corresponding points of the edge. Phong Breaks can be retrieved with GetPhongBreaks() which returns a normal BaseSelect and can be modified like one (direct access). 
          
          There (in the docs) you can also see how to retrieve the edge index:
          
           **"The edges are indexed by [CODE]4 * polygon + edge
          

          where

          polygon
          

          is the polygon index and

          edge
          

          is the edge index between 0 and 3. "** [/CODE]

          As you already correctly did, you can use the Neighbor class to go through all edges and then apply your selection algorithm to them. (see the documentation or the "Atom.cpp" SDK example for more information on edges)
          
          Hope that helps (these are thoughts, I haven´t checked them)
          
          Samir
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post