# nc-hops

## Abstract

`nc-hops` is a Python package designed to facilitate the creation, reading, and manipulation of `.hop` files, which are primarily used with Hops, a Computer-Aided Manufacturing (CAM) software for CNC machines. The package enables users to seamlessly load, edit, and write `.hop` files while preserving all relevant content, ensuring compatibility with different CNC machines.

Any unfamiliar content encountered within `.hop` files is gracefully ignored but retained for future modifications, enabling robust handling of files generated by various software applications.

## Quick-Info

- `nc-hops` is a Python package for creating, reading, modifying, and writing `.hop` files.
- **License**: MIT License
- **Intended Audience**: Programmers, CNC Machine Operators, and CAM Software Users
- **Python Compatibility**: Requires at least Python 3.6
- **OS Compatibility**: OS Independent
- **Dependencies**: 
  - Pillow
  - numpy
  - setuptools
  - smbprotocol
  - chardet

- **Current Capabilities**:
  - Reading and extracting elements from `.hop` files.
  - Writing `.hop` files with support for Milling, Drilling, Machine, and Nesting operations.
- **Supported `.hop` Content**: Supports read/write operations for most known versions of `.hop` files.

## Installation

To install the `nc-hops` package, run the following command:
```bash
python -m pip install nc-hops
```

For advanced usage or development, you can clone it from the repository and use the command:
```bash 
python -m pip install .
```

## Usage

### Reading `.hop` Files

Extract various elements such as variables, comments, and processing details from `.hop` files using the `ReadHop` module.

### Writing `.hop` Files

Utilize the `WriteHop` module to create `.hop` files with support for:
- **Milling Operations**: Create and customize milling operations.
- **Drilling Operations**: Define drilling operations with precise parameters.
- **Machine Setup**: Configure machine-specific settings.
- **Nesting Operations**: Optimize material usage through nesting.

## Examples
For more detailed examples of how to use nc-hops for reading and writing .hop files, please refer to the example scripts available in the [repository](https://github.com/apers0/nc-hops).

## Project Status

Ongoing - Actively developed 

## Contributors

- **Nikola Brajic** - [nikolabrajic@proton.me](mailto:nikolabrajic@proton.me)
- **Igor Pekovic** - [igor.pekovic95@gmail.com](mailto:igor.pekovic95@gmail.com)
- **Aleksa Marceta** - [aleksa.marceta@gmail.com](mailto:aleksa.marceta@gmail.com)

## Feedback and Contribution

Questions and feedback can be directed to the project's contributors via their email addresses. Contributions are welcome; please fork the repository and submit a pull request with your improvements.

## License

This project is licensed under the MIT License.

## Contact

For questions, feature requests, or bug reports, please contact:
- Nikola Brajic - [nikolabrajic@proton.me](mailto:nikolabrajic@proton.me)

