Skip to content

Commit 630c1e1

Browse files
Restructure to place adapters into subpackages.
1 parent d65df5f commit 630c1e1

50 files changed

Lines changed: 316 additions & 307 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ jobs:
3030
run: ruff check .
3131

3232
- name: Run type checker
33-
run: mypy core --ignore-missing-imports
33+
run: mypy morphe --ignore-missing-imports
3434

3535
- name: Run tests
3636
run: pytest tests/ -v --ignore=tests/test_freecad_roundtrip.py
3737

3838
- name: Run tests with coverage
39-
run: pytest tests/ --cov=core --cov-report=xml --ignore=tests/test_freecad_roundtrip.py
39+
run: pytest tests/ --cov=morphe --cov-report=xml --ignore=tests/test_freecad_roundtrip.py
4040

4141
test-freecad:
4242
runs-on: ubuntu-latest

README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ A CAD-agnostic 2D sketch geometry and constraint representation with adapter sup
1111

1212
This project provides:
1313

14-
- **`core`**: Platform-independent schema for 2D sketch geometry and constraints
15-
- **`adapter_freecad`**: Adapter for FreeCAD's Sketcher workbench
16-
- **`adapter_fusion`**: Adapter for Autodesk Fusion 360
17-
- **`adapter_solidworks`**: Adapter for SolidWorks (Windows only, via COM)
18-
- **`adapter_inventor`**: Adapter for Autodesk Inventor (Windows only, via COM)
14+
- **`morphe`**: Platform-independent schema for 2D sketch geometry and constraints
15+
- **`morphe.adapters.freecad`**: Adapter for FreeCAD's Sketcher workbench
16+
- **`morphe.adapters.fusion`**: Adapter for Autodesk Fusion 360
17+
- **`morphe.adapters.solidworks`**: Adapter for SolidWorks (Windows only, via COM)
18+
- **`morphe.adapters.inventor`**: Adapter for Autodesk Inventor (Windows only, via COM)
1919

2020
The canonical format enables constrained sketches to be stored, transferred, and manipulated independently of any specific CAD system.
2121

@@ -44,7 +44,7 @@ pip install pywin32
4444
## Quick Start
4545

4646
```python
47-
from core import (
47+
from morphe import (
4848
SketchDocument, Point2D, Line, Circle, Horizontal, Radius,
4949
save_sketch, load_sketch
5050
)
@@ -66,8 +66,8 @@ sketch = load_sketch("my_sketch.json")
6666
## FreeCAD Integration
6767

6868
```python
69-
from core import load_sketch
70-
from adapter_freecad import FreeCADAdapter
69+
from morphe import load_sketch
70+
from morphe.adapters.freecad import FreeCADAdapter
7171

7272
sketch = load_sketch("my_sketch.json")
7373
adapter = FreeCADAdapter()
@@ -87,10 +87,10 @@ The Fusion 360 adapter runs as a script or add-in within Fusion 360:
8787
```python
8888
# Run this inside Fusion 360's Scripts environment
8989
import sys
90-
sys.path.insert(0, r"path/to/morphe")
90+
sys.path.insert(0, r"path/to/morphe-repo")
9191

92-
from core import load_sketch
93-
from adapter_fusion import FusionAdapter
92+
from morphe import load_sketch
93+
from morphe.adapters.fusion import FusionAdapter
9494

9595
def run(context):
9696
sketch = load_sketch("my_sketch.json")
@@ -111,8 +111,8 @@ def run(context):
111111
The SolidWorks adapter uses COM automation via `pywin32` (Windows only):
112112

113113
```python
114-
from core import load_sketch
115-
from adapter_solidworks import SolidWorksAdapter, SOLIDWORKS_AVAILABLE
114+
from morphe import load_sketch
115+
from morphe.adapters.solidworks import SolidWorksAdapter, SOLIDWORKS_AVAILABLE
116116

117117
if SOLIDWORKS_AVAILABLE:
118118
sketch = load_sketch("my_sketch.json")
@@ -146,8 +146,8 @@ if SOLIDWORKS_AVAILABLE:
146146
The Inventor adapter uses COM automation via `pywin32` (Windows only):
147147

