mirror of https://github.com/vitalif/openscad
Search for included files first in the same location as the including module, then in the document root as a compatibility fallback. Fixes #217
parent
db8ad9631d
commit
0e938364fe
|
@ -0,0 +1,35 @@
|
|||
#include "fileutils.h"
|
||||
#include "printutils.h"
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
namespace fs = boost::filesystem;
|
||||
#include "boosty.h"
|
||||
|
||||
/*!
|
||||
Returns the absolute path to the given filename, unless it's empty.
|
||||
If the file isn't found in the given path, the fallback path will be
|
||||
used to be backwards compatible with <= 2013.01 (see issue #217).
|
||||
*/
|
||||
std::string lookup_file(const std::string &filename,
|
||||
const std::string &path, const std::string &fallbackpath)
|
||||
{
|
||||
std::string resultfile;
|
||||
if (!filename.empty() && !boosty::is_absolute(fs::path(filename))) {
|
||||
fs::path absfile;
|
||||
if (!path.empty()) absfile = boosty::absolute(fs::path(path) / filename);
|
||||
fs::path absfile_fallback;
|
||||
if (!fallbackpath.empty()) absfile_fallback = boosty::absolute(fs::path(fallbackpath) / filename);
|
||||
|
||||
if (!fs::exists(absfile) && fs::exists(absfile_fallback)) {
|
||||
resultfile = absfile_fallback.string();
|
||||
PRINTB("WARNING: Imported file (%s) found in document root instead of relative to the importing module. This behavior is deprecated", filename);
|
||||
}
|
||||
else {
|
||||
resultfile = absfile.string();
|
||||
}
|
||||
}
|
||||
else {
|
||||
resultfile = filename;
|
||||
}
|
||||
return resultfile;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef FILEUTILS_H_
|
||||
#define FILEUTILS_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
std::string lookup_file(const std::string &filename,
|
||||
const std::string &path, const std::string &fallbackpath);
|
||||
|
||||
#endif
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,20 @@
|
|||
group() {
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "localfile.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -250], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(file = "localfile.dxf", layer = "", origin = [0, 0], scale = 1, height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 350], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
rotate_extrude(file = "localfile.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 250], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[200, 0, 0, 0], [0, 200, 0, 0], [0, 0, 50, 0], [0, 0, 0, 1]]) {
|
||||
surface(file = "localfile.dat", center = false);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -200], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 100);
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Loading…
Reference in New Issue