Changeset 599 in main for branches


Ignore:
Timestamp:
12/13/11 16:06:22 (9 years ago)
Author:
agalech
Message:

new QuickTriangleMesh? in nuevomesh.py

Location:
branches/3D/openPLM
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/3D/openPLM/document3D/STP_converter_JSS.py

    r597 r599  
    3535#from OCC.TDataStd import * 
    3636from OCC import XCAFApp, TDocStd, TCollection, XCAFDoc, BRepPrimAPI, Quantity, TopLoc, gp, TPrsStd, XCAFPrs 
    37  
    38  
     37#from OCC.MSH.Mesh import QuickTriangleMesh 
     38 
     39from OCC.Utils.Topology import Topo 
    3940 
    4041##Puede haver dos root? 
     
    9091            loc=[] 
    9192            self._shapes_avec_nom.append(arbre_nom_shapes(Nom_Label_Shape(l_Labels_root.Value(i+1)))) 
     93            #self._shapes_avec_nom[i].children.append(shape_tool.GetShape(l_Labels_root.Value(i+1))) 
    9294            parcours_recursif(l_Labels_root.Value(i+1),shape_tool,self._shapes_avec_nom[i].children,color_tool,loc) 
    9395 
     
    99101 
    100102    l_ComponentShapes = TDF_LabelSequence()  
    101     colour_chercher(label,color_tool) 
    102      
    103      
    104      
    105     if(shape_tool.IsReference(label)):     
     103    l_SubShapes = TDF_LabelSequence() 
     104    #colour_chercher(label,color_tool) 
     105    shape_tool.GetSubShapes(label,l_SubShapes) 
     106     
     107     
     108    if(l_SubShapes.Length()>0): 
     109        print "SubShapeDetectado ###################" 
     110     
     111 
     112         
     113         
     114    if(shape_tool.IsReference(label)):    
     115        print "entra 3"  
    106116        lab=TDF_Label() 
    107117        shape_tool.GetReferredShape(label,lab) 
    108118        shape_tool.GetComponents(lab,l_ComponentShapes) 
     119 
    109120        if(l_ComponentShapes.Length()>0): 
    110121            loc.append(shape_tool.GetLocation(label))  
    111122            for f in range(l_ComponentShapes.Length()): 
    112                 arbre_shape.append(arbre_nom_shapes(Nom_Label_Shape(l_ComponentShapes.Value(f+1))))  
    113                   
     123                arbre_shape.append(arbre_nom_shapes(Nom_Label_Shape(l_ComponentShapes.Value(f+1))))    
    114124                parcours_recursif(l_ComponentShapes.Value(f+1),shape_tool,arbre_shape[f].children,color_tool,loc[:]) 
    115125        else: 
    116126            compShape=shape_tool.GetShape(label)  
    117127            for i in range(len(loc)):  
    118                 compShape.Move(loc[len(loc)-i-1])         
    119             arbre_shape.append(compShape)         
     128                compShape.Move(loc[len(loc)-i-1]) 
     129            t=Topo(compShape)     
     130            if t.number_of_vertices() > 0: 
     131  
     132                arbre_shape.append(compShape) 
     133            else: 
     134                #arbre_shape.append(compShape) 
     135                print "No valid shape" 
     136                #print Nom_Label_Shape(label) , Nom_Label_Shape(lab) ,   Nom_Label_Shape(label.Father().Father()) 
     137                #compShape2=shape_tool.GetShape(label.Father())               
     138                #arbre_shape.append(compShape2) 
     139 
     140                       
    120141    else: 
    121142        shape_tool.GetComponents(label,l_ComponentShapes) 
     
    125146                parcours_recursif(l_ComponentShapes.Value(f+1),shape_tool,arbre_shape[f].children,color_tool,loc[:])       
    126147        else:  
    127                  
    128             compShape=shape_tool.GetShape(label)  
    129             if loc: 
    130                 print "y aqui no entra" 
    131                 compShape.Move(loc)         
     148            #print "y aqui no entra"     
     149            compShape=shape_tool.GetShape(label)  
     150            for i in range(len(loc)):  
     151                compShape.Move(loc[len(loc)-i-1])         
    132152            arbre_shape.append(compShape)               
    133153 
     
    153173            n=N.GetObject() 
    154174            return n.Get().PrintToString() 
    155          
     175  
     176  
     177def mesh_shape(shape): 
     178    """ Take a topods_shape instance, returns the tesselated object""" 
     179    a_mesh = QuickTriangleMesh(DISPLAY_LIST=True) 
     180    a_mesh.set_shape(shape) 
     181    # define precision for the mesh 
     182    a_mesh.set_precision(a_mesh.get_precision()/2.) 
     183    # then compute the mesh 
     184    a_mesh.compute() 
     185    return a_mesh        
     186 
     187    return True        
    156188         
    157189"""                     
  • branches/3D/openPLM/document3D/aficher.py

    r597 r599  
    22from openPLM.document3D.STP_converter_JSS import * 
    33from openPLM.document3D.models import * 
    4 from OCC.MSH.Mesh import QuickTriangleMesh 
     4#from OCC.MSH.Mesh import QuickTriangleMesh 
     5from openPLM.document3D.nuevomesh import * 
    56from kjbuckets import kjGraph 
    67# si sale mal de mes3js borrar el new_stp_js para que no se muestre    
    7  
     8#91.0020.07:1.60 
     9#91.0020.07:1.60 
    810 
    911 
     
    8082 
    8183     
    82      
    83      
     84  
     85                    
    8486def generate_objects(graph,root,output,nom=''): 
    8587 
     
    98100            generate_objects(graph,'',output,root[i]) 
    99101        else: 
    100             output.write("var object%s=new THREE.Mesh( new _%s(), new THREE.MeshNormalMaterial({opacity:0.5,shading:THREE.SmoothShading}) );\n"%(root[i],root[i]))   
     102            if str(root[i]).count(".") == 0: # para evitar generar objetos de instances arbresnom que no tienen hijos se puede dar el caso de shape sin informacion que no van a generar hijos 
     103                output.write("var object%s=new THREE.Mesh( new _%s(), new THREE.MeshNormalMaterial({opacity:0.5,shading:THREE.SmoothShading}) );\n"%(root[i],root[i]))   
    101104             
    102105def generate_functions(graph,root,output,nom=''): 
     
    129132                    part_id_2=part_id_2.replace(".","") 
    130133                    output.write("change_part%s(part%s.visible);\n"%(part_id_2,part_id))     
    131                 else:   
    132                     output.write("object%s.visible=part%s.visible;\n"%(feuille[t],part_id))  
     134                else: 
     135                    if str(feuille[t]).count(".") == 0:  # para evitar generar objetos de instances arbresnom que no tienen hijos se puede dar el caso de shape sin informacion que no van a generar hijos 
     136                        output.write("object%s.visible=part%s.visible;\n"%(feuille[t],part_id))  
    133137       
    134138  
     
    189193            new_stp_jss.stp = doc_file 
    190194            new_stp_jss.save() 
     195            print "procesamos el mesh ",old_name  
    191196            my_mesh = mesh_shape(my_shape[i]) 
    192197            name = new_stp_jss.js.storage.get_available_name(fileName+".js") 
     
    194199            if(not mesh_to_3js(my_mesh,path.encode(),"_"+str(new_stp_jss.id))): 
    195200                new_stp_jss.delete() 
     201 
    196202                return False     
    197203                #exception 
     
    200206                new_stp_jss.js = name 
    201207                new_stp_jss.save() 
     208 
     209             
    202210             
    203211             
     
    279287 
    280288     
    281 """ 
    282 def parcours_recursif2(my_shape,fileName,doc_file,graph,root,part_numeration,old_name=''): 
    283      
    284     for i in range(len(my_shape)): 
    285         nom=my_shape[i].nom 
    286         new_stp_jss= stp_to_jss() 
    287         new_stp_jss.stp = doc_file 
    288         new_stp_jss.save() 
    289         nom=nom+"."+str(part_numeration+i) 
    290         if not old_name == '': 
    291             graph.add(old_name,nom) 
    292         else:  #nom=root 
    293             root.append(nom)     
    294         if  len(my_shape[i].children)==1: 
    295             my_mesh = mesh_shape(my_shape[i].children[0]) 
    296  
    297  
    298             name = new_stp_jss.js.storage.get_available_name(fileName+".js") 
    299             path = os.path.join(new_stp_jss.js.storage.location, name) 
    300             if(not mesh_to_3js(my_mesh,path.encode(),"_"+str(new_stp_jss.id))): 
    301                 new_stp_jss.delete() 
    302  
    303                 return False     
    304                 #exception 
    305             else: 
    306                 graph.add(nom,new_stp_jss.id) 
    307                 new_stp_jss.js = name 
    308                 new_stp_jss.save() 
    309  
    310         else: 
    311  
    312             new_stp_jss.delete()#j avais besoin de generer pour obtenir une id 
    313             return parcours_recursif2(my_shape[i].children,fileName,doc_file,graph,root,(part_numeration+len(my_shape)),nom) 
    314              
    315     return True  
    316 """ 
    317      
    318  
    319      
    320      
    321      
    322      
     289 
     290     
     291 
     292     
     293     
     294     
     295     
  • branches/3D/openPLM/document3D/models.py

    r597 r599  
    66from django.db.models import get_model 
    77# Create your models here. 
     8 
     9 
     10#eliminar navegabilidad 
    811 
    912class Document3D(Document): 
     
    8992            multi_jss=stp_to_jss.objects.filter(stp=doc_file) 
    9093            count=multi_jss.count() 
     94            print "vamos a eliminar : " , count 
    9195            for i in range(count): 
    92                 os.remove(settings.MEDIA_ROOT+"3D/"+multi_jss[count-i-1].js.name) 
    93                 print "Deleting .jss associes :" , (settings.MEDIA_ROOT+"3D/"+multi_jss[count-i-1].js.name) 
     96                if not multi_jss[count-i-1].js.name =="": 
     97                    os.remove(settings.MEDIA_ROOT+"3D/"+multi_jss[count-i-1].js.name) 
     98                    #os.remove(settings.MEDIA_ROOT+"3D/"+multi_jss[i].js.name) 
     99                    print "Deleting .jss associes :" , (settings.MEDIA_ROOT+"3D/"+multi_jss[count-i-1].js.name) 
    94100                multi_jss[count-i-1].delete() 
    95101                 
  • branches/3D/openPLM/document3D/templates/Display3D.htm

    r597 r599  
    315315 
    316316                            centrer_objet(object3D); 
    317                 camera = new THREE.PerspectiveCamera( 50, $(main_content).width() / $(main_content).height(), 1, deep*8 ); 
     317                camera = new THREE.PerspectiveCamera( 50, $(main_content).width() / $(main_content).height(), 0.1, deep*30 ); 
    318318                camera.position.z = deep*4; 
    319319                 
     
    459459   if(Object_Group.children.length >  0 ){ 
    460460    
    461     
    462         Object_Group.children[ 0 ].geometry.computeBoundingBox(); 
    463         var boundingBox = {  
    464         'x': [ Object_Group.children[ 0 ].geometry.boundingBox.x[ 0 ], Object_Group.children[ 0 ].geometry.boundingBox.x[ 1 ] ], 
    465         'y': [ Object_Group.children[ 0 ].geometry.boundingBox.y[ 0 ], Object_Group.children[ 0 ].geometry.boundingBox.y[ 1 ] ], 
    466         'z': [ Object_Group.children[ 0 ].geometry.boundingBox.z[ 0 ], Object_Group.children[ 0 ].geometry.boundingBox.z[ 1 ] ]};   
    467          
     461         
     462  
     463        var boundingBox; 
    468464 
    469465         
    470466       
    471         for ( var v = 1 ;v  < Object_Group.children.length; v ++ ) { 
     467        for ( var v = 0 ;v  < Object_Group.children.length; v ++ ) { 
    472468 
    473469        Object_Group.children[ v ].geometry.computeBoundingBox(); 
    474470         
    475471        if(Object_Group.children[ v ].geometry.boundingBox){ 
     472         
     473         
     474        if(!boundingBox){ 
     475        boundingBox= {  
     476        'x': [ Object_Group.children[ v ].geometry.boundingBox.x[ 0 ], Object_Group.children[ v ].geometry.boundingBox.x[ 1 ] ], 
     477        'y': [ Object_Group.children[ v ].geometry.boundingBox.y[ 0 ], Object_Group.children[ v ].geometry.boundingBox.y[ 1 ] ], 
     478        'z': [ Object_Group.children[ v ].geometry.boundingBox.z[ 0 ], Object_Group.children[ v ].geometry.boundingBox.z[ 1 ] ]};  
     479        } 
     480         
     481         
     482         
     483         
    476484 
    477485        if ( Object_Group.children[ v ].geometry.boundingBox.x[ 0 ] < boundingBox.x[ 0 ] ) { 
  • branches/3D/openPLM/settings_tests.py

    r595 r599  
    55import os.path 
    66 
    7 DEBUG = False 
     7DEBUG = True 
    88TEMPLATE_DEBUG = DEBUG 
    99 
    1010ADMINS = ( 
    11     # ('Your Name', 'your_email@domain.com'), 
    12     ("pcosquer", "pierre.cosquer@insa-rennes.fr"), 
    13     ("pjoulaud", "ninoo.fr@gmail.com"), 
     11    ('Your Name', 'your_email@domain.com'), 
    1412) 
    1513 
     
    1715 
    1816DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
    19 DATABASE_NAME = 'database.db'             # Or path to database file if using sqlite3. 
    20 DATABASE_USER = ''             # Not used with sqlite3. 
    21 DATABASE_PASSWORD = ''         # Not used with sqlite3. 
    22 DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3. 
     17DATABASE_NAME = 'openplm'             # Or path to database file if using sqlite3. 
     18DATABASE_USER = 'django'             # Not used with sqlite3. 
     19DATABASE_PASSWORD = 'django#6'         # Not used with sqlite3. 
     20DATABASE_HOST = 'localhost'             # Set to empty string for localhost. Not used with sqlite3. 
    2321DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3. 
    2422 
     
    3230# Language code for this installation. All choices can be found here: 
    3331# http://www.i18nguy.com/unicode/language-identifiers.html 
    34 LANGUAGE_CODE = 'en/en' 
     32LANGUAGE_CODE = 'en-en' 
    3533 
    3634SITE_ID = 1 
     
    4240# Absolute path to the directory that holds media. 
    4341# Example: "/home/media/media.lawrence.com/" 
    44 MEDIA_ROOT = 'media/' 
     42MEDIA_ROOT = '/home/linux/openPLM/branches/3D/openPLM/media/' 
    4543 
    4644# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
     
    5250# trailing slash. 
    5351# Examples: "http://foo.com/media/", "/media/". 
    54 ADMIN_MEDIA_PREFIX = '/media/admin/' 
     52ADMIN_MEDIA_PREFIX = '/../media/admin/' 
    5553 
    5654# Make this unique, and don't share it with anybody. 
     
    6664MIDDLEWARE_CLASSES = ( 
    6765    'django.middleware.common.CommonMiddleware', 
     66    'django.contrib.csrf.middleware.CsrfMiddleware', 
    6867    'django.contrib.sessions.middleware.SessionMiddleware', 
    6968    'django.middleware.locale.LocaleMiddleware', 
     
    7574      ('fr', u'Français'), 
    7675      ('en', 'English'), 
    77       ('es', u'Español'), 
    7876) 
    7977 
     
    8482    # Always use forward slashes, even on Windows. 
    8583    # Don't forget to use absolute paths, not relative paths. 
    86     "templates", 
     84    "/home/linux/openPLM/branches/3D/openPLM/templates", 
     85    "/home/linux/openPLM/branches/3D/openPLM/document3D/templates", 
    8786) 
    8887 
     
    9796    'djcelery', 
    9897    'haystack', 
     98    'south', 
    9999    'openPLM.plmapp', 
    100100    # you can add your application after this line 
     
    103103    'openPLM.cae', 
    104104    'openPLM.office', 
     105    'openPLM.bicycle', 
     106    'openPLM.document3D', 
    105107) 
    106108 
    107109AUTH_PROFILE_MODULE = 'plmapp.UserProfile' 
    108110 
    109 EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' 
     111CELERY_CREATE_MISSING_QUEUES = True 
     112CELERY_ROUTES = { 
     113    "openPLM.plmapp.tasks.update_index": {"queue": "index"}, 
     114    "openPLM.plmapp.mail.do_send_histories_mail" : {"queue" : "mails"}, 
     115    "openPLM.plmapp.mail.do_send_mail" : {"queue" : "mails"}, 
     116} 
     117 
     118EMAIL_HOST = 'localhost' 
     119EMAIL_PORT = 1025 
     120 
    110121###################### 
    111122# openPLM's settings # 
    112123###################### 
    113124 
    114 #: directory that stores documents 
    115 DOCUMENTS_DIR = "/tmp/docs/" 
    116 THUMBNAILS_DIR = os.path.join(MEDIA_ROOT, "thumbnails") 
    117 #: directory that stores thumbnails 
     125#: directory that stores documents. Make sure to use a trailing slash. 
     126DOCUMENTS_DIR = "/home/linux/openPLM/branches/3D/openPLM/docs/"    #aquica 
     127THUMBNAILS_DIR = os.path.join(MEDIA_ROOT, "thumbnails/") 
     128#: directory that stores thumbnails. Make sure to use a trailing slash. 
    118129THUMBNAILS_URL = MEDIA_URL + "thumbnails/" 
    119130 
     
    128139        "django.core.context_processors.media", 
    129140        "django.core.context_processors.request", 
    130 ) 
     141        ) 
     142 
     143 
    131144 
    132145#: expeditor's mail used when sending notification emails 
    133 EMAIL_OPENPLM = "no-reply@openplm.example.com", 
     146EMAIL_OPENPLM = "no-reply@openplm.example.com" 
    134147 
    135148#: Max file size for documents in bytes, -1 means illimited 
     
    139152HAYSTACK_SITECONF = 'openPLM.plmapp.search_sites' 
    140153HAYSTACK_SEARCH_ENGINE = 'xapian' 
    141 HAYSTACK_XAPIAN_PATH = "/tmp/xapian_index/" 
     154HAYSTACK_XAPIAN_PATH = "/home/linux/openPLM/branches/3D/openPLM/xapian_index/" 
    142155HAYSTACK_INCLUDE_SPELLING = True 
    143 EXTRACTOR = os.path.abspath("bin/extractor.sh") 
     156EXTRACTOR = os.path.abspath(os.path.join(os.path.dirname(__file__), "bin", "extractor.sh")) 
    144157 
    145158# celery stuff 
    146 BROKER_BACKEND = "memory" 
    147 CELERY_ALWAYS_EAGER = True 
    148 CELERY_EAGER_PROPAGATES_EXCEPTIONS = True 
    149  
    150159import djcelery 
    151160djcelery.setup_loader() 
    152161 
     162BROKER_BACKEND = "memory" 
     163CELERY_ALWAYS_EAGER = True 
     164 
    153165COMPANY = "company" 
    154166 
    155 TEST_RUNNER = "openPLM.plmapp.tests.runner.OpenPLMTestSuiteRunner" 
    156  
Note: See TracChangeset for help on using the changeset viewer.