mirror of
https://github.com/gumyr/build123d.git
synced 2025-12-06 02:30:55 -08:00
Removing make_face changes keeping BoundBox.extent
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
This commit is contained in:
parent
02a8c07e0a
commit
26caed754c
2 changed files with 9 additions and 29 deletions
|
|
@ -43,8 +43,6 @@ from build123d.topology import (
|
||||||
Wire,
|
Wire,
|
||||||
Sketch,
|
Sketch,
|
||||||
topo_explore_connected_edges,
|
topo_explore_connected_edges,
|
||||||
topo_explore_common_vertex,
|
|
||||||
edges_to_wires,
|
|
||||||
)
|
)
|
||||||
from build123d.geometry import Plane, Vector, TOLERANCE
|
from build123d.geometry import Plane, Vector, TOLERANCE
|
||||||
from build123d.build_common import flatten_sequence, validate_inputs
|
from build123d.build_common import flatten_sequence, validate_inputs
|
||||||
|
|
@ -201,33 +199,26 @@ def make_face(
|
||||||
) -> Sketch:
|
) -> Sketch:
|
||||||
"""Sketch Operation: make_face
|
"""Sketch Operation: make_face
|
||||||
|
|
||||||
Create a face from the given edges.
|
Create a face from the given perimeter edges.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
edges (Edge): sequence of edges. Defaults to all sketch pending edges.
|
edges (Edge): sequence of perimeter edges. Defaults to all
|
||||||
|
sketch pending edges.
|
||||||
mode (Mode, optional): combination mode. Defaults to Mode.ADD.
|
mode (Mode, optional): combination mode. Defaults to Mode.ADD.
|
||||||
"""
|
"""
|
||||||
context: BuildSketch | None = BuildSketch._get_context("make_face")
|
context: BuildSketch | None = BuildSketch._get_context("make_face")
|
||||||
|
|
||||||
if edges is not None:
|
if edges is not None:
|
||||||
raw_edges = flatten_sequence(edges)
|
outer_edges = flatten_sequence(edges)
|
||||||
elif context is not None:
|
elif context is not None:
|
||||||
raw_edges = context.pending_edges
|
outer_edges = context.pending_edges
|
||||||
else:
|
else:
|
||||||
raise ValueError("No objects to create a face")
|
raise ValueError("No objects to create a face")
|
||||||
if not raw_edges:
|
if not outer_edges:
|
||||||
raise ValueError("No objects to create a face")
|
raise ValueError("No objects to create a hull")
|
||||||
validate_inputs(context, "make_face", raw_edges)
|
validate_inputs(context, "make_face", outer_edges)
|
||||||
|
|
||||||
wires = list(
|
pending_face = Face(Wire.combine(outer_edges)[0])
|
||||||
edges_to_wires(raw_edges).sort_by(
|
|
||||||
lambda w: w.bounding_box().measure, reverse=True
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if len(wires) > 1:
|
|
||||||
pending_face = Face(wires[0], wires[1:])
|
|
||||||
else:
|
|
||||||
pending_face = Face(wires[0])
|
|
||||||
if pending_face.normal_at().Z < 0: # flip up-side-down faces
|
if pending_face.normal_at().Z < 0: # flip up-side-down faces
|
||||||
pending_face = -pending_face
|
pending_face = -pending_face
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,17 +168,6 @@ class TestUpSideDown(unittest.TestCase):
|
||||||
sketch = make_face(wire.edges())
|
sketch = make_face(wire.edges())
|
||||||
self.assertTrue(sketch.faces()[0].normal_at().Z > 0)
|
self.assertTrue(sketch.faces()[0].normal_at().Z > 0)
|
||||||
|
|
||||||
def test_make_face_with_holes(self):
|
|
||||||
with BuildSketch() as skt:
|
|
||||||
with BuildLine() as perimeter:
|
|
||||||
CenterArc((0, 0), 3, 0, 360)
|
|
||||||
with BuildLine() as hole1:
|
|
||||||
Polyline((-1, 1), (1, 1), (1, 2), (-1, 2), (-1, 1))
|
|
||||||
with BuildLine() as hole2:
|
|
||||||
Airfoil("4020")
|
|
||||||
make_face()
|
|
||||||
self.assertEqual(len(skt.face().inner_wires()), 2)
|
|
||||||
|
|
||||||
|
|
||||||
class TestBuildSketchExceptions(unittest.TestCase):
|
class TestBuildSketchExceptions(unittest.TestCase):
|
||||||
"""Test exception handling"""
|
"""Test exception handling"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue