Ejemplo n.º 1
0
def export_one_part(modul, variant):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage(
            "Parameters for %s doesn't exist in 'M.all_params', skipping." %
            variant)
        return
    ModelName = modul.all_params[variant].model_name
    FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)
    (pins, body) = modul.generate_part(variant)

    color_attr = body_color + (0, )
    show(body, color_attr)

    color_attr = pins_color + (0, )
    show(pins, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = GetListOfObjects(FreeCAD, doc)
    objs[0].Label = ModelName + "__body"
    objs[1].Label = ModelName + "__pins"

    restore_Main_Tools()

    out_dir = destination_dir
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name = destination_dir + os.sep + FileName + '.wrl'

    export_objects = []
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[0],
                             shape_color=body_color_key,
                             face_colors=None))
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[1],
                             shape_color=pins_color_key,
                             face_colors=None))

    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          LIST_license)

    fusion = FuseObjs_wColors(FreeCAD,
                              FreeCADGui,
                              ModelName,
                              objs[0].Name,
                              objs[1].Name,
                              keepOriginals=True)
    exportSTEP(doc, FileName, out_dir, fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    saveFCdoc(App, Gui, doc, FileName, out_dir)
def export_one_part(params):
    FreeCAD.Console.PrintMessage('\r\n' + params.model_name)
    ModelName = params.model_name
    FileName = params.file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)
    (pins, body) = M.generate_part(params)

    color_attr = body_color + (0, )
    show(body, color_attr)

    color_attr = pins_color + (0, )
    show(pins, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = GetListOfObjects(FreeCAD, doc)
    objs[0].Label = ModelName + "__body"
    objs[1].Label = ModelName + "__pins"

    restore_Main_Tools()

    out_dir = destination_dir

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name = destination_dir + os.sep + FileName + '.wrl'

    export_objects = []
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[0],
                             shape_color=body_color_key,
                             face_colors=None))
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[1],
                             shape_color=pins_color_key,
                             face_colors=None))

    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          LIST_license)

    fusion = FuseObjs_wColors(FreeCAD,
                              FreeCADGui,
                              ModelName,
                              objs[0].Name,
                              objs[1].Name,
                              keepOriginals=True)
    exportSTEP(doc, FileName, out_dir, fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    FreeCAD.activeDocument().recompute()
    #FreeCADGui.activateWorkbench("PartWorkbench")
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewAxometric()

    saveFCdoc(App, Gui, doc, FileName, out_dir)
def export_one_part(modul, variant):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage("Parameters for %s doesn't exist in 'M.all_params', skipping." % variant)
        return
    ModelName = modul.all_params[variant].model_name
    FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)
    (pins, body) = modul.generate_part(variant)

    color_attr = body_color + (0,)
    show(body, color_attr)

    color_attr = pins_color + (0,)
    show(pins, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label=ModelName
    objs=GetListOfObjects(FreeCAD, doc)
    objs[0].Label = ModelName + "__body"
    objs[1].Label = ModelName + "__pins"

    restore_Main_Tools()

    out_dir=destination_dir
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name=destination_dir+os.sep+FileName+'.wrl'

    export_objects = []
    export_objects.append(expVRML.exportObject(freecad_object = objs[0],
            shape_color=body_color_key,
            face_colors=None))
    export_objects.append(expVRML.exportObject(freecad_object = objs[1],
            shape_color=pins_color_key,
            face_colors=None))

    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = FuseObjs_wColors(FreeCAD, FreeCADGui,
                    ModelName, objs[0].Name, objs[1].Name, keepOriginals=True)
    exportSTEP(doc,FileName,out_dir,fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    saveFCdoc(App, Gui, doc, FileName,out_dir)
Ejemplo n.º 4
0
 def make_part(obj,isCut):
     names = [x for x in obj.Label.split('#')]
     newObj = newDoc.addObject("Part::Feature", names[0])
     if isCut:
         newObj.Shape = part.Shape.cut(obj.Shape).removeSplitter()
     else:
         newObj.Shape = part.Shape.common(obj.Shape).removeSplitter()
     color = names[1]
     if not color in shaderColors.named_colors:
         FreeCAD.Console.PrintWarning('unknown color : ' + color + '\n')
         color = None
     else:
         newObj.ViewObject.ShapeColor = shaderColors.named_colors[color].getDiffuseFloat()
         if not color in colors:
             colors.append(color)
     newObj.Placement = placement
     shapes.append(newObj)
     objs.append(expVRML.exportObject(freecad_object = newObj, shape_color=color, face_colors=None))
Ejemplo n.º 5
0
    def export_one_part(params, mpn, log):
        print('\n##########################################################')

        if LICENCE_Info.LIST_license[0] == "":
            LIST_license = L.LIST_int_license
            # LIST_license.append("")
        else:
            LIST_license = LICENCE_Info.LIST_license

        LIST_license[0] = "Copyright (C) " + datetime.now().strftime(
            "%Y") + ", " + LICENCE_Info.STR_licAuthor

        fp_params = params['footprint']
        mech_params = params['mechanical']
        part_params = params['parts'][mpn]

        if 'id' in mech_params:
            size = str(mech_params['id'])
        elif 'ext_thread' in mech_params:
            size = str(mech_params['ext_thread']['od'])

        if 'M' not in size:
            size = "{}mm".format(size)

        td = ""
        size_prefix = ""
        if 'thread_depth' in part_params:
            td = "_ThreadDepth{}mm".format(part_params['thread_depth'])
        elif 'ext_thread' in mech_params:
            size_prefix = 'External'

        h = part_params['h'] if 'h' in part_params else part_params['h1']

        suffix = ''
        if 'suffix' in params:
            suffix = '_{}'.format(params['suffix'])

        FileName = "Mounting_Wuerth_{series}-{size_prefix}{size}_H{h}mm{td}{suffix}_{mpn}".format(
            size=size,
            h=h,
            mpn=mpn,
            td=td,
            size_prefix=size_prefix,
            series=params['series_prefix'],
            suffix=suffix)

        lib_name = "Mounting_Wuerth"

        ModelName = FileName.replace('.', '').replace('-', '_').replace(
            '(', '').replace(')', '')

        FreeCAD.Console.PrintMessage('\r\n' + FileName + '\r\n')
        #FileName = modul.all_params[variant].file_name
        Newdoc = FreeCAD.newDocument(ModelName)
        print(Newdoc.Label)
        App.setActiveDocument(ModelName)
        App.ActiveDocument = App.getDocument(ModelName)
        Gui.ActiveDocument = Gui.getDocument(ModelName)

        color_keys = ["metal grey pins"]
        colors = [
            shaderColors.named_colors[key].getDiffuseInt()
            for key in color_keys
        ]

        cq_obj_data = generate(id=mech_params.get('id'),
                               od=mech_params['od'],
                               od1=mech_params.get('od1'),
                               h1=mech_params.get('h1',
                                                  part_params.get('h1', 0)),
                               h=part_params.get('h', mech_params.get('h')),
                               td=part_params.get('thread_depth'),
                               dd=part_params.get('drill_depth'),
                               id1=mech_params.get('id1'),
                               t1=mech_params.get('t1', 0),
                               ext_thread=mech_params.get('ext_thread'))

        color_i = colors[0] + (0, )
        show(cq_obj_data, color_i)

        doc = FreeCAD.ActiveDocument
        doc.Label = ModelName
        objs = GetListOfObjects(FreeCAD, doc)

        objs[0].Label = ModelName

        restore_Main_Tools()

        out_dir = '{:s}{:s}.3dshapes'.format(global_3dpath, lib_name)
        if not os.path.exists(out_dir):
            os.makedirs(out_dir)

        used_color_keys = color_keys
        export_file_name = out_dir + os.sep + FileName + '.wrl'

        export_objects = []
        print('objs')
        print(objs)
        for i in range(len(objs)):
            export_objects.append(
                expVRML.exportObject(freecad_object=objs[i],
                                     shape_color=color_keys[i],
                                     face_colors=None))

        scale = 1 / 2.54
        colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
        expVRML.writeVRMLFile(colored_meshes, export_file_name,
                              used_color_keys, LIST_license)

        exportSTEP(doc, FileName, out_dir, objs[0])

        step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

        L.addLicenseToStep(out_dir, '{:s}.step'.\
            format(FileName), LIST_license,
                LICENCE_Info.STR_licAuthor,
                LICENCE_Info.STR_licEmail,
                LICENCE_Info.STR_licOrgSys,
                LICENCE_Info.STR_licPreProc)

        FreeCAD.activeDocument().recompute()

        saveFCdoc(App, Gui, doc, FileName, out_dir)

        #FreeCADGui.activateWorkbench("PartWorkbench")
        if save_memory == False and check_Model == False:
            FreeCADGui.SendMsgToActiveView("ViewFit")
            FreeCADGui.activeDocument().activeView().viewAxometric()

        if save_memory == True or check_Model == True:
            doc = FreeCAD.ActiveDocument
            FreeCAD.closeDocument(doc.Name)

        if check_Model == True:
            runGeometryCheck(App,
                             Gui,
                             step_path,
                             log,
                             ModelName,
                             save_memory=save_memory)
Ejemplo n.º 6
0
def export_one_part(modul, variant, configuration, log, with_plug=False):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage(
            "Parameters for %s doesn't exist in 'M.all_params', skipping." %
            variant)
        return
    LIST_license[0] = "Copyright (C) " + datetime.now().strftime(
        "%Y") + ", " + STR_licAuthor

    params = modul.all_params[variant]
    series_params = modul.seriesParams
    series = series_params.series_name

    subseries, connector_style = params.series_name.split('-')
    pitch_mpn = '-{:g}'.format(params.pin_pitch)
    if series[0] == 'MSTB':
        pitch_mpn = ''
        if params.pin_pitch == 5.08:
            pitch_mpn = '-5,08'
        elif params.pin_pitch == 7.62:
            pitch_mpn = '-7,62'
    lib_name = configuration['lib_name_format_str'].format(
        series=series[0], style=series[1], pitch=params.pin_pitch)
    mpn = configuration['mpn_format_string'].format(subseries=subseries,
                                                    style=connector_style,
                                                    rating=series[1],
                                                    num_pins=params.num_pins,
                                                    pitch=pitch_mpn)
    FileName = configuration['fp_name_format_string'].format(
        man=configuration['manufacturer'],
        series=series[0],
        mpn=mpn,
        num_rows=1,
        num_pins=params.num_pins,
        pitch=params.pin_pitch,
        orientation=configuration['orientation_str'][1]
        if params.angled else configuration['orientation_str'][0],
        flanged=configuration['flanged_str'][1]
        if params.flanged else configuration['flanged_str'][0],
        mount_hole=configuration['mount_hole_str'][1]
        if params.mount_hole else configuration['mount_hole_str'][0])

    destination_dir = global_3dpath + lib_name
    if with_plug:
        destination_dir += "__with_plug"
    destination_dir += ".3dshapes"

    ModelName = variant
    ModelName = ModelName.replace(".", "_")
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    App.ActiveDocument = App.getDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)
    #App.setActiveDocument(ModelName)
    #Gui.ActiveDocument=Gui.getDocument(ModelName)
    (pins, body, insert, mount_screw, plug,
     plug_screws) = modul.generate_part(variant, with_plug)

    color_attr = body_color + (0, )
    show(body, color_attr)

    color_attr = pins_color + (0, )
    show(pins, color_attr)

    if insert is not None:
        color_attr = insert_color + (0, )
        show(insert, color_attr)
    if mount_screw is not None:
        color_attr = screw_color + (0, )
        show(mount_screw, color_attr)
    if plug is not None:
        color_attr = body_color + (0, )
        show(plug, color_attr)

        color_attr = screw_color + (0, )
        show(plug_screws, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = FreeCAD.ActiveDocument.Objects
    FreeCAD.Console.PrintMessage(objs)

    i = 0
    objs[i].Label = ModelName + "__body"
    i += 1
    objs[i].Label = ModelName + "__pins"
    i += 1
    if insert is not None:
        objs[i].Label = ModelName + "__thread_insert"
        i += 1
    if mount_screw is not None:
        objs[i].Label = ModelName + "__mount_screw"
        i += 1
    if plug is not None:
        objs[i].Label = ModelName + "__plug"
        i += 1
        objs[i].Label = ModelName + "__plug_screws"
    restore_Main_Tools()

    out_dir = destination_dir
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name = destination_dir + os.sep + FileName + '.wrl'

    export_objects = []
    i = 0
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[i],
                             shape_color=body_color_key,
                             face_colors=None))
    i += 1
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[i],
                             shape_color=pins_color_key,
                             face_colors=None))
    i += 1
    if insert is not None:
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=insert_color_key,
                                 face_colors=None))
        used_color_keys.append(insert_color_key)
        i += 1
    if mount_screw is not None:
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=screw_color_key,
                                 face_colors=None))
        used_color_keys.append(screw_color_key)
        i += 1
    if plug is not None:
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=body_color_key,
                                 face_colors=None))
        i += 1
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=screw_color_key,
                                 face_colors=None))
    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD,
                                   FreeCADGui,
                                   ModelName,
                                   objs,
                                   keepOriginals=True)

    exportSTEP(doc, FileName, out_dir, fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.format(FileName), LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    FreeCAD.activeDocument().recompute()
    # FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model == False:
        Gui.SendMsgToActiveView("ViewFit")
        Gui.activeDocument().activeView().viewAxometric()

    # Save the doc in Native FC format
    saveFCdoc(App, Gui, doc, FileName, out_dir)
    if save_memory == True or check_Model == True:
        closeCurrentDoc(ModelName)

    if check_Model == True:
        runGeometryCheck(App,
                         Gui,
                         step_path,
                         log,
                         ModelName,
                         save_memory=save_memory)
def export_one_part(module, pincount, configuration, log):
    series_definition = module.series_params

    if module.LICENCE_Info.LIST_license[0]=="":
        LIST_license=L.LIST_int_license
        LIST_license.append("")
    else:
        LIST_license=module.LICENCE_Info.LIST_license

    LIST_license[0] = "Copyright (C) "+datetime.now().strftime("%Y")+", " + module.LICENCE_Info.STR_licAuthor
    pins_per_row = pincount/series_definition.number_of_rows
    mpn = series_definition.mpn_format_string.format(pincount=pincount, pins_per_row=pins_per_row)


    orientation = configuration['orientation_options'][series_definition.orientation]
    format_string = getattr(series_definition, 'fp_name_format_string',
        configuration[getattr(series_definition, 'fp_name_format', 'fp_name_format_string')])
    FileName = format_string.format(man=series_definition.manufacturer,
            series=series_definition.series,
            mpn=mpn, num_rows=series_definition.number_of_rows, pins_per_row=pins_per_row,
            pins=pincount, pitch=series_definition.pitch, orientation=orientation,
            mount_pin=series_definition.mount_pin)
    FileName = FileName.replace('__', '_')

    lib_name = configuration['lib_name_format_string'].format(man=series_definition.manufacturer)
    fc_mpn = mpn.replace('.', '').replace('-', '_').replace('(', '').replace(')', '')

    ModelName = '{:s}_{:s}'.format(series_definition.manufacturer, fc_mpn) # For some reason the Model name can not start with a number.

    FreeCAD.Console.PrintMessage('\r\n'+FileName+'\r\n')
    #FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    print(Newdoc.Label)
    App.setActiveDocument(ModelName)
    App.ActiveDocument=App.getDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)

    color_keys = series_definition.color_keys
    obj_suffixes = series_definition.obj_suffixes
    colors = [shaderColors.named_colors[key].getDiffuseInt() for key in color_keys]

    cq_obj_data = module.generate_part(pincount)


    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0,)
        show(cq_obj_data[i], color_i)


    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs=GetListOfObjects(FreeCAD, doc)


    for i in range(len(objs)):
        objs[i].Label = ModelName + obj_suffixes[i]


    restore_Main_Tools()

    out_dir='{:s}{:s}.3dshapes'.format(global_3dpath, lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = color_keys
    export_file_name=out_dir+os.sep+FileName+'.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=color_keys[i],
                face_colors=None))

    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     ModelName, objs, keepOriginals=True)
    exportSTEP(doc,FileName,out_dir,fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.\
        format(FileName), LIST_license,
            module.LICENCE_Info.STR_licAuthor,
            module.LICENCE_Info.STR_licEmail,
            module.LICENCE_Info.STR_licOrgSys,
            module.LICENCE_Info.STR_licPreProc)

    FreeCAD.activeDocument().recompute()

    saveFCdoc(App, Gui, doc, FileName, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model==False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model==True:
        doc=FreeCAD.ActiveDocument
        FreeCAD.closeDocument(doc.Name)

    if check_Model==True:
        runGeometryCheck(App, Gui, step_path,
            log, ModelName, save_memory=save_memory)
def export_one_part(module, params, configuration, log):
    series_definition = module.series_params

    if module.LICENCE_Info.LIST_license[0] == "":
        LIST_license = L.LIST_int_license
        LIST_license.append("")
    else:
        LIST_license = module.LICENCE_Info.LIST_license

    LIST_license[0] = "Copyright (C) " + datetime.now().strftime(
        "%Y") + ", " + module.LICENCE_Info.STR_licAuthor

    lib_name = configuration['lib_name_format_string'].format(
        suffix=lib_suffix)

    FileName = module.getName(params, configuration)
    ModelName = FileName.replace('.',
                                 '').replace('-',
                                             '_').replace('(',
                                                          '').replace(')', '')

    FreeCAD.Console.PrintMessage('\r\n' + FileName + '\r\n')
    #FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    print(Newdoc.Label)
    App.setActiveDocument(ModelName)
    App.ActiveDocument = App.getDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)

    if hasattr(params, 'color_keys'):
        color_keys = params.color_keys
    else:
        color_keys = series_definition.color_keys
    obj_suffixes = series_definition.obj_suffixes
    colors = [
        shaderColors.named_colors[key].getDiffuseInt() for key in color_keys
    ]

    cq_obj_data = module.generate_part(params)

    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0, )
        show(cq_obj_data[i], color_i)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = GetListOfObjects(FreeCAD, doc)

    for i in range(len(objs)):
        objs[i].Label = ModelName + obj_suffixes[i]

    restore_Main_Tools()

    if stop_after_coloring:
        return

    out_dir = '{:s}{:s}.3dshapes'.format(global_3dpath, lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = color_keys
    export_file_name = out_dir + os.sep + FileName + '.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=color_keys[i],
                                 face_colors=None))

    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale,
                                            mesh_deviation)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD,
                                   FreeCADGui,
                                   ModelName,
                                   objs,
                                   keepOriginals=True)
    exportSTEP(doc, FileName, out_dir, fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.\
        format(FileName), LIST_license,
            module.LICENCE_Info.STR_licAuthor,
            module.LICENCE_Info.STR_licEmail,
            module.LICENCE_Info.STR_licOrgSys,
            module.LICENCE_Info.STR_licPreProc)

    FreeCAD.activeDocument().recompute()

    saveFCdoc(App, Gui, doc, FileName, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model == False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model == True:
        docu = FreeCAD.ActiveDocument
        FreeCAD.Console.PrintMessage('close document {}\r\n'.format(docu.Name))
        FreeCAD.closeDocument(docu.Name)

    if check_Model == True:
        runGeometryCheck(App,
                         Gui,
                         step_path,
                         log,
                         ModelName,
                         save_memory=save_memory)
def export_one_part(modul, variant):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage("Parameters for %s not found - skipping." % variant)
        return
    ModelName = variant
    ModelName = ModelName.replace(".","_")
    FileName = modul.all_params[variant].file_name

    FreeCAD.Console.PrintMessage(FileName)

    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    App.ActiveDocument=App.getDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)

    # Model details
    #################################################################################################

    (pins, body, contacts) = modul.generate_part(variant)

    color_attr = body_color + (0,)
    show(body, color_attr)

    color_attr = pins_color + (0,)
    show(pins, color_attr)

    color_attr = contacts_color + (0,)
    show(contacts, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label=ModelName
    objs=FreeCAD.ActiveDocument.Objects
    FreeCAD.Console.PrintMessage(objs)

    i=0
    objs[i].Label = ModelName + "__body"
    i+=1
    objs[i].Label = ModelName + "__pins"
    i+=1
    objs[i].Label = ModelName + "__contacts"
    i+=1

    restore_Main_Tools()

    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key, contacts_color_key]
    export_file_name=out_dir+os.sep+FileName+'.wrl'

    export_objects = []
    i=0
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=body_color_key,
            face_colors=None))
    i+=1
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=pins_color_key,
            face_colors=None))
    i+=1
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=contacts_color_key,
            face_colors=None))
    i+=1

    #################################################################################################


    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)

    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, L.LIST_int_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     ModelName, objs, keepOriginals=True)

    exportSTEP(doc,FileName,out_dir,fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", L.LIST_int_license,\
        L.STR_int_licAuthor, L.STR_int_licEmail, L.STR_int_licOrgSys, L.STR_int_licPreProc)

    saveFCdoc(App, Gui, doc, FileName,out_dir)

    FreeCAD.activeDocument().recompute()
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewAxometric()
def export_one_part(modul, variant, with_plug=False):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage(
            "Parameters for %s not found - skipping." % variant)
        return
    ModelName = variant
    ModelName = ModelName.replace(".", "_")
    FileName = modul.all_params[variant].file_name

    FreeCAD.Console.PrintMessage("Model name: %s\r\n" % ModelName)
    FreeCAD.Console.PrintMessage("File name: %s\r\n" % FileName)

    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    App.ActiveDocument = App.getDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)
    (pins, body) = modul.generate_part(variant, with_plug)

    color_attr = body_color + (0, )
    show(body, color_attr)

    color_attr = pins_color + (0, )
    show(pins, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = FreeCAD.ActiveDocument.Objects
    FreeCAD.Console.PrintMessage(objs)

    i = 0
    objs[i].Label = ModelName + "__body"
    i += 1
    objs[i].Label = ModelName + "__pins"
    i += 1

    restore_Main_Tools()

    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name = out_dir + os.sep + FileName + '.wrl'

    export_objects = []
    i = 0
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[i],
                             shape_color=body_color_key,
                             face_colors=None))
    i += 1
    export_objects.append(
        expVRML.exportObject(freecad_object=objs[i],
                             shape_color=pins_color_key,
                             face_colors=None))
    i += 1

    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)

    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          L.LIST_int_license)

    fusion = multiFuseObjs_wColors(FreeCAD,
                                   FreeCADGui,
                                   ModelName,
                                   objs,
                                   keepOriginals=True)

    exportSTEP(doc, FileName, out_dir, fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", L.LIST_int_license,\
        L.STR_int_licAuthor, L.STR_int_licEmail, L.STR_int_licOrgSys, L.STR_int_licPreProc)

    saveFCdoc(App, Gui, doc, FileName, out_dir)

    FreeCAD.activeDocument().recompute()
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewAxometric()
        objs=GetListOfObjects(FreeCAD, doc)
        objs[0].Label = ModelName + "__body"
        objs[1].Label = ModelName + "__pins"

        restore_Main_Tools()

        out_dir=destination_dir
        if not os.path.exists(out_dir):
            os.makedirs(out_dir)

        used_color_keys = [body_color_key, pins_color_key]
        export_file_name=destination_dir+os.sep+FileName+'.wrl'

        export_objects = []
        export_objects.append(expVRML.exportObject(freecad_object = objs[0],
                shape_color=body_color_key,
                face_colors=None))
        export_objects.append(expVRML.exportObject(freecad_object = objs[1],
                shape_color=pins_color_key,
                face_colors=None))

        scale=1/2.54
        colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
        expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

        fusion = FuseObjs_wColors(FreeCAD, FreeCADGui,
                        ModelName, objs[0].Name, objs[1].Name, keepOriginals=True)
        exportSTEP(doc,FileName,out_dir,fusion)
        L.addLicenseToStep(out_dir+'/', FileName+".step", LIST_license,\
            STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)
Ejemplo n.º 12
0
def export_one_part(modul, variant, with_plug=False):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage("Parameters for %s doesn't exist in 'M.all_params', skipping." % variant)
        return

    destination_dir="Connectors_Phoenix.3dshapes"
    if with_plug:
        destination_dir="Connectors_Phoenix__with_plug.3dshapes"
    ModelName = variant
    ModelName = ModelName.replace(".","_")
    FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    App.ActiveDocument=App.getDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)
    #App.setActiveDocument(ModelName)
    #Gui.ActiveDocument=Gui.getDocument(ModelName)
    (pins, body, insert, mount_screw, plug, plug_screws) = modul.generate_part(variant, with_plug)

    color_attr = body_color + (0,)
    show(body, color_attr)

    color_attr = pins_color + (0,)
    show(pins, color_attr)

    if insert is not None:
        color_attr = insert_color + (0,)
        show(insert, color_attr)
    if mount_screw is not None:
        color_attr = screw_color + (0,)
        show(mount_screw, color_attr)
    if plug is not None:
        color_attr = body_color + (0,)
        show(plug, color_attr)

        color_attr = screw_color + (0,)
        show(plug_screws, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label=ModelName
    objs=FreeCAD.ActiveDocument.Objects
    FreeCAD.Console.PrintMessage(objs)

    i=0
    objs[i].Label = ModelName + "__body"
    i+=1
    objs[i].Label = ModelName + "__pins"
    i+=1
    if insert is not None:
        objs[i].Label = ModelName + "__thread_insert"
        i+=1
    if mount_screw is not None:
        objs[i].Label = ModelName + "__mount_screw"
        i+=1
    if plug is not None:
        objs[i].Label = ModelName + "__plug"
        i+=1
        objs[i].Label = ModelName + "__plug_screws"
    restore_Main_Tools()

    out_dir=destination_dir
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name=destination_dir+os.sep+FileName+'.wrl'

    export_objects = []
    i=0
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=body_color_key,
            face_colors=None))
    i+=1
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=pins_color_key,
            face_colors=None))
    i+=1
    if insert is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=insert_color_key,
                face_colors=None))
        used_color_keys.append(insert_color_key)
        i+=1
    if mount_screw is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=screw_color_key,
                face_colors=None))
        used_color_keys.append(screw_color_key)
        i+=1
    if plug is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=body_color_key,
                face_colors=None))
        i+=1
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=screw_color_key,
                face_colors=None))
    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     ModelName, objs, keepOriginals=True)

    exportSTEP(doc,FileName,out_dir,fusion)
    L.addLicenseToStep(out_dir+'/', FileName+".step", LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    saveFCdoc(App, Gui, doc, FileName,out_dir)

    FreeCAD.activeDocument().recompute()
    # FreeCADGui.activateWorkbench("PartWorkbench")
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewAxometric()
        objs[0].Label = ModelName + "__body"
        objs[1].Label = ModelName + "__pins"

        restore_Main_Tools()

        out_dir = destination_dir
        if not os.path.exists(out_dir):
            os.makedirs(out_dir)

        used_color_keys = [body_color_key, pins_color_key]
        export_file_name = destination_dir + os.sep + FileName + '.wrl'

        export_objects = []
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[0],
                                 shape_color=body_color_key,
                                 face_colors=None))
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[1],
                                 shape_color=pins_color_key,
                                 face_colors=None))

        scale = 1 / 2.54
        colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
        expVRML.writeVRMLFile(colored_meshes, export_file_name,
                              used_color_keys, LIST_license)

        fusion = FuseObjs_wColors(FreeCAD,
                                  FreeCADGui,
                                  ModelName,
                                  objs[0].Name,
def export_model(model):
    file_name = model['metadata']['name']
    parts = model['parts']
    parts_list = parts.keys()

    # create document
    safe_name = file_name.replace('-', '_')
    FreeCAD.Console.PrintMessage('Model: {:s}\r\n'.format(file_name))
    FreeCAD.newDocument(safe_name)
    App.setActiveDocument(safe_name)
    App.ActiveDocument = App.getDocument(safe_name)
    Gui.ActiveDocument = Gui.getDocument(safe_name)

    # colour model
    used_colour_keys = []
    for part in parts_list:
        colour_key = parts[part]['colour']
        used_colour_keys.append(colour_key)
        colour = shaderColors.named_colors[colour_key].getDiffuseInt()
        colour_attr = colour + (0, )
        show(parts[part]['name'], colour_attr)

    # label model and parts
    doc = FreeCAD.ActiveDocument
    doc.Label = safe_name
    objects = doc.Objects
    i = 0
    for part in parts_list:
        objects[i].Label = '{n:s}__{p:s}'.format(n=safe_name, p=part)
        i += 1
    restore_Main_Tools()
    doc.recompute()
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewTop()

    # create output folder
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    # export VRML
    export_file_name = '{d:s}{s:s}{n:s}.wrl'.format(d=out_dir,
                                                    s=os.sep,
                                                    n=file_name)
    export_objects = []
    i = 0
    for part in parts_list:
        export_objects.append(
            expVRML.exportObject(freecad_object=objects[i],
                                 shape_color=parts[part]['colour'],
                                 face_colors=None))
        i += 1
    scale = 1 / 2.54
    coloured_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)

    L.LIST_int_license[0] = "Copyright (C) " + datetime.now().strftime(
        "%Y") + ", " + L.STR_int_licAuthor
    expVRML.writeVRMLFile(coloured_meshes, export_file_name, used_colour_keys,
                          L.LIST_int_license)

    # export STEP
    fusion = multiFuseObjs_wColors(FreeCAD,
                                   FreeCADGui,
                                   safe_name,
                                   objects,
                                   keepOriginals=True)
    exportSTEP(doc, file_name, out_dir, fusion)
    L.addLicenseToStep('{d:s}/'.format(d=out_dir),
                       '{n:s}.step'.format(n=file_name), L.LIST_int_license,
                       L.STR_int_licAuthor, L.STR_int_licEmail,
                       L.STR_int_licOrgSys, L.STR_int_licPreProc)

    # save FreeCAD models
    saveFCdoc(App, Gui, doc, file_name, out_dir)
    return
