Blender3mfFormat
Blender3mfFormat copied to clipboard
Modernization Fork Available: Blender 4.2+ Compatibility (Not for Direct Merge)
Hello,
This PR is informational only - not intended for direct merging. I wanted to make you and the community aware that a modernized fork is available for users who need Blender 4.2+ support.
Purpose of This PR
- Alert users searching for Blender 4.x compatibility that a working version exists
- Provide a reference for the changes needed to support modern Blender
- Make the fork discoverable for those who need it now
- Offer the work back to you if/when you return to active development to the add-on
Fork Location
Repository: https://github.com/Clonephaze/Blender3mfFormat
Branch: CriticalFixesFirst
Status: Production-ready, fully tested
📊 What Was Modernized
Core Compatibility
- Blender 4.2, 4.3, 4.5, 5.0α - Full compatibility verified
- Python 3.11+ - Updated for modern Python
- Blender Extensions - Uses new manifest format (blender_manifest.toml)
Critical API Updates
- Removed deprecated
__init__()methods from operators (Blender 4.2+ requirement) - Verified
PrincipledBSDFWrappercompatibility - Verified
mesh.loop_trianglesAPI - Verified
evaluated_depsgraph_get()API
Testing Infrastructure
- 142 unit tests - All updated and passing (Python 3.11)
- 16 integration tests - Real Blender functionality tests
- CI/CD - GitHub Actions running automatically
- Cross-platform test runners - PowerShell (Windows) + Bash (macOS/Linux)
Code Quality Improvements
- Complete type hints across all modules (100% coverage)
- Replaced wildcard imports with explicit imports
- Modern f-string formatting throughout
-
__all__exports for clear public API - User-visible error/warning messages via
self.report() - Warning deduplication to prevent UI spam
⚠️ Why Not Merge Directly?
This fork includes changes that are specific to my workflow and may not align with your vision:
Documentation Changes (Fork-Specific)
- Modified README with fork-specific information
- Updated CONTRIBUTING.md to reflect to test suite
- Added my testing documentation
Structural Choices (Debatable)
- Comprehensive type hints (you may prefer different typing approach)
- Specific error reporting patterns
- Code style choices (f-strings, etc.)
Testing Approach (Different Philosophy)
- My test infrastructure setup
- Specific mock patterns
- CI/CD configuration choices
What You Might Want to Cherry-Pick
If you return to development, these changes are universally needed for Blender 4.2+:
Essential (Required for Blender 4.2+)
# OLD (Breaks in Blender 4.2+)
class Export3MF(bpy.types.Operator):
def __init__(self):
self.resource_id = 1
# NEW (Required for Blender 4.2+)
class Export3MF(bpy.types.Operator):
def execute(self, context):
self.resource_id = 1 # Initialize in execute()