MeltEdgeBetween not work ???



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

    On 31/10/2006 at 13:05, xxxxxxxx wrote:

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

    ---------
    It`s seems that MeltEdgeBetween is not work.
    I have a very simple model. And a plugin-generator, which performs this function:

        
        
        Bool chk ;  
        bool aaaa( BaseObject *obj)  
        {  
         Modeling *krnl = Modeling::Alloc() ;  
            if( ! krnl)  
             return false ;  
         chk = krnl->InitObject( obj) ;  
            if( ! chk)  
             return false ;  
         LONG cnt ;  
         LONG *ngns = krnl->GetEdgeNgons( obj, 2, 8, cnt) ;  
         chk = krnl->IsValidEdge( obj, ngns[0], 2, 8) ;  
           if( ! chk)  
            return false ;  
         chk = krnl->IsValidEdge( obj, ngns[1], 2, 8) ;  
           if( ! chk)  
            return false ;  
         chk = krnl->MeltEdgeBetween( obj, ngns[0], ngns[1], 2, 8) ;  
           if( ! chk)  
            return false ;  
         krnl->Commit() ;  
         return true ;  
        }
    

    numbers 2 and 8 is real numbers I find in structure manager. They belong to one edge.
    And this function breakes on last but one line. Functions IsValidEdge returns true, but MeltEdgeBetween function return false.
    Generator is ok. With other modeling function it works well.
    In some cases MeltEdgeBetween returns true, but then  krnl->Commit() crushes cinema.



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

    On 31/10/2006 at 14:12, xxxxxxxx wrote:

    But MeltEdge function works well.



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

    On 31/10/2006 at 23:50, xxxxxxxx wrote:

    oh no
    MeltEdge has problems too. It not work with virtual indices.

        
        
        LONG cnt, ggg = -15 ;  
          LONG hhh = -16 ;  
            
          LONG *ngns = krnl->GetEdgeNgons( obj, ggg, hhh, cnt) ;  
          chk = krnl->IsValidEdge( obj, ngns[0], ggg, hhh) ;  
            if( ! chk)  
             return false ;  
          chk = krnl->IsValidEdge( obj, ngns[1], ggg, hhh) ;  
            if( ! chk)  
             return false ;  
          chk = krnl->MeltEdge( obj, ngns[0], ggg, hhh) ;  
            if( ! chk)  
             return false ;  
          krnl->FreeTable( obj, ngns) ;
    

    This code work without errors.
    -15 and -16 is points added before by SplitEdge function. Their numbers I get by debugger.
    But string

        
        
        krnl->Commit() ;
    

    crushes cinema.
    Without MeltEdge command all works smoothly.



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

    On 01/11/2006 at 00:02, xxxxxxxx wrote:

    May be I do something wrong?
    If no, is the way to melt newly created edge?


Log in to reply