Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
c7e7014b
Commit
c7e7014b
authored
Feb 14, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
module flip reverting on exception
parent
cb138403
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
48 additions
and
12 deletions
+48
-12
specctra.h
pcbnew/specctra.h
+14
-2
specctra_export.cpp
pcbnew/specctra_export.cpp
+34
-10
No files found.
pcbnew/specctra.h
View file @
c7e7014b
...
@@ -3578,6 +3578,8 @@ class SPECCTRA_DB : public OUTPUTFORMATTER
...
@@ -3578,6 +3578,8 @@ class SPECCTRA_DB : public OUTPUTFORMATTER
std
::
string
quote_char
;
std
::
string
quote_char
;
bool
modulesAreFlipped
;
STRINGFORMATTER
sf
;
STRINGFORMATTER
sf
;
STRINGS
layerIds
;
///< indexed by PCB layer number
STRINGS
layerIds
;
///< indexed by PCB layer number
...
@@ -3822,6 +3824,11 @@ class SPECCTRA_DB : public OUTPUTFORMATTER
...
@@ -3822,6 +3824,11 @@ class SPECCTRA_DB : public OUTPUTFORMATTER
nets
.
clear
();
nets
.
clear
();
}
}
/**
* Function flipMODULEs
* flips the modules which are on the back side of the board to the front.
*/
void
flipMODULEs
(
BOARD
*
aBoard
);
//-----<FromSESSION>-----------------------------------------------------
//-----<FromSESSION>-----------------------------------------------------
...
@@ -3850,6 +3857,7 @@ public:
...
@@ -3850,6 +3857,7 @@ public:
session
=
0
;
session
=
0
;
fp
=
0
;
fp
=
0
;
quote_char
+=
'"'
;
quote_char
+=
'"'
;
modulesAreFlipped
=
false
;
}
}
virtual
~
SPECCTRA_DB
()
virtual
~
SPECCTRA_DB
()
...
@@ -3957,7 +3965,6 @@ public:
...
@@ -3957,7 +3965,6 @@ public:
*/
*/
void
FromBOARD
(
BOARD
*
aBoard
)
throw
(
IOError
);
void
FromBOARD
(
BOARD
*
aBoard
)
throw
(
IOError
);
/**
/**
* Function FromSESSION
* Function FromSESSION
* adds the entire SESSION info to a BOARD but does not write it out. The
* adds the entire SESSION info to a BOARD but does not write it out. The
...
@@ -3968,7 +3975,6 @@ public:
...
@@ -3968,7 +3975,6 @@ public:
*/
*/
void
FromSESSION
(
BOARD
*
aBoard
)
throw
(
IOError
);
void
FromSESSION
(
BOARD
*
aBoard
)
throw
(
IOError
);
/**
/**
* Function ExportSESSION
* Function ExportSESSION
* writes the internal SESSION instance out as a SPECTRA DSN format file.
* writes the internal SESSION instance out as a SPECTRA DSN format file.
...
@@ -3976,6 +3982,12 @@ public:
...
@@ -3976,6 +3982,12 @@ public:
* @param aFilename The file to save to.
* @param aFilename The file to save to.
*/
*/
void
ExportSESSION
(
wxString
aFilename
);
void
ExportSESSION
(
wxString
aFilename
);
/**
* Function RevertMODULEs
* flips the modules which were on the back side of the board back to the back.
*/
void
RevertMODULEs
(
BOARD
*
aBoard
);
};
};
...
...
pcbnew/specctra_export.cpp
View file @
c7e7014b
...
@@ -97,6 +97,11 @@ void WinEDA_PcbFrame::ExportToSpecctra( wxCommandEvent& event )
...
@@ -97,6 +97,11 @@ void WinEDA_PcbFrame::ExportToSpecctra( wxCommandEvent& event )
setlocale
(
LC_NUMERIC
,
""
);
// revert to the current locale
setlocale
(
LC_NUMERIC
,
""
);
// revert to the current locale
// this is called in FromBOARD() too, but if it throws an exception, that call
// does not happen, so call it again just in case here.
db
.
RevertMODULEs
(
m_Pcb
);
// The two calls below to BOARD::Change_Side_Module(), both set the
// The two calls below to BOARD::Change_Side_Module(), both set the
// modified flag, yet their actions cancel each other out, so it should
// modified flag, yet their actions cancel each other out, so it should
// be ok to clear the modify flag.
// be ok to clear the modify flag.
...
@@ -727,15 +732,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
...
@@ -727,15 +732,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
// DSN Images (=Kicad MODULES and pads) must be presented from the
// DSN Images (=Kicad MODULES and pads) must be presented from the
// top view. So we temporarily flip any modules which are on the back
// top view. So we temporarily flip any modules which are on the back
// side of the board to the front, and record this in the MODULE's flag field.
// side of the board to the front, and record this in the MODULE's flag field.
for
(
MODULE
*
module
=
aBoard
->
m_Modules
;
module
;
module
=
module
->
Next
()
)
flipMODULEs
(
aBoard
);
{
module
->
flag
=
0
;
if
(
module
->
GetLayer
()
==
COPPER_LAYER_N
)
{
aBoard
->
Change_Side_Module
(
module
,
NULL
);
module
->
flag
=
1
;
}
}
//-----<layer_descriptor>-----------------------------------------------
//-----<layer_descriptor>-----------------------------------------------
{
{
...
@@ -1220,7 +1217,32 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
...
@@ -1220,7 +1217,32 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
}
}
//-----<restore MODULEs>------------------------------------------------
//-----<flip modules back>----------------------------------------------
RevertMODULEs
(
aBoard
);
}
void
SPECCTRA_DB
::
flipMODULEs
(
BOARD
*
aBoard
)
{
for
(
MODULE
*
module
=
aBoard
->
m_Modules
;
module
;
module
=
module
->
Next
()
)
{
module
->
flag
=
0
;
if
(
module
->
GetLayer
()
==
COPPER_LAYER_N
)
{
aBoard
->
Change_Side_Module
(
module
,
NULL
);
module
->
flag
=
1
;
}
}
modulesAreFlipped
=
true
;
}
void
SPECCTRA_DB
::
RevertMODULEs
(
BOARD
*
aBoard
)
{
if
(
!
modulesAreFlipped
)
return
;
// DSN Images (=Kicad MODULES and pads) must be presented from the
// DSN Images (=Kicad MODULES and pads) must be presented from the
// top view. Restore those that were flipped.
// top view. Restore those that were flipped.
...
@@ -1232,6 +1254,8 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
...
@@ -1232,6 +1254,8 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
module
->
flag
=
0
;
module
->
flag
=
0
;
}
}
}
}
modulesAreFlipped
=
false
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment