Navigation

    • Register
    • Login
    • Search
    1. Home
    2. andmotion
    A

    andmotion

    @andmotion

    0
    Reputation
    15
    Posts
    26
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    • Profile
    • More
      • Following
      • Followers
      • Topics
      • Posts
      • Best
      • Groups
    andmotion Follow

    Best posts made by andmotion

    This user does not have any upvoted posts yet.

    Latest posts made by andmotion

    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    @m_magalhaes

    Thanks.

    Next time I will follow the instruction.
    Thanks

    posted in Cinema 4D SDK •
    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    I have my user date applied on to the null plus python tag is also sitting on the null.
    So I think in def main():
    I need to get the tag first and then null in order to read the data from userdata......
    That's make sense for me anyway)
    Thanks

    posted in Cinema 4D SDK •
    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    So Did I missed the actual link to my null object?

    posted in Cinema 4D SDK •
    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    Ok I figured it out 🙂

    import c4d
    #Welcome to the world of Python
    
    desc_x = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
                        c4d.DescLevel(c4d.VECTOR_X, c4d.DTYPE_REAL, 0))
    
    desc_y = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION,c4d.DTYPE_VECTOR, 0),  
                        c4d.DescLevel(c4d.VECTOR_Y, c4d.DTYPE_REAL, 0))
        
    desc_z = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
                        c4d.DescLevel(c4d.VECTOR_Z, c4d.DTYPE_REAL, 0))
    
    def createPositionTracks(object):
        
        trackPosX = object.FindCTrack(desc_x)
        trackPosY = object.FindCTrack(desc_y)
        trackPosZ = object.FindCTrack(desc_z)
        
        
        if trackPosX is None:  
            track = c4d.CTrack(object, desc_x)
            object.InsertTrackSorted(track)
            
        if trackPosY is None:  
            track = c4d.CTrack(object, desc_y)
            object.InsertTrackSorted(track)
            
        
        if trackPosZ is None:
            track = c4d.CTrack(object, desc_z)
            object.InsertTrackSorted(track)
            
    def setPositionKey(object, time, pos):
        
        trackPosX = object.FindCTrack(desc_x)
        trackPosY = object.FindCTrack(desc_y)
        trackPosZ = object.FindCTrack(desc_z)
        
        curvePosX = trackPosX.GetCurve()
        curvePosY = trackPosY.GetCurve()
        curvePosZ = trackPosZ.GetCurve()
        
        keydict = curvePosX.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosX,pos.x)
       
        keydict = curvePosY.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosY,pos.y)
       
        keydict = curvePosZ.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosZ,pos.z)
        
        return True
        
    def main():
        o = op.GetObject()
        source = o[c4d.ID_USERDATA,1]
        target = o[c4d.ID_USERDATA,2]
        offset = o[c4d.ID_USERDATA,3]
        
        if source is not None and target is not None:
            t = doc.GetTime()
            createPositionTracks(target)
            setPositionKey(target,t,source.GetAbsPos() + offset)
            
    
    posted in Cinema 4D SDK •
    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    when I having target = op[c4d.ID_USERDATA,2] it;s coming with this error : AttributeError: parameter access failed

    posted in Cinema 4D SDK •
    RE: AttributeError: 'list' object has no attribute 'FindTrack'

    Hi Zipit,

    Thanks for reply. Yes I have made a mistake typing FindTrack(). It should be FindCTrack().
    Can you explain what do you mean by some_node?
    Thanks again:)

    posted in Cinema 4D SDK •
    AttributeError: 'list' object has no attribute 'FindTrack'

    Hi, I am trying to transfer pos of one obj on the other obj but I am getting this error AttributeError: 'list' object has no attribute 'FindTrack'

    I am not sure how to sort it out.
    Thanks for any help

    import c4d
    #Welcome to the world of Python
    
    desc_x = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
                        c4d.DescLevel(c4d.VECTOR_X, c4d.DTYPE_REAL, 0))
    
    desc_y = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION,c4d.DTYPE_VECTOR, 0),  
                        c4d.DescLevel(c4d.VECTOR_Y, c4d.DTYPE_REAL, 0))
        
    desc_z = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
                        c4d.DescLevel(c4d.VECTOR_Z, c4d.DTYPE_REAL, 0))
    
    def createPositionTracks(object):
        
        trackPosX = object.FindTrack(desc_x)
        trackPosY = object.FindTrack(desc_y)
        trackPosZ = object.FindTrack(desc_z)
        
        
        if trackPosX is None:  
            track = c4d.CTrack(object, desc_x)
            object.InsertTrackSorted(track)
            
        if trackPosY is None:  
            track = c4d.CTrack(object, desc_y)
            object.InsertTrackSorted(track)
            
        
        if trackPosZ is None:
            track = c4d.CTrack(object, desc_z)
            object.InsertTrackSorted(track)
            
    def setPositionKey(object, time, pos):
        
        trackPosX = object.FindTrack(desc_x)
        trackPosY = object.FindTrack(desc_y)
        trackPosZ = object.FindTrack(desc_z)
        
        curvePosX = trackPosX.GetCurve()
        curvePosY = trackPosY.GetCurve()
        curvePosZ = trackPosZ.GetCurve()
        
        keydict = curvePosX.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosX,pos.x)
       
        keydict = curvePosY.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosY,pos.y)
       
        keydict = curvePosZ.AddKey(time)
        key = keydict["key"]
        key.SetValue(curvePosZ,pos.z)
        
        return True
        
    def main():
        
        source = [c4d.ID_USERDATA,1]
        target = [c4d.ID_USERDATA,2]
        offset = [c4d.ID_USERDATA,3]
        
        if source is not None and target is not None:
            t = doc.GetTime()
            createPositionTracks(target)
            setPositionKey(target,t,source.GetAbsPos() + offset)
            
    
    posted in Cinema 4D SDK •
    RE: Delete points based on distance

    I thing after short research that c4d.plugins.ObjectData could actually be the solution I am after.
    I will be posting my progress here.
    Once again Thanks Guys for heads up!!!!!
    Thanks

    posted in Cinema 4D SDK •
    RE: Delete points based on distance

    Here I uploaded the effect I am after :

    https://vimeo.com/359336806?activityReferer=1

    I know that using Boole in C4D I can have exactly the same effect BUT my goal is to start from this simple effect as a python journey.
    Thanks for any suggestion.
    Thanks

    posted in Cinema 4D SDK •
    RE: Delete points based on distance

    Here is the code I am playing with now

    import c4d
    from c4d import gui
    from c4d import utils
    
    #Welcome to the world of Python
    
    
    def main():
        
        
        nullObj =  doc.SearchObject("Null")
        polyObj = doc.SearchObject("Sphere")
        
        if nullObj:
            print("Null is")
            
        if not nullObj:
            print("no Null")
            
        if polyObj:
            print("Sphere is")
            
        if not polyObj:
            print("no Sphere")
            
        #get nullObj world space position
        nullWSMg = nullObj.GetMg().off
        print nullWSMg
        
        #get matrix and points from polyObj
        polyObjWSMg = polyObj.GetMg().off
        polyObjPointsPos = polyObj.GetAllPoints()
        #print polyObjPointsPos
        print polyObjWSMg
        
        #point selection of the polygon object
        selection = polyObj.GetPointS()
        selection.DeselectAll()
        
        #check each point
        
        for i, point in enumerate(polyObjPointsPos):
            #get WS pos of the points
            pointPos = polyObjWSMg * point
            
            #get the distance from point to the null
            diff = nullWSMg - pointPos
            distance = diff.GetLength()
            
            #check distance
            if distance < 100:
                selection.Select(i)
                
        #delete selected points
        
        mode = c4d.MODELINGCOMMANDMODE_POINTSELECTION
        res = c4d.utils.SendModelingCommand(c4d.MCOMMAND_DELETE, list = [polyObj], doc = doc, mode = mode)
                
        c4d.EventAdd()
        
            
    if __name__=='__main__':
        main()
    
    
    
    
    posted in Cinema 4D SDK •