def export_one_part(module, params, configuration, log):
    series_definition = module.series_params

    if module.LICENCE_Info.LIST_license[0]=="":
        LIST_license=L.LIST_int_license
        LIST_license.append("")
    else:
        LIST_license=module.LICENCE_Info.LIST_license

    LIST_license[0] = "Copyright (C) "+datetime.now().strftime("%Y")+", " + module.LICENCE_Info.STR_licAuthor

    lib_name = configuration['lib_name_format_string'].format(suffix=lib_suffix)


    FileName = module.getName(params, configuration)
    ModelName = FileName.replace('.', '').replace('-', '_').replace('(', '').replace(')', '')

    FreeCAD.Console.PrintMessage('\r\n'+FileName+'\r\n')
    #FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    print(Newdoc.Label)
    App.setActiveDocument(ModelName)
    App.ActiveDocument=App.getDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)

    if hasattr(params, 'color_keys'):
        color_keys = params.color_keys
    else:
        color_keys = series_definition.color_keys
    obj_suffixes = series_definition.obj_suffixes
    colors = [shaderColors.named_colors[key].getDiffuseInt() for key in color_keys]

    cq_obj_data = module.generate_part(params)


    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0,)
        show(cq_obj_data[i], color_i)


    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs=GetListOfObjects(FreeCAD, doc)


    for i in range(len(objs)):
        objs[i].Label = ModelName + obj_suffixes[i]


    restore_Main_Tools()

    if stop_after_coloring:
        return

    out_dir='{:s}{:s}.3dshapes'.format(global_3dpath, lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = color_keys
    export_file_name=out_dir+os.sep+FileName+'.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=color_keys[i],
                face_colors=None))

    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale, mesh_deviation)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     ModelName, objs, keepOriginals=True)
    exportSTEP(doc,FileName,out_dir,fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.\
        format(FileName), LIST_license,
            module.LICENCE_Info.STR_licAuthor,
            module.LICENCE_Info.STR_licEmail,
            module.LICENCE_Info.STR_licOrgSys,
            module.LICENCE_Info.STR_licPreProc)

    FreeCAD.activeDocument().recompute()

    saveFCdoc(App, Gui, doc, FileName, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model==False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model==True:
        docu = FreeCAD.ActiveDocument
        FreeCAD.Console.PrintMessage('close document {}\r\n'.format(docu.Name))
        FreeCAD.closeDocument(docu.Name)

    if check_Model==True:
        runGeometryCheck(App, Gui, step_path,
            log, ModelName, save_memory=save_memory)
def export_model(model):
    file_name = model['metadata']['name']
    parts = model['parts']
    parts_list = parts.keys()

    # create document
    safe_name = file_name.replace('-', '_')
    FreeCAD.Console.PrintMessage('Model: {:s}\r\n'.format(file_name))
    FreeCAD.newDocument(safe_name)
    App.setActiveDocument(safe_name)
    App.ActiveDocument = App.getDocument(safe_name)
    Gui.ActiveDocument = Gui.getDocument(safe_name)

    # colour model
    used_colour_keys = []
    for part in parts_list:
        colour_key = parts[part]['colour']
        used_colour_keys.append(colour_key)
        colour = shaderColors.named_colors[colour_key].getDiffuseInt()
        colour_attr = colour + (0,)
        show(parts[part]['name'], colour_attr)

    # label model and parts
    doc = FreeCAD.ActiveDocument
    doc.Label=safe_name
    objects=doc.Objects
    i = 0
    for part in parts_list:
        objects[i].Label = '{n:s}__{p:s}'.format(n=safe_name, p=part)
        i += 1
    restore_Main_Tools()
    doc.recompute()
    FreeCADGui.SendMsgToActiveView("ViewFit")
    FreeCADGui.activeDocument().activeView().viewTop()

    # create output folder
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    # export VRML
    export_file_name = '{d:s}{s:s}{n:s}.wrl'.format(d=out_dir, s=os.sep, n=file_name)
    export_objects = []
    i = 0
    for part in parts_list:
        export_objects.append(expVRML.exportObject(freecad_object=objects[i],
                              shape_color=parts[part]['colour'],
                              face_colors=None))
        i += 1
    scale = 1 / 2.54
    coloured_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)

    L.LIST_int_license[0] = "Copyright (C) " + datetime.now().strftime("%Y") + ", " + L.STR_int_licAuthor
    expVRML.writeVRMLFile(coloured_meshes, export_file_name, used_colour_keys, L.LIST_int_license)

    # export STEP
    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui, safe_name, objects, keepOriginals=True)
    exportSTEP(doc, file_name, out_dir, fusion)
    L.addLicenseToStep('{d:s}/'.format(d=out_dir), '{n:s}.step'.format(n=file_name), L.LIST_int_license,
                       L.STR_int_licAuthor, L.STR_int_licEmail, L.STR_int_licOrgSys, L.STR_int_licPreProc)

    # save FreeCAD models
    saveFCdoc(App, Gui, doc, file_name, out_dir)
    return
