Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Feature/phase1 custom objects - #3

#3
Merged
buildsmart888 merged 12 commits into
mainbuildsmart888/StructureTools-Enhanced:mainfrom
feature/phase1-custom-objectsbuildsmart888/StructureTools-Enhanced:feature/phase1-custom-objectsCopy head branch name to clipboard
Sep 6, 2025
Merged

Feature/phase1 custom objects#3
buildsmart888 merged 12 commits into
mainbuildsmart888/StructureTools-Enhanced:mainfrom
feature/phase1-custom-objectsbuildsmart888/StructureTools-Enhanced:feature/phase1-custom-objectsCopy head branch name to clipboard

Conversation

@buildsmart888

Copy link
Copy Markdown
Owner

This pull request introduces extensive documentation and configuration updates to support new structural analysis features and BIM integration in the StructureTools FreeCAD module. The changes include implementation summaries, bug fix documentation, user and developer guides for BIM integration, and new CI/CD configuration for Python testing. These updates improve code robustness, clarify area load capabilities, and provide comprehensive instructions for BIM workflows.

Documentation for New Features and Bug Fixes

  • Added AREA_LOAD_IMPLEMENTATION_SUMMARY.md detailing the completed area load implementation, including distribution methods, pressure calculations, coordinate mapping, and validation/testing results.
  • Added AREA_LOAD_PLATE_FIXES.md summarizing bug fixes for AreaLoad and StructuralPlate classes, focusing on property checks, initialization robustness, error handling, and code structure improvements.

BIM Integration Documentation

  • Added BIM_INTEGRATION_GUIDE.md, a comprehensive user guide (in Thai) for BIM integration workflows, covering import/export procedures, synchronization, troubleshooting, toolbar commands, and Python API usage.
  • Added BIM_INTEGRATION_SUMMARY.md, summarizing the BIM integration module's development, key features, workflow support, integration points, and future enhancements.

Configuration and CI/CD

  • Added .claude/settings.local.json to define permissions for test execution and web fetch operations, improving local development and automation security.
  • Added .github/workflows/python-app.yml to enable GitHub Actions CI for Python package testing, including dependency installation and pytest execution.

buildsmart888 and others added 12 commits August 25, 2025 10:25
…ities

- Implemented `command_modal_analysis.py` for performing modal analysis on structural models, including a dialog for parameter setup and result visualization.
- Created `command_plate.py` for generating structural plate elements from selected faces, with properties and boundary conditions.
- Introduced a utilities package in `utils/__init__.py` for error handling and validation.
- Defined custom exceptions in `utils/exceptions.py` for structured error management.
- Developed comprehensive validation functions in `utils/validation.py` for material properties, geometric properties, load applications, and structural model integrity.
- Implemented unit tests for MaterialTaskPanel to validate initialization, UI form creation, material standard population, property validation, and integration with FreeCAD GUI.
- Created unit tests for PlatePropertiesPanel covering initialization, thickness validation, material assignment, mesh parameters, and visualization features.
- Developed tests for calc module, including member results structure and export functionality to JSON and CSV formats.
- Added tests for diagram core functionalities, including ordinates separation, coordinate generation, and loop normalization.
- Implemented integration tests for diagram creation, ensuring proper interaction with FreeCAD's Part module.
- Created tests for text specification generation from diagram labels.
- Implemented a comprehensive test runner in `run_comprehensive_tests.py` to execute and summarize test suites for BIM Integration, Material Database, and Load Generator.
- Created a detailed test suite in `test_phase_one_completion.py` covering critical components: StructuralPlate, AreaLoad, and Surface Meshing Integration.
- Developed a verification script in `verify_phase_one.py` to check the implementation of Phase 1 components, enhanced features, documentation, and test coverage.
- Ensured robust error handling and informative output for test results and verification status.
…tural analysis

