mirror of
https://github.com/kennetek/gridfinity-rebuilt-openscad.git
synced 2024-12-22 14:53:25 +00:00
Merge pull request #213 from EmperorArthur/fix_only_corners
Fix only corners
This commit is contained in:
commit
7eb86296d9
3 changed files with 26 additions and 6 deletions
|
@ -230,7 +230,7 @@ module gridfinityBase(gx, gy, l, dx, dy, hole_options=bundle_hole_options(), off
|
||||||
if(only_corners) {
|
if(only_corners) {
|
||||||
difference(){
|
difference(){
|
||||||
pattern_linear(gx/dbnx, gy/dbny, dbnx*l, dbny*l)
|
pattern_linear(gx/dbnx, gy/dbny, dbnx*l, dbny*l)
|
||||||
block_base(gx, gy, l, dbnx, dbny, 0, off);
|
block_base(gx, gy, l, dbnx, dbny, bundle_hole_options(), off);
|
||||||
|
|
||||||
copy_mirror([0, 1, 0]) {
|
copy_mirror([0, 1, 0]) {
|
||||||
copy_mirror([1, 0, 0]) {
|
copy_mirror([1, 0, 0]) {
|
||||||
|
|
|
@ -109,7 +109,7 @@ class OpenScadRunner:
|
||||||
TOP_ANGLE_CAMERA = CameraArguments(Vec3(0,0,0),Vec3(45,0,45),150)
|
TOP_ANGLE_CAMERA = CameraArguments(Vec3(0,0,0),Vec3(45,0,45),150)
|
||||||
|
|
||||||
common_arguments = [
|
common_arguments = [
|
||||||
#'--hardwarnings', // Does not work when setting variables by using functions
|
#'--hardwarnings', # Does not work when setting variables by using functions
|
||||||
'--enable=fast-csg',
|
'--enable=fast-csg',
|
||||||
'--enable=predictible-output',
|
'--enable=predictible-output',
|
||||||
'--imgsize=1280,720',
|
'--imgsize=1280,720',
|
||||||
|
@ -127,9 +127,9 @@ class OpenScadRunner:
|
||||||
self.camera_arguments = None
|
self.camera_arguments = None
|
||||||
self.parameters = None
|
self.parameters = None
|
||||||
|
|
||||||
def create_image(self, args: [str], image_file_name: str):
|
def create_image(self, args: [str], image_file_name: str) -> subprocess.CompletedProcess:
|
||||||
"""
|
"""
|
||||||
Run the code, to create an image.
|
Run the code and create an image.
|
||||||
@Important The only verification is that no errors occured.
|
@Important The only verification is that no errors occured.
|
||||||
There is no verification if the image was created, or the image contents.
|
There is no verification if the image was created, or the image contents.
|
||||||
"""
|
"""
|
||||||
|
@ -150,6 +150,18 @@ class OpenScadRunner:
|
||||||
json.dump(params, file, sort_keys=True, indent=2, cls=DataClassJSONEncoder)
|
json.dump(params, file, sort_keys=True, indent=2, cls=DataClassJSONEncoder)
|
||||||
file.close()
|
file.close()
|
||||||
command_arguments += ["-p", file.name, "-P", "python_generated"]
|
command_arguments += ["-p", file.name, "-P", "python_generated"]
|
||||||
return subprocess.run([self.openscad_binary_path]+command_arguments, check=True)
|
return self._run(command_arguments)
|
||||||
else:
|
else:
|
||||||
return subprocess.run([self.openscad_binary_path]+command_arguments, check=True)
|
return self._run(command_arguments)
|
||||||
|
|
||||||
|
def _run(self, args: [str]) -> subprocess.CompletedProcess:
|
||||||
|
"""
|
||||||
|
Run openscad with the passed in arguments.
|
||||||
|
"""
|
||||||
|
output = subprocess.run([self.openscad_binary_path]+args, capture_output=True)
|
||||||
|
error_strings = output.stderr.decode().strip().splitlines()
|
||||||
|
if any(line.startswith("ERROR:") for line in error_strings):
|
||||||
|
# OpenSCAD doesn't set an error return if it errors from bad SCAD code!
|
||||||
|
output.returncode = 11
|
||||||
|
output.check_returncode()
|
||||||
|
return output
|
||||||
|
|
|
@ -37,6 +37,14 @@ class TestBinHoles(unittest.TestCase):
|
||||||
vars["screw_holes"] = False
|
vars["screw_holes"] = False
|
||||||
self.scad_runner.create_image([], Path('no_holes.png'))
|
self.scad_runner.create_image([], Path('no_holes.png'))
|
||||||
|
|
||||||
|
def test_only_corner_holes(self):
|
||||||
|
vars = self.scad_runner.parameters
|
||||||
|
vars["refined_holes"] = True
|
||||||
|
vars["magnet_holes"] = False
|
||||||
|
vars["screw_holes"] = False
|
||||||
|
vars["only_corners"] = True
|
||||||
|
self.scad_runner.create_image([], Path('only_corner_holes.png'))
|
||||||
|
|
||||||
def test_refined_holes(self):
|
def test_refined_holes(self):
|
||||||
vars = self.scad_runner.parameters
|
vars = self.scad_runner.parameters
|
||||||
vars["refined_holes"] = True
|
vars["refined_holes"] = True
|
||||||
|
|
Loading…
Reference in a new issue