Ejemplo n.º 17
0
def export_one_part(module, pincount, configuration, log):
    series_definition = module.series_params

    if module.LICENCE_Info.LIST_license[0] == "":
        LIST_license = L.LIST_int_license
        LIST_license.append("")
    else:
        LIST_license = module.LICENCE_Info.LIST_license

    LIST_license[0] = "Copyright (C) " + datetime.now().strftime(
        "%Y") + ", " + module.LICENCE_Info.STR_licAuthor
    pins_per_row = pincount / series_definition.number_of_rows
    mpn = series_definition.mpn_format_string.format(pincount=pincount,
                                                     pins_per_row=pins_per_row)

    orientation = configuration['orientation_options'][
        series_definition.orientation]
    format_string = getattr(
        series_definition, 'fp_name_format_string',
        configuration[getattr(series_definition, 'fp_name_format',
                              'fp_name_format_string')])
    FileName = format_string.format(man=series_definition.manufacturer,
                                    series=series_definition.series,
                                    mpn=mpn,
                                    num_rows=series_definition.number_of_rows,
                                    pins_per_row=pins_per_row,
                                    pins=pincount,
                                    pitch=series_definition.pitch,
                                    orientation=orientation,
                                    mount_pin=series_definition.mount_pin)
    FileName = FileName.replace('__', '_')

    lib_name = configuration['lib_name_format_string'].format(
        man=series_definition.manufacturer)
    fc_mpn = mpn.replace('.', '').replace('-',
                                          '_').replace('(',
                                                       '').replace(')', '')

    ModelName = '{:s}_{:s}'.format(
        series_definition.manufacturer,
        fc_mpn)  # For some reason the Model name can not start with a number.

    FreeCAD.Console.PrintMessage('\r\n' + FileName + '\r\n')
    #FileName = modul.all_params[variant].file_name
    Newdoc = FreeCAD.newDocument(ModelName)
    print(Newdoc.Label)
    App.setActiveDocument(ModelName)
    App.ActiveDocument = App.getDocument(ModelName)
    Gui.ActiveDocument = Gui.getDocument(ModelName)

    color_keys = series_definition.color_keys
    obj_suffixes = series_definition.obj_suffixes
    colors = [
        shaderColors.named_colors[key].getDiffuseInt() for key in color_keys
    ]

    cq_obj_data = module.generate_part(pincount)

    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0, )
        show(cq_obj_data[i], color_i)

    doc = FreeCAD.ActiveDocument
    doc.Label = ModelName
    objs = GetListOfObjects(FreeCAD, doc)

    for i in range(len(objs)):
        objs[i].Label = ModelName + obj_suffixes[i]

    restore_Main_Tools()

    out_dir = '{:s}{:s}.3dshapes'.format(global_3dpath, lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = color_keys
    export_file_name = out_dir + os.sep + FileName + '.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(
            expVRML.exportObject(freecad_object=objs[i],
                                 shape_color=color_keys[i],
                                 face_colors=None))

    scale = 1 / 2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects, scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys,
                          LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD,
                                   FreeCADGui,
                                   ModelName,
                                   objs,
                                   keepOriginals=True)
    exportSTEP(doc, FileName, out_dir, fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.\
        format(FileName), LIST_license,
            module.LICENCE_Info.STR_licAuthor,
            module.LICENCE_Info.STR_licEmail,
            module.LICENCE_Info.STR_licOrgSys,
            module.LICENCE_Info.STR_licPreProc)

    FreeCAD.activeDocument().recompute()

    saveFCdoc(App, Gui, doc, FileName, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model == False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model == True:
        doc = FreeCAD.ActiveDocument
        FreeCAD.closeDocument(doc.Name)

    if check_Model == True:
        runGeometryCheck(App,
                         Gui,
                         step_path,
                         log,
                         ModelName,
                         save_memory=save_memory)
Ejemplo n.º 18
0
def MakeHeader(n, isAngled, log, highDetail=False):
    global LIST_license
    if LIST_license[0]=="":
        LIST_license=Lic.LIST_int_license
        LIST_license.append("")

    LIST_license[0] = "Copyright (C) "+datetime.now().strftime("%Y")+", " + STR_licAuthor

    name = HeaderName(n, isAngled)
    print('\n############ ' + name + ' #############\n')

    lib_name='Connector_IDC'


    full_path=os.path.realpath(__file__)
    sub_dir_name =full_path.split(os.sep)[-2]
    sub_path = full_path.split(sub_dir_name)[0]
    models_dir=sub_path+"_3Dmodels"+os.sep
    #models_dir=script_dir+"/../_3Dmodels"

    out_dir=models_dir+'{:s}.3dshapes'.format(lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    #having a period '.' or '-' character in the model name REALLY messes with things.
    docname = name.replace(".","").replace("-","_").replace('(', '').replace(')', '')

    Newdoc = FreeCAD.newDocument(docname)
    App.setActiveDocument(docname)
    App.ActiveDocument=App.getDocument(docname)
    Gui.ActiveDocument=Gui.getDocument(docname)

    base = MakeBase(n, highDetail)

    if (isAngled):
        pins = MakeAnglePinRow(n, -3, 5.94, 12.38, highDetail)
        pins = pins.union(MakeAnglePinRow(n, -3, 3.40, 9.84, highDetail).translate((2.54,0,0)))
        # rotate the base into the angled position
        base = base.rotate((0,0,0),(0,1,0),90).translate((4.13,0,5.94))
    else:
        pins = MakePinRow(n, -3.0, 8.0)
        pins = pins.union(MakePinRow(n, -3.0, 8.0).translate((2.54,0,0)))


    colors = [shaderColors.named_colors[key].getDiffuseInt() for key in color_keys]

    cq_obj_data = [base, pins]
    obj_suffixes = ['__base', '__pins']


    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0,)
        show(cq_obj_data[i], color_i)


    doc = FreeCAD.ActiveDocument
    doc.Label = docname
    objs=GetListOfObjects(FreeCAD, doc)

    for i in range(len(objs)):
        objs[i].Label = docname + obj_suffixes[i]

    restore_Main_Tools()

    used_color_keys = color_keys
    export_file_name=out_dir+os.sep+name+'.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=color_keys[i],
                face_colors=None))

    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     doc.Label, objs, keepOriginals=True)
    exportSTEP(doc,name,out_dir,fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=name)

    Lic.addLicenseToStep(out_dir, '{:s}.step'.\
        format(name), LIST_license,
            STR_licAuthor,
            STR_licEmail,
            STR_licOrgSys,
            STR_licPreProc)

    FreeCAD.activeDocument().recompute()
    print("Safe to: {}".format(out_dir))
    saveFCdoc(App, Gui, doc, name, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model==False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model==True:
        doc=FreeCAD.ActiveDocument
        print("closing: {}".format(doc.Name))
        FreeCAD.closeDocument(doc.Name)

    if check_Model==True:
        runGeometryCheck(App, Gui, step_path,
            log, name, save_memory=save_memory)
def export_one_part(modul, variant, configuration, log, with_plug=False):
    if not variant in modul.all_params:
        FreeCAD.Console.PrintMessage("Parameters for %s doesn't exist in 'M.all_params', skipping." % variant)
        return
    LIST_license[0] = "Copyright (C) "+datetime.now().strftime("%Y")+", " + STR_licAuthor

    params = modul.all_params[variant]
    series_params = modul.seriesParams
    series = series_params.series_name

    subseries, connector_style = params.series_name.split('-')
    pitch_mpn = '-{:g}'.format(params.pin_pitch)
    if series[0] == 'MSTB':
        pitch_mpn = ''
        if params.pin_pitch == 5.08:
            pitch_mpn = '-5,08'
        elif params.pin_pitch == 7.62:
            pitch_mpn = '-7,62'
    lib_name = configuration['lib_name_format_str'].format(series=series[0], style=series[1], pitch=params.pin_pitch)
    mpn = configuration['mpn_format_string'].format(subseries=subseries, style = connector_style,
        rating=series[1], num_pins=params.num_pins, pitch=pitch_mpn)
    FileName = configuration['fp_name_format_string'].format(man = configuration['manufacturer'],
        series = series[0], mpn = mpn, num_rows = 1,
        num_pins = params.num_pins, pitch = params.pin_pitch,
        orientation = configuration['orientation_str'][1] if params.angled else configuration['orientation_str'][0],
        flanged = configuration['flanged_str'][1] if params.flanged else configuration['flanged_str'][0],
        mount_hole = configuration['mount_hole_str'][1] if params.mount_hole else configuration['mount_hole_str'][0])

    destination_dir=global_3dpath+lib_name
    if with_plug:
        destination_dir += "__with_plug"
    destination_dir+=".3dshapes"

    ModelName = variant
    ModelName = ModelName.replace(".","_")
    Newdoc = FreeCAD.newDocument(ModelName)
    App.setActiveDocument(ModelName)
    App.ActiveDocument=App.getDocument(ModelName)
    Gui.ActiveDocument=Gui.getDocument(ModelName)
    #App.setActiveDocument(ModelName)
    #Gui.ActiveDocument=Gui.getDocument(ModelName)
    (pins, body, insert, mount_screw, plug, plug_screws) = modul.generate_part(variant, with_plug)

    color_attr = body_color + (0,)
    show(body, color_attr)

    color_attr = pins_color + (0,)
    show(pins, color_attr)

    if insert is not None:
        color_attr = insert_color + (0,)
        show(insert, color_attr)
    if mount_screw is not None:
        color_attr = screw_color + (0,)
        show(mount_screw, color_attr)
    if plug is not None:
        color_attr = body_color + (0,)
        show(plug, color_attr)

        color_attr = screw_color + (0,)
        show(plug_screws, color_attr)

    doc = FreeCAD.ActiveDocument
    doc.Label=ModelName
    objs=FreeCAD.ActiveDocument.Objects
    FreeCAD.Console.PrintMessage(objs)

    i=0
    objs[i].Label = ModelName + "__body"
    i+=1
    objs[i].Label = ModelName + "__pins"
    i+=1
    if insert is not None:
        objs[i].Label = ModelName + "__thread_insert"
        i+=1
    if mount_screw is not None:
        objs[i].Label = ModelName + "__mount_screw"
        i+=1
    if plug is not None:
        objs[i].Label = ModelName + "__plug"
        i+=1
        objs[i].Label = ModelName + "__plug_screws"
    restore_Main_Tools()

    out_dir=destination_dir
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    used_color_keys = [body_color_key, pins_color_key]
    export_file_name=destination_dir+os.sep+FileName+'.wrl'

    export_objects = []
    i=0
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=body_color_key,
            face_colors=None))
    i+=1
    export_objects.append(expVRML.exportObject(freecad_object = objs[i],
            shape_color=pins_color_key,
            face_colors=None))
    i+=1
    if insert is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=insert_color_key,
                face_colors=None))
        used_color_keys.append(insert_color_key)
        i+=1
    if mount_screw is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=screw_color_key,
                face_colors=None))
        used_color_keys.append(screw_color_key)
        i+=1
    if plug is not None:
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=body_color_key,
                face_colors=None))
        i+=1
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=screw_color_key,
                face_colors=None))
    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     ModelName, objs, keepOriginals=True)

    exportSTEP(doc,FileName,out_dir,fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=FileName)

    L.addLicenseToStep(out_dir, '{:s}.step'.format(FileName), LIST_license,\
        STR_licAuthor, STR_licEmail, STR_licOrgSys, STR_licPreProc)

    FreeCAD.activeDocument().recompute()
    # FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model==False:
        Gui.SendMsgToActiveView("ViewFit")
        Gui.activeDocument().activeView().viewAxometric()


    # Save the doc in Native FC format
    saveFCdoc(App, Gui, doc, FileName, out_dir)
    if save_memory == True or check_Model==True:
        doc=FreeCAD.ActiveDocument
        FreeCAD.closeDocument(doc.Name)

    if check_Model==True:
        runGeometryCheck(App, Gui, step_path,
            log, ModelName, save_memory=save_memory)
