STEP export: Support overriding header metadata
- Dominant language
- Python
- Stars
- 5.8k
- Forks
- 541
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 5
Description
When exporting STEP files like that (an assembly in my case):
```python
assembly = cq.Assembly(name='foo')
# assembly.add(...)
assembly.save('out.step', 'STEP')
```
The exported file contains some metadata in the header:
```
FILE_DESCRIPTION(('Open CASCADE Model'),'2;1');
FILE_NAME('Open CASCADE Shape Model','2023-09-01T11:49:38',('Author'),(
'Open CASCADE'),'Open CASCADE STEP processor 7.7','Open CASCADE 7.7'
,'Unknown');
```
It would be nice to make this medatada configurable. The most important part for us is the timestamp to allow generating deterministic output from [`librepcb-parts-generator`](https://github.com/LibrePCB/librepcb-parts-generator), but of course it would also make sense to override other metadata.
In C++ I do it like that (it works for me, but I'm not an OCC expert):
```cpp
STEPCAFControl_Writer writer;
writer.SetColorMode(Standard_True);
writer.SetNameMode(Standard_True);
APIHeaderSection_MakeHeader hdr(writer.ChangeWriter().Model());
hdr.SetDescriptionValue(1, new TCollection_HAsciiString("PCB Assembly"));
hdr.SetName(new TCollection_HAsciiString("my project"));
hdr.SetAuthorValue(1, new TCollection_HAsciiString(""));
hdr.SetOrganizationValue(1, new TCollection_HAsciiString(""));
hdr.SetOriginatingSystem(new TCollection_HAsciiString("LibrePCB"));
hdr.SetTimeStamp(new TCollection_HAsciiString("2000-01-01T00:00:00"));
```
Links to OCCT documentation:
* [`APIHeaderSection_MakeHeader`](https://old.opencascade.com/doc/occt-7.5.0/refman/html/class_a_p_i_header_section___make_header.html)
* [`STEPCAFControl_Writer`](https://old.opencascade.com/doc/occt-7.5.0/refman/html/class_s_t_e_p_c_a_f_control___writer.html)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.