- Add missing NumPoints properties to Calc class with appropriate defaults
- Initialize ReactionLoadCombo property with valid enumeration values and default
- Implement robust error handling for ReactionLoadCombo assignments to prevent ValueError
- Enhance self-weight application on members with detailed logging and fallback mechanism
- Replace direct FreeCAD module imports with App alias and provide comprehensive stubs for testing
- Refactor load application to consider load factors and directions correctly for all load types
- Improve support condition assignment with better matching logic and detailed message logging
- Add new properties and improve property enumeration for reaction display customization
- Update documentation and test scripts for verification of fixes and new features
…gration

- Fix LoadCombination not affecting analysis results
- Separate load cases from load combinations in Pynite
- Load all loads with factor 1.0 and specify proper load cases (DL, LL, W, E, etc.)
- Create load combinations with correct factors for Pynite analysis
- Fix PhysMember distributed_loads error by accessing sub_members
- Add comprehensive error handling and debug messages
- Fix NameError for active_loads variable
- Add proper load_cases debugging with model.load_cases property

Now LoadCombination changes (e.g., 100_DL vs 1000_1.4DL) properly affect analysis results.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…rt nodes

- Implement reaction text display updated on property changes and data refresh
- Create 3D text objects showing reaction forces and moments per support node
- Support text customization: precision, offset, font size, and load combination
- Use multiple fallback methods to create text objects: Part, Draft, annotation
- Clear existing reaction texts before updating display to avoid duplicates
- Implement error handling and debug prints for text creation and updates
- Add shear force unit handling in diagram unit assignment
- Implement print_detailed_reaction_info method to output node reaction details
- Print reaction forces, moments, support conditions, and coordinates in console
- Summarize total reaction forces for all supported nodes
- Add a read-only QTextEdit widget for detailed reaction info display in UI
- Populate detailed reaction text area with formatted node reactions and totals
- Ensure detailed info updates when load combination changes in reaction table panel
- Maintain unit system consistency and error handling in reaction info output
… distributed load enhancements

- Implement point load handling in calc.py with position and moment axis adjustments
- Add start and end position properties to distributed loads for partial application
- Modify load visualization in load_distributed.py to respect partial load positions
- Replace match-case with if-elif for compatibility in load_distributed arrow rotations
- Register load_point command and import in init_gui.py toolbars and menus
- Create comprehensive test script for LoadPoint class and verify integration
- Verify presence of point load handling code and load_point icon resource files
- Store FE model as attribute for testing access
- Improve pressure magnitude extraction by prioritizing LoadIntensity over Magnitude
- Normalize and map load direction vectors with fallback and coordinate system adjustments
- Compute effective pressure on each face considering load direction vs face normal
- Support one-way, two-way, and open structure load distribution with detailed edge factor calculations
- Apply calculated pressures to plates and meshed quads accordingly with error handling and messages
- Clean up previous fallback methods with enriched processing of target faces

fix(load_distributed): improve distributed load visualization and user feedback

- Interpret StartPosition=0 and EndPosition=0 as full member length for distributed loads
- Normalize and use unit direction vectors to calculate arrow positions
- Generate arrows scaled and rotated based on interpolated load values and global direction
- Warn users and swap StartPosition and EndPosition if start is greater than end
- Validate negative StartPosition and EndPosition and reset to zero with warnings
- Provide single arrow fallback when no valid length segment is specified

fix(load_distributed): enhance selection validation and error reporting

- Add multilingual error messages supporting Thai and English in GUI dialogs
- Validate user selection to ensure lines (edges) are selected for distributed load creation
- Skip invalid selections with corresponding user warnings
- Handle empty selections gracefully with prompt to select lines
- Verify selected objects have valid shapes and edges before creating loads
- Add exception handling for unexpected errors during load creation with multilingual messages

fix(load_nodal): improve error handling and shape assignment

- Add multilingual error messages for invalid vertex selections
- Assign placement, shape, and display mode only when shape is valid
- Avoid silent failures by providing feedback if non-vertex selections are attempted
…ts visualization

