Changeset 1205 in main


Ignore:
Timestamp:
06/11/12 09:31:42 (7 years ago)
Author:
pcosquer
Message:

document3D: menu: highlight selected object on hover

Location:
trunk/openPLM/document3D
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/document3D/arborescense.py

    r1022 r1205  
    1 import os, os.path 
     1# TODO: refactor this code 
    22 
    3 import django.utils.simplejson as json 
    4      
    53def generate_javascript_for_3D(product): 
    64    """ 
     
    1311    if product: 
    1412        numeration=[0] 
    15         javascript=['var object3D = new THREE.Object3D();\n']         
    16  
    17  
    18          
     13        javascript=['var object3D = new THREE.Object3D(); var part_to_object = {}; var part_to_parts = {};\n']         
    1914        javascript_menu=['function menu() {\nelement = document.createElement("div");\nelement.id="root";\nelement.innerHTML ="'] 
    20  
    21  
    2215         
    2316        javascript[0]+='var part%s=new THREE.Object3D();\n'%numeration[0] 
    2417        javascript_menu[0]+=function_generate_menu(numeration[0],product.name)          
    2518 
    26         ok=generate_javascript(product,numeration,javascript,[],javascript_menu,numeration[0]) 
     19        generate_javascript(product,numeration,javascript,[],javascript_menu,numeration[0]) 
    2720         
    2821        javascript_menu[0]+='</li></ul>'  
     
    3528        
    3629def generate_javascript(product,numeration,javascript,loc,javascript_menu,old_numeration): 
    37      
    38      
    3930    numeration[0]+=1      
    4031 
     
    4536              
    4637        for link in product.links: 
    47          
    48              
    49              
    5038            for i in range(link.quantity): 
    5139 
     
    6048                javascript_menu[0]+="</li>" 
    6149             
    62                  
    6350        javascript[0]+=generate_functions_visibilty_parts(old_numeration,parts_generated) 
    6451     
     
    6653   
    6754        javascript[0]+=generate_functions_visibilty_object(old_numeration,numeration[0],product,loc) 
    68                
    69  
    7055    javascript_menu[0]+="</ul>"         
    71          
    72                              
    73              
    7456 
    7557 
    7658 
    7759def generate_functions_visibilty_parts(numeration,parts_generated): 
    78  
    79  
    80     parts_definition="" 
    81     function=str(function_head % (locals())) 
     60    parts_definition = [] 
     61    function = [function_head % locals()] 
     62    part_to_parts = ['part_to_parts["part%s"] = [' % numeration] 
    8263    for part_numeration_child in parts_generated: 
    83         parts_definition+="var part%s=new THREE.Object3D();\n"%part_numeration_child 
    84         function+=str(function_change_part % (locals())) 
    85     function+="}\n" 
    86     return parts_definition+function         
    87  
    88  
    89  
     64        parts_definition.append( "var part%s=new THREE.Object3D();\n"%part_numeration_child) 
     65        function.append(function_change_part % locals()) 
     66        part_to_parts.append('"part%s", ' % part_numeration_child) 
     67    part_to_parts.append("];\n") 
     68    function.append("}\n") 
     69    return ''.join(parts_definition) + ''.join(function) + ''.join(part_to_parts) 
    9070  
    9171def generate_functions_visibilty_object(numeration,object_numeration,product,loc): 
    92  
    93  
    94              
    9572    reference=product.geometry 
    9673    part_id=str(product.doc_id)         
    9774                                            
    98     function=str(function_head % (locals()))+str(function_change_object % (locals()))+"}\n" 
     75    function= function_head % locals() + function_change_object % locals() + "}\n" 
     76    function += "part_to_object['part%(numeration)s'] = object%(object_numeration)s;" % locals() 
    9977   
    10078    return generate_object(loc,object_numeration,reference,part_id)+function      
    10179 
    10280 
    103  
    104  
    10581def generate_object(loc,numeration,reference,part_id): 
    106  
    107      
    108  
    10982 
    11083    locate="var object%s=new THREE.Mesh(_%s_%s,material_for_%s_%s );\n"%(numeration,reference,part_id,reference,part_id) 
     
    11588            loc[g].y2,loc[g].y3,loc[g].y4,loc[g].z1,loc[g].z2,loc[g].z3,loc[g].z4) 
    11689 
    117          
    11890    locate+="object3D.add(object%s);\n"%numeration     
    119           
    120          
    121      
    122       
    12391    return locate 
    12492     
     
    12795 
    12896    onclick="change_part"+str(numeration)+"(\\\"click\\\")"  
    129     return "<li > <a href='#' onClick='%s'><b onClick='%s'></b>%s </a>"%(onclick,onclick,name) 
     97    return "<li > <a href='#' id='li-part-%s' onClick='%s'><b onClick='%s'></b>%s </a>" % (numeration, onclick,onclick,name) 
    13098     
    13199     
    132100          
    133101function_head = """ 
    134 function change_part%(numeration)s(atribute) { 
    135     if (atribute==\"click\"){ 
     102function change_part%(numeration)s(attr) { 
     103    if (attr == "click"){ 
    136104     
    137105        part%(numeration)s.visible=!part%(numeration)s.visible; 
     
    139107    } 
    140108    else{ 
    141         part%(numeration)s.visible=atribute; 
     109        part%(numeration)s.visible=attr; 
    142110    }        
    143111"""  
     
    145113 
    146114function_change_part = """ 
    147     change_part%(part_numeration_child)s(part%(numeration)s.visible)       
     115    change_part%(part_numeration_child)s(part%(numeration)s.visible);  
    148116""" 
    149117function_change_object = """ 
    150118    object%(object_numeration)s.visible=part%(numeration)s.visible;    
    151119"""                                     
    152      
    153120 
    154  
    155  
    156  
    157    
    158      
    159      
    160      
    161      
  • trunk/openPLM/document3D/templates/Display3D.htm

    r1203 r1205  
    242242            spot2   = light; 
    243243            light.target.position.set( 0, 8, 0 ); 
    244             light.shadowCameraNear      = 0.01;      
    245             light.castShadow        = true; 
    246             light.shadowDarkness        = 0.1; 
     244            light.shadowCameraNear = 0.01;      
     245            light.castShadow = true; 
     246            light.shadowDarkness = 0.1; 
    247247            scene.add( light ); 
    248248 
     
    260260                    opacity: 0.8//  obj.material.opacity 
    261261                }); 
     262                obj.material.original_color = obj.material.color.getHex();  
    262263            } 
    263264            object3D.castShadow = true; 
     
    321322            }); 
    322323 
    323         } 
    324     }                    
     324            $('.menu a').hover( 
     325                function (){ 
     326                    var part = "part" + $(this).attr("id").replace("li-part-", ""); 
     327                    highlight_part(part); 
     328                }, 
     329                function () { 
     330                    var part = "part" +  $(this).attr("id").replace("li-part-", ""); 
     331                    unhighlight_part(part); 
     332                } 
     333            ); 
     334 
     335        } 
     336        }                        
     337 
     338    function highlight_part(part_id) { 
     339 
     340        var obj = part_to_object[part_id]; 
     341        if (obj != undefined){ 
     342            m = obj.material; 
     343            m.color.setHex(0xff0000); 
     344        } 
     345        $(part_to_parts[part_id]).each ( 
     346            function (i,p) { 
     347                highlight_part(p); 
     348            } 
     349        ); 
     350    } 
     351 
     352    function unhighlight_part(part_id) { 
     353        var obj = part_to_object[part_id]; 
     354        if (obj != undefined){ 
     355            m =  obj.material; 
     356            m.color.setHex(m.original_color); 
     357        } 
     358        $(part_to_parts[part_id]).each ( 
     359            function (i,p) { 
     360                unhighlight_part(p); 
     361            } 
     362         ); 
     363 
     364    } 
    325365 
    326366 
     
    387427    {% endif %} 
    388428 
    389     </script> 
    390  
    391     {% endblock %} 
     429</script> 
     430 
     431{% endblock %} 
Note: See TracChangeset for help on using the changeset viewer.