From 2a9b8df88809bf5523cdd3ccdd47a07b960cf760 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Sun, 15 Jul 2012 22:01:05 +0200 Subject: [PATCH] Support for nanometer build, extra example --- pcbnew/CMakeLists.txt | 14 ++++---- .../examples/hidePcbValuesShowReferences.py | 14 ++++++++ pcbnew/scripting/units.i | 36 +++++++++---------- scripting/kicad.i | 6 +++- scripting/python_scripting.cpp | 11 +++--- 5 files changed, 50 insertions(+), 31 deletions(-) create mode 100644 pcbnew/scripting/examples/hidePcbValuesShowReferences.py diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index f45d242228..c1fe7664ec 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -2,15 +2,12 @@ add_definitions(-DPCBNEW) if (KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES) EXECUTE_PROCESS(COMMAND python2 -c "import sys;print\"%s.%s\"%sys.version_info[0:2]" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - SET(PYTHON_DEST "lib/python${PYTHON_VERSION}/dist-packages" ) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripting) - - FIND_PACKAGE(SWIG REQUIRED) - INCLUDE(${SWIG_USE_FILE}) - - FIND_PACKAGE(PythonLibs) - INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) + FIND_PACKAGE(SWIG REQUIRED) + INCLUDE(${SWIG_USE_FILE}) + FIND_PACKAGE(PythonLibs) + INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) add_definitions(-DPCBNEW -DKICAD_SCRIPTING) endif() @@ -280,6 +277,9 @@ if (KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES) if ( USE_NEW_PCBNEW_LOAD OR USE_NEW_PCBNEW_SAVE ) SET(SWIG_FLAGS ${SWIG_FLAGS} -DBUILD_WITH_PLUGIN) endif() + if ( USE_PCBNEW_NANOMETRES ) + SET(SWIG_FLAGS ${SWIG_FLAGS} -DUSE_PCBNEW_NANOMETRES) + endif() endif() diff --git a/pcbnew/scripting/examples/hidePcbValuesShowReferences.py b/pcbnew/scripting/examples/hidePcbValuesShowReferences.py new file mode 100644 index 0000000000..2d878d15b9 --- /dev/null +++ b/pcbnew/scripting/examples/hidePcbValuesShowReferences.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +import sys +from pcbnew import * + +filename=sys.argv[1] + +pcb = LoadBoard(filename) + +for module in pcb.GetModules(): + print "* Module: %s"%module.GetReference() + module.GetValueObj().SetVisible(False) # set Value as Hidden + module.GetReferenceObj().SetVisible(True) # set Reference as Visible + +pcb.Save("mod_"+filename) \ No newline at end of file diff --git a/pcbnew/scripting/units.i b/pcbnew/scripting/units.i index 66ff1f4d69..83764b3d0e 100644 --- a/pcbnew/scripting/units.i +++ b/pcbnew/scripting/units.i @@ -34,42 +34,42 @@ { def ToMM(iu): if type(iu) in [int,float]: - return iu * 0.00254 + return float(iu) / float(IU_PER_MM) elif type(iu) in [wxPoint,wxSize]: return tuple(map(ToMM,iu)) - def FromMM(iu): - if type(iu) in [int,float]: - return iu / 0.00254 - elif type(iu) in [wxPoint,wxSize]: - return tuple(map(FromMM,iu)) + def FromMM(mm): + if type(mm) in [int,float]: + return int(float(mm) * float(IU_PER_MM)) + elif type(mm) in [wxPoint,wxSize]: + return tuple(map(FromMM,mm)) def ToMils(iu): if type(iu) in [int,float]: - return iu / 10.0 + return float(iu) / float(IU_PER_MILS) elif type(iu) in [wxPoint,wxSize]: return tuple(map(ToMils,iu)) - def FromMils(iu): - if type(iu) in [int,float]: - return iu*10.0 - elif type(iu) in [wxPoint,wxSize]: - return tuple(map(FromMils,iu)) + def FromMils(mils): + if type(mils) in [int,float]: + return int(float(mils)*float(IU_PER_MILS)) + elif type(mils) in [wxPoint,wxSize]: + return tuple(map(FromMils,mils)) - def SizeMM(mmx,mmy): return wxSize(FromMM(mmx),FromMM(mmy)) - def SizeMils(mmx,mmy): return wxSize(FromMils(mmx),FromMils(mmy)) + def wxSizeMM(mmx,mmy): return wxSize(FromMM(mmx),FromMM(mmy)) + def wxSizeMils(mmx,mmy): return wxSize(FromMils(mmx),FromMils(mmy)) - def PointMM(mmx,mmy): return wxPoint(FromMM(mmx),FromMM(mmy)) - def PointMils(mmx,mmy): return wxPoint(FromMils(mmx),FromMils(mmy)) + def wxPointMM(mmx,mmy): return wxPoint(FromMM(mmx),FromMM(mmy)) + def wxPointMils(mmx,mmy): return wxPoint(FromMils(mmx),FromMils(mmy)) - def RectMM(x,y,wx,wy): + def wxRectMM(x,y,wx,wy): x = int(FromMM(x)) y = int(FromMM(y)) wx = int(FromMM(wx)) wy = int (FromMM(wy)) return wxRect(x,y,wx,wy) - def RectMils(x,y,wx,wy): + def wxRectMils(x,y,wx,wy): x = int(FromMils(x)) y = int(FromMils(y)) wx = int(FromMils(wx)) diff --git a/scripting/kicad.i b/scripting/kicad.i index 71b00bc7fe..533e008762 100644 --- a/scripting/kicad.i +++ b/scripting/kicad.i @@ -68,7 +68,9 @@ #include #include #include - #include + #include + #include + #include %} @@ -100,6 +102,8 @@ %include %include %include +%include +%include /* special iteration wrapper for DLIST objects */ %include "dlist.i" diff --git a/scripting/python_scripting.cpp b/scripting/python_scripting.cpp index 2b1ca6b18d..90b6807e7d 100644 --- a/scripting/python_scripting.cpp +++ b/scripting/python_scripting.cpp @@ -68,14 +68,15 @@ static void swigAddBuiltin() { int i = 0; - while( PyImport_Inittab[i].name ) - { - i++; - } - + /* discover the length of the pyimport inittab */ + while( PyImport_Inittab[i].name ) i++; + + /* allocate memory for the python module table */ SwigImportInittab = (struct _inittab*) malloc( sizeof(struct _inittab)*(i+EXTRA_PYTHON_MODULES)); + /* copy all pre-existing python modules into our newly created table */ + i=0; while( PyImport_Inittab[i].name ) { swigAddModule( PyImport_Inittab[i].name, PyImport_Inittab[i].initfunc );