# -*- coding: utf-8 -*- #**************************************************************************** #* * #* Kicad STEPUP (TM) (3D kicad board and models to STEP) for FreeCAD * #* 3D exporter for FreeCAD * #* Kicad STEPUP TOOLS (TM) (3D kicad board and models to STEP) for FreeCAD * #* Copyright (c) 2015 * #* Maurice easyw@katamail.com * #* * #* Kicad STEPUP (TM) is a TradeMark and cannot be freely useable * #* * #FreeCAD.addImportType("Kicad pcb board/mod File Type (*.kicad_pcb *.kicad_mod)","kicadStepUptools") FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC") FreeCAD.addExportType("Industry Foundation Classes (*.ifc)","importIFC") FreeCAD.addImportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") FreeCAD.addExportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") FreeCAD.addExportType("WebGL file (*.html)","importWebGL") FreeCAD.addExportType("JavaScript Object Notation (*.json)","importJSON") FreeCAD.addImportType("Collada (*.dae)","importDAE") FreeCAD.addExportType("Collada (*.dae)","importDAE") FreeCAD.addImportType("3D Studio mesh (*.3ds)","import3DS") FreeCAD.addImportType("SweetHome3D XML export (*.zip)","importSH3D") import os __path__ = __import__('pkgutil').extend_path(__path__, __name__) ICONPATH = os.path.join(os.path.dirname(__file__), "resources") zone_list = ["Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "Z10", "Z11", "Z12", "Z13", "Z14", "Z15", "Z16", "Z17", "Z18", "Z19", "Z20", "Z21", "Z22", "Z23", "Z24", "Z25", "Z26", "Z27", "Z28", "Z29", "Z30", "Z31", "Z32", "Z33", "Z34", "Z35", "Z36", "Z37", "Z38", "Z39", "Z40", "Z41", "Z42", "Z43", "Z44", "Z45", "Z46", "Z47", "Z48", "Z49", "Z50", "Z51", "Z52", "Z53", "Z54", "Z55", "Z56", "Z57", "Z58", "Z59", "Z60"] marker_dict = { 'NONE': -1, 'BACKSLASH_5_5': 4, 'BACKSLASH_7_7': 34, 'BACKSLASH_9_9': 64, 'BAR_5_5': 5, 'BAR_7_7': 35, 'BAR_9_9': 65, 'CAUTION_FILLED_5_5': 28, 'CAUTION_FILLED_7_7': 58, 'CAUTION_FILLED_9_9': 88, 'CAUTION_LINE_5_5': 18, 'CAUTION_LINE_7_7': 48, 'CAUTION_LINE_9_9': 78, 'CIRCLE_FILLED_5_5': 20, 'CIRCLE_FILLED_7_7': 50, 'CIRCLE_FILLED_9_9': 80, 'CIRCLE_LINE_5_5': 10, 'CIRCLE_LINE_7_7': 40, 'CIRCLE_LINE_9_9': 70, 'CROSS_5_5': 0, 'CROSS_7_7': 30, 'CROSS_9_9': 60, 'DIAMOND_FILLED_5_5': 22, 'DIAMOND_FILLED_7_7': 52, 'DIAMOND_FILLED_9_9': 82, 'DIAMOND_LINE_5_5': 12, 'DIAMOND_LINE_7_7': 42, 'DIAMOND_LINE_9_9': 72, 'EXTENSION': 512, 'FIRST_INSTANCE': 0, 'HOURGLASS_FILLED_5_5': 25, 'HOURGLASS_FILLED_7_7': 55, 'HOURGLASS_FILLED_9_9': 85, 'HOURGLASS_LINE_5_5': 15, 'HOURGLASS_LINE_7_7': 45, 'HOURGLASS_LINE_9_9': 75, 'LIGHTNING_5_5': 8, 'LIGHTNING_7_7': 38, 'LIGHTNING_9_9': 68, 'LINES': 7, 'LINE_STRIP': 8, 'MINUS_5_5': 2, 'MINUS_7_7': 32, 'MINUS_9_9': 62, 'NUM_MARKERS': 90, 'OTHER_INSTANCE': 2, 'PINE_TREE_FILLED_5_5': 27, 'PINE_TREE_FILLED_7_7': 57, 'PINE_TREE_FILLED_9_9': 87, 'PINE_TREE_LINE_5_5': 17, 'PINE_TREE_LINE_7_7': 47, 'PINE_TREE_LINE_9_9': 77, 'PLUS_5_5': 1, 'PLUS_7_7': 31, 'PLUS_9_9': 61, 'POINTS': 6, 'POLYGON': 3, 'PROTO_INSTANCE': 1, 'QUADS': 4, 'QUAD_STRIP': 5, 'RHOMBUS_FILLED_5_5': 24, 'RHOMBUS_FILLED_7_7': 54, 'RHOMBUS_FILLED_9_9': 84, 'RHOMBUS_LINE_5_5': 14, 'RHOMBUS_LINE_7_7': 44, 'RHOMBUS_LINE_9_9': 74, 'SATELLITE_FILLED_5_5': 26, 'SATELLITE_FILLED_7_7': 56, 'SATELLITE_FILLED_9_9': 86, 'SATELLITE_LINE_5_5': 16, 'SATELLITE_LINE_7_7': 46, 'SATELLITE_LINE_9_9': 76, 'SHIP_FILLED_5_5': 29, 'SHIP_FILLED_7_7': 59, 'SHIP_FILLED_9_9': 89, 'SHIP_LINE_5_5': 19, 'SHIP_LINE_7_7': 49, 'SHIP_LINE_9_9': 79, 'SLASH_5_5': 3, 'SLASH_7_7': 33, 'SLASH_9_9': 63, 'SQUARE_FILLED_5_5': 21, 'SQUARE_FILLED_7_7': 51, 'SQUARE_FILLED_9_9': 81, 'SQUARE_LINE_5_5': 11, 'SQUARE_LINE_7_7': 41, 'SQUARE_LINE_9_9': 71, 'STAR_5_5': 6, 'STAR_7_7': 36, 'STAR_9_9': 66, 'TRIANGLES': 2, 'TRIANGLE_FAN': 1, 'TRIANGLE_FILLED_5_5': 23, 'TRIANGLE_FILLED_7_7': 53, 'TRIANGLE_FILLED_9_9': 83, 'TRIANGLE_LINE_5_5': 13, 'TRIANGLE_LINE_7_7': 43, 'TRIANGLE_LINE_9_9': 73, 'TRIANGLE_STRIP': 0, 'VRML1': 1, 'VRML2': 2, 'WELL_5_5': 9, 'WELL_7_7': 39, 'WELL_9_9': 69, 'Y_5_5': 7, 'Y_7_7': 37, 'Y_9_9': 67} line_patterns = { "Continues _______________________________": 0xFFFF, "Border __ . __ __ . __ __ . __ __ . __": 0x3CF2, "Border (.5x) __.__.__.__.__.__.__.__.__.__._": 0x3939, "Border (2x) ____ ____ . ____ ____ . _": 0xFDFA, "Center ____ _ ____ _ ____ _ ____ _ ___": 0xFF3C, "Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ _": 0xFC78, "Center (2x) ________ __ ________ __ ___": 0xFFDE, "Dash dot __ . __ . __ . __ . __ . __ . _": 0xE4E4, "Dash dot (.5x) _._._._._._._._._._._._._._._._": 0xEBAE, "Dash dot (2x) ____ . ____ . ____ . ____": 0xFF08, "Dashed __ __ __ __ __ __ __ __ __ __ _": 0x739C, "Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _": 0xDB6E, "Dashed (2x) ____ ____ ____ ____ ____ _": 0xFFE0, "Divide ____ . . ____ . . ____ . . ____": 0xFF24, "Divide (.5x) __..__..__..__..__..__..__..__.": 0xEAEA, "Divide (2x) ________ . . ________ . . ": 0xFFEA, "Dot . . . . . . . . . . . . . . . .": 0x4924, "Dot (.5x) ...............................": 0x5555, "Dot (2x) . . . . . . . . . . .": 0x8888}