- Provide overview of reaction forces (FX, FY, FZ) and moments (MX, MY, MZ) visualization
- Describe GUI method with step-by-step instructions for analysis and display configuration
- Include Python scripting examples for creating and modifying reaction visualizations
- Detail customization options in reaction table and property panel settings
- Explain coordinate system mappings and arrow creation methods
- Outline common issues with troubleshooting advice
- Suggest enhancement ideas for future improvements
- Add Thai language support for reaction labels with formatting and font adjustments
…ling robustness

- Add support for resultant reaction displays and combined force/moment vectors
- Implement auto-scaling of reaction arrows based on model size
- Introduce color gradient mapping for reactions by magnitude with configurable colors
- Add filtering options for displaying only maximum or significant reactions
- Improve label localization support with language selection (English/Thai)
- Enhance distributed load handling with robust subelement retrieval and error checks
- Fix arrow visualization for distributed loads with start/end position validation and swapping
- Add exception handling and warnings for invalid subelement indices in distributed and point loads
- Extend point load execution for robust subelement access and safer vector calculations
- Integrate new text-based visualization command into GUI toolbars and menus
- Update reaction visualization guide with detailed usage of advanced visualization features
- Add serialization handling (__getstate__ and __setstate__) to ViewProviderCalc for safer state saving
- Implement notification of ReactionResults updates on LoadCombination property changes in Calc
- Enhance ViewProviderCalc.updateData to trigger reaction results refresh on load combination update
- Add checks for object existence before reaction text updates to avoid errors
- Improve CommandViewReactionTable to better detect presence of analysis and reaction data
- Add user warning and option if reaction data is missing when opening reaction table
- Refactor ReportGeneratorDialog to use updated ReportMetadata and support full report data collection
- Implement detailed report data extraction covering model stats, reactions, members, loads, and design
- Modify ReactionResults to sync ActiveLoadCombination from linked Calc object and auto-update display
- Convert Pynite coordinates to FreeCAD coordinate system with unit scaling for reaction visualization
- Consolidate reaction force and moment labels into combined labels for clarity
- Refine reaction visualization arrow colors and labels for better display and user customization
- Remove unused or obsolete imports and toolbar/menu items from init_gui for cleaner UI setup
- Fix error logging references to use correct FreeCAD alias for consistent messages
- Improve reaction display options with adaptive label updates when properties change
- Add safe attribute checks in reaction visualization to avoid crashes with missing data
- Rename several properties for clarity and update comments to describe changes and enhancements
@buildsmart888

Copy link
Copy Markdown
Owner Author

This pull request introduces comprehensive documentation and configuration updates to support new structural features and BIM integration workflows. The most important changes include detailed summaries of the area load implementation and bug fixes, extensive BIM integration guides and summaries, and the addition of a Python workflow for automated testing. These changes improve clarity, robustness, and usability for both developers and end users.

Area Load Implementation and Bug Fixes

  • Added AREA_LOAD_IMPLEMENTATION_SUMMARY.md documenting the completed area load features, technical details, validation, and testing results for the StructureTools FreeCAD module.
  • Added AREA_LOAD_PLATE_FIXES.md summarizing bug fixes to AreaLoad and StructuralPlate classes, including property access safeguards, initialization robustness, and enhanced error handling.

BIM Integration Documentation

  • Added BIM_INTEGRATION_GUIDE.md, a detailed user guide (in Thai) for the BIM integration workflow, including import/export procedures, synchronization, toolbar commands, troubleshooting, and API usage examples.
  • Added BIM_INTEGRATION_SUMMARY.md, summarizing the completed BIM integration features, core capabilities, integration points, supported workflows, testing, installation, and future development plans.

CI/CD and Configuration

  • Added .github/workflows/python-app.yml to enable automated Python package testing on GitHub Actions, ensuring code reliability through continuous integration.
  • Added .claude/settings.local.json specifying allowed and denied command permissions for local development and testing environments.

@buildsmart888
buildsmart888 merged commit 5be8348 into main Sep 6, 2025
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.