def MakeHeader(n, isAngled, log, highDetail=False):
    global LIST_license
    if LIST_license[0]=="":
        LIST_license=Lic.LIST_int_license
        LIST_license.append("")

    LIST_license[0] = "Copyright (C) "+datetime.now().strftime("%Y")+", " + STR_licAuthor

    name = HeaderName(n, isAngled)
    print('\n############ ' + name + ' #############\n')

    lib_name='Connector_IDC'


    full_path=os.path.realpath(__file__)
    sub_dir_name =full_path.split(os.sep)[-2]
    sub_path = full_path.split(sub_dir_name)[0]
    models_dir=sub_path+"_3Dmodels"+os.sep
    #models_dir=script_dir+"/../_3Dmodels"

    out_dir=models_dir+'{:s}.3dshapes'.format(lib_name)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    #having a period '.' or '-' character in the model name REALLY messes with things.
    docname = name.replace(".","").replace("-","_").replace('(', '').replace(')', '')

    Newdoc = FreeCAD.newDocument(docname)
    App.setActiveDocument(docname)
    App.ActiveDocument=App.getDocument(docname)
    Gui.ActiveDocument=Gui.getDocument(docname)

    base = MakeBase(n, highDetail)

    if (isAngled):
        pins = MakeAnglePinRow(n, -3, 5.94, 12.38, highDetail)
        pins = pins.union(MakeAnglePinRow(n, -3, 3.40, 9.84, highDetail).translate((2.54,0,0)))
        # rotate the base into the angled position
        base = base.rotate((0,0,0),(0,1,0),90).translate((4.13,0,5.94))
    else:
        pins = MakePinRow(n, -3.0, 8.0)
        pins = pins.union(MakePinRow(n, -3.0, 8.0).translate((2.54,0,0)))


    colors = [shaderColors.named_colors[key].getDiffuseInt() for key in color_keys]

    cq_obj_data = [base, pins]
    obj_suffixes = ['__base', '__pins']


    for i in range(len(cq_obj_data)):
        color_i = colors[i] + (0,)
        show(cq_obj_data[i], color_i)


    doc = FreeCAD.ActiveDocument
    doc.Label = docname
    objs=GetListOfObjects(FreeCAD, doc)

    for i in range(len(objs)):
        objs[i].Label = docname + obj_suffixes[i]

    restore_Main_Tools()

    used_color_keys = color_keys
    export_file_name=out_dir+os.sep+name+'.wrl'

    export_objects = []
    for i in range(len(objs)):
        export_objects.append(expVRML.exportObject(freecad_object = objs[i],
                shape_color=color_keys[i],
                face_colors=None))

    scale=1/2.54
    colored_meshes = expVRML.getColoredMesh(Gui, export_objects , scale)
    expVRML.writeVRMLFile(colored_meshes, export_file_name, used_color_keys, LIST_license)

    fusion = multiFuseObjs_wColors(FreeCAD, FreeCADGui,
                     doc.Label, objs, keepOriginals=True)
    exportSTEP(doc,name,out_dir,fusion)

    step_path = '{dir:s}/{name:s}.step'.format(dir=out_dir, name=name)

    Lic.addLicenseToStep(out_dir, '{:s}.step'.\
        format(name), LIST_license,
            STR_licAuthor,
            STR_licEmail,
            STR_licOrgSys,
            STR_licPreProc)

    FreeCAD.activeDocument().recompute()
    print("Safe to: {}".format(out_dir))
    saveFCdoc(App, Gui, doc, name, out_dir)

    #FreeCADGui.activateWorkbench("PartWorkbench")
    if save_memory == False and check_Model==False:
        FreeCADGui.SendMsgToActiveView("ViewFit")
        FreeCADGui.activeDocument().activeView().viewAxometric()

    if save_memory == True or check_Model==True:
        doc=FreeCAD.ActiveDocument
        print("closing: {}".format(doc.Name))
        FreeCAD.closeDocument(doc.Name)

    if check_Model==True:
        runGeometryCheck(App, Gui, step_path,
            log, name, save_memory=save_memory)