148148
```python
149-
from core import load_sketch
150-
from adapter_inventor import InventorAdapter, INVENTOR_AVAILABLE
149+
from morphe import load_sketch
150+
from morphe.adapters.inventor import InventorAdapter, INVENTOR_AVAILABLE
151151

152152
if INVENTOR_AVAILABLE:
153153
sketch = load_sketch("my_sketch.json")

SPECIFICATION.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ This document defines a CAD-agnostic representation for 2D sketch geometry and c
1212

1313
### 1.1 Project structure
1414
```
15-
core/ # Core schema, validation, serialization (Python)
16-
adapter_freecad/ # FreeCAD adapter (Python, open source)
17-
adapter_solidworks/ # SolidWorks adapter (Python, Windows only via COM)
18-
adapter_inventor/ # Inventor adapter (Python, Windows only via COM)
19-
adapter_fusion/ # Fusion 360 adapter (Python, runs inside Fusion)
15+
morphe/ # Main package
16+
__init__.py # Core schema, validation, serialization (Python)
17+
adapters/
18+
freecad/ # FreeCAD adapter (Python, open source)
19+
solidworks/ # SolidWorks adapter (Python, Windows only via COM)
20+
inventor/ # Inventor adapter (Python, Windows only via COM)
21+
fusion/ # Fusion 360 adapter (Python, runs inside Fusion)
2022
```
2123

2224
Each adapter project has:

demo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import sys
3030
from pathlib import Path
3131

32-
from core import (
32+
from morphe import (
3333
Arc,
3434
Circle,
3535
Distance,
@@ -382,8 +382,8 @@ def export_to_freecad(doc: SketchDocument) -> None:
382382
import sys
383383
sys.path.insert(0, {repr(str(project_root))})
384384
385-
from core import sketch_from_json
386-
from adapter_freecad import FreeCADAdapter
385+
from morphe import sketch_from_json
386+
from morphe.adapters.freecad import FreeCADAdapter
387387
import FreeCADGui
388388
389389
# Load the sketch from JSON

demo_rpc.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
2. In FreeCAD's Python console, run:
1111
>>> import sys
1212
>>> sys.path.insert(0, '/path/to/morphe')
13-
>>> from adapter_freecad import start_server
13+
>>> from morphe.adapters.freecad import start_server
1414
>>> start_server()
1515
1616
3. Then run this script from the command line:
@@ -28,7 +28,7 @@
2828
import sys
2929
from pathlib import Path
3030

31-
from adapter_freecad import FreeCADClient, check_server
31+
from morphe.adapters.freecad import FreeCADClient, check_server
3232

3333

3434
def print_status(client: FreeCADClient) -> None:
@@ -130,7 +130,7 @@ def main() -> None:
130130
formatter_class=argparse.RawDescriptionHelpFormatter,
131131
epilog="""
132132
To start the server in FreeCAD:
133-
>>> from adapter_freecad import start_server
133+
>>> from morphe.adapters.freecad import start_server
134134
>>> start_server()
135135
""",
136136
)
@@ -168,7 +168,7 @@ def main() -> None:
168168
if not check_server(args.host, args.port, timeout=2.0):
169169
print("\nError: Cannot connect to FreeCAD RPC server.")
170170
print("\nMake sure FreeCAD is running and the server is started:")
171-
print(" >>> from adapter_freecad import start_server")
171+
print(" >>> from morphe.adapters.freecad import start_server")
172172
print(" >>> start_server()")
173173
sys.exit(1)
174174

core/__init__.py renamed to morphe/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Inventor, Fusion 360).
77
88
Example usage:
9-
from core import (
9+
from morphe import (
1010
SketchDocument, Point2D, Line, Arc, Circle, Ellipse, EllipticalArc, Spline,
1111
Coincident, Tangent, Horizontal, Radius,
1212
PointRef, PointType,
File renamed without changes.

morphe/adapters/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
Morphe CAD Adapters
3+
4+
This package contains adapters for various CAD applications:
5+
- common: Shared client/server infrastructure
6+
- freecad: FreeCAD adapter
7+
- fusion: Autodesk Fusion 360 adapter
8+
- inventor: Autodesk Inventor adapter
9+
- solidworks: SolidWorks adapter
10+
"""
11+
12+
from . import common, freecad, fusion, inventor, solidworks
13+
14+
__all__ = ["common", "freecad", "fusion", "inventor", "solidworks"]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import xmlrpc.client
1313
from typing import Any, ClassVar
1414

15-
from core import SketchDocument, sketch_from_json, sketch_to_json
15+
from morphe import SketchDocument, sketch_from_json, sketch_to_json
1616

1717
DEFAULT_HOST = "localhost"
1818
DEFAULT_TIMEOUT = 30.0 # Longer timeout for sketch operations

0 commit comments

Comments
 (0)