diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c2fde8dab2..2e2e4289f9 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,6 +5,14 @@ Please add newer entries at the top, list the date and your name with email address. +2009-Dec-3 UPDATE Dick Hollenbeck +================================================================================ +++pcbnew + Make the source file to the specctra freerouter help panel be html, not *.h + This makes it easier to preview the page in a browser. Then autogenerate + the *.h file from the html using a CMake script. + + 2009-Nov-05 UPDATE Jean-Pierre Charras ================================================================================ ++pcbnew diff --git a/CMakeModules/Html2C.cmake b/CMakeModules/Html2C.cmake new file mode 100644 index 0000000000..2c44322d64 --- /dev/null +++ b/CMakeModules/Html2C.cmake @@ -0,0 +1,12 @@ + +# CMake script file to process a text file by wrapping every line in double quotes. +# Input file must not abuse quotes, staying with single quotes is probably best. + +set( lines "" ) +file( STRINGS ${inputFile} lines ) + +file( WRITE ${outputFile} "// Do not edit this file, it is autogenerated by CMake from an HTML file\n" ) + +foreach( line ${lines} ) + file( APPEND ${outputFile} "\"" ${line} "\"\n" ) +endforeach( line ${lines} ) diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index eecfed27e7..ffffa5f6b2 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -41,7 +41,7 @@ set(PCBNEW_SRCS dialog_edit_module_text_base.cpp dialog_exchange_modules_base.cpp dialog_freeroute_exchange.cpp - dialog_freeroute_exchange_base.cpp + dialog_freeroute_exchange_base.cpp # dialog_gendrill.cpp dialog_general_options.cpp dialog_general_options_BoardEditor_base.cpp @@ -188,7 +188,26 @@ if(APPLE) set(MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) endif(APPLE) -add_executable(pcbnew WIN32 MACOSX_BUNDLE ${PCBNEW_SRCS} ${PCBNEW_EXTRA_SRCS} ${PCBNEW_RESOURCES}) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help_html.h + COMMAND $(CMAKE_COMMAND) + -DinputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help.html + -DoutputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help_html.h + -P ${CMAKE_MODULE_PATH}/Html2C.cmake + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help.html + COMMENT "creating ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help_html.h + from ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help.html" + ) + +#add_dependencies( dialog_freeroute_exchange.cpp ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help_html.h ) + +set_source_files_properties( dialog_freeroute_exchange.cpp PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dialog_freeroute_exchange_help_html.h ) + +add_executable(pcbnew WIN32 MACOSX_BUNDLE ${PCBNEW_SRCS} + ${PCBNEW_EXTRA_SRCS} + ${PCBNEW_RESOURCES} + ) if(APPLE) set_target_properties(pcbnew PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) diff --git a/pcbnew/dialog_freeroute_exchange_help.html b/pcbnew/dialog_freeroute_exchange_help.html new file mode 100644 index 0000000000..44e7a3ca38 --- /dev/null +++ b/pcbnew/dialog_freeroute_exchange_help.html @@ -0,0 +1,73 @@ + + +

Freerouter Guidelines:

+
    +
  1. in pcbnew: establish the number of layers, and save the new *.brd file.

  2. + +
  3. in a text editor: load the board (*.brd) file, and edit the layer names and types. + These should look something like this: +
      +
    • Layer[0] Back signal
    • +
    • Layer[1] Power power
    • +
    • Layer[2] V2_Signal signal
    • +
    • Layer[3] H1_Signal signal
    • +
    • Layer[4] Ground power
    • +
    • Layer[15] Front signal
    • + +

    + Notice that after the layer name there is a layer type field, either 'signal' or 'power'. + Any layer identified as 'power' will be removed from the layer menu in Freerouter, + as this will be assumed to contain a power zone. +

  4. + +
  5. in pcbnew: re-load the board, and establish board perimeter.

  6. + +
  7. in pcbnew: load in the netlist so you have all the components defined and instantiated.

  8. + +
  9. in pcbnew: establish any zones, inclusive of net association.

  10. + +
  11. in pcbnew: do the degree of component placements you are comfortable with. + It is a little easier to accurately position components in pcbnew than in + freerouter, but either will work.

  12. + +
  13. in pcbnew: set up the netclasses. Power traces might be a little thicker + than signal traces. If so, add a netclass called 'power'. + Make its traces thicker than what you establish for netclass 'Default'. + Set trace width, spacing and vias for each netclass.

  14. + +
  15. in pcbnew: export to DSN.

  16. + +
  17. load up freerouter (keep it running for any subsequent iterations of 5) through 16) here).

  18. + +
  19. in freerouter: load the project's *.dsn file. Immediately after a load, all + components and traces (if any) will initially be 'fixed'. This is a 'lock + in place' toggle that you can undo by selecting a region with your mouse + and then selecting 'Unfix' from the menu. Occassionally you may want to + re-fix a trace or a part, if only temporarily. This keeps it locked in + place. +

  20. + +
  21. useful, not mandatory: in freerouter: set your move snap modulus, which seems + to default to 1 internal unit. + 20 mils in x and in y is about reasonable.

  22. + +
  23. in freerouter: finish placing any components, you can change sides of a part + here also, rotate, whatever.

  24. + +
  25. in freerouter: route the board, and save frequently to a *.dsn file while + routing in case of power loss. Pick the menu option for saving a full *.dsn + file, not a session file (yet). The full freerouter *.dsn file is a superset + format, one that can be reloaded in the event of a power loss. Whereas the + *.ses file is not a complete design, but only with the *.brd file + constitutes a full design. So it is important to backup your work to a + *.dsn file while routing in case of power loss.

  26. + +
  27. in freerouter: when done, or when you want to back import, then save as a session file, *.ses.

  28. + +
  29. in pcbnew: backimport the session file

  30. + +
  31. in pcbnew: at this point the zones have to be refilled. One way to do that + is to simply run DRC.
  32. + +
+ diff --git a/pcbnew/dialog_freeroute_exchange_help_html.h b/pcbnew/dialog_freeroute_exchange_help_html.h deleted file mode 100644 index 076a9fe48b..0000000000 --- a/pcbnew/dialog_freeroute_exchange_help_html.h +++ /dev/null @@ -1,25 +0,0 @@ -"Guidelines:

\ -1) in pcbnew: establish board perimeter.
\ -2) in pcbnew: establish any zones, inclusive of net association.
\ -3) in pcbnew: load in the netlist so you have all the components defined and instantiated.
\ -4) in pcbnew: do the degree of component placements you are comfortable with.
\ -It is a little easier to accurately position components in pcbnew than in freerouter, but either will work.
\ -5) in pcbnew: set up the netclasses. power traces might be a little thicker.
\ -so add a netclass called \"power\".
\ -Make its traces thicker than what you establish for netclass \"Default\".
\ -Set spacing and vias for each netclass.
\ -6) in pcbnew: export to DSN.
\ -7) load up freerouter (keep it running for any subsequent iterations of 6) through 14) here ).
\ -8) in freerouter: load the project's *.dsn file.
\ -9) useful, not mandatory: in freerouter: set your move snap modulus, which seems to default to 1 internal unit.
\ - 20 mils in x and in y is about reasonable.
\ -10) in freerouter: finish placing any components, you can change sides of a part here also, rotate, whatever.
\ -11) in freerouter: route the board, save frequently to a *.dsn file
\ -while routing, in case of power loss, not yet a session file but a full *.dsn file.
\ -The full freerouter *.dsn file is a superset format,\ -one that fully defines the board and can be reloaded between power outages,\ -whereas the *.ses file is not a complete design,\ -but with the *.brd file constitutes a full design.
\ -12) in freerouter: when done, or when you want to back import, then save as a session file, *.ses.
\ -13) in pcbnew: backimport the session file
\ -14) in pcbnew: at this point the zones have to be refilled. One way to do that is to simply run DRC."