cq-jt 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cq_jt-0.3.0/Cargo.lock +350 -0
- cq_jt-0.3.0/Cargo.toml +15 -0
- cq_jt-0.3.0/LICENSE +21 -0
- cq_jt-0.3.0/PKG-INFO +126 -0
- cq_jt-0.3.0/README.md +76 -0
- cq_jt-0.3.0/THIRD_PARTY_NOTICES.md +64 -0
- cq_jt-0.3.0/crates/cq-jt-py/Cargo.toml +18 -0
- cq_jt-0.3.0/crates/cq-jt-py/LICENSE +21 -0
- cq_jt-0.3.0/crates/cq-jt-py/src/export.rs +47 -0
- cq_jt-0.3.0/crates/cq-jt-py/src/lib.rs +307 -0
- cq_jt-0.3.0/crates/cq-jt-py/src/mesh.rs +118 -0
- cq_jt-0.3.0/crates/cq-jt-py/src/structure.rs +166 -0
- cq_jt-0.3.0/crates/jt-core/Cargo.toml +20 -0
- cq_jt-0.3.0/crates/jt-core/LICENSE +21 -0
- cq_jt-0.3.0/crates/jt-core/README.md +127 -0
- cq_jt-0.3.0/crates/jt-core/src/compression.rs +438 -0
- cq_jt-0.3.0/crates/jt-core/src/container.rs +565 -0
- cq_jt-0.3.0/crates/jt-core/src/error.rs +91 -0
- cq_jt-0.3.0/crates/jt-core/src/export/geometry.rs +167 -0
- cq_jt-0.3.0/crates/jt-core/src/export/glb.rs +667 -0
- cq_jt-0.3.0/crates/jt-core/src/export/material.rs +126 -0
- cq_jt-0.3.0/crates/jt-core/src/export/mod.rs +124 -0
- cq_jt-0.3.0/crates/jt-core/src/export/output.rs +87 -0
- cq_jt-0.3.0/crates/jt-core/src/io.rs +56 -0
- cq_jt-0.3.0/crates/jt-core/src/lib.rs +329 -0
- cq_jt-0.3.0/crates/jt-core/src/limits.rs +42 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/codec.rs +791 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/hash.rs +55 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/mod.rs +95 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/reader.rs +547 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/resolver.rs +661 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/scene.rs +440 -0
- cq_jt-0.3.0/crates/jt-core/src/mesh/topology.rs +587 -0
- cq_jt-0.3.0/crates/jt-core/src/payload.rs +358 -0
- cq_jt-0.3.0/crates/jt-core/src/structure/mod.rs +77 -0
- cq_jt-0.3.0/crates/jt-core/src/structure/reader.rs +995 -0
- cq_jt-0.3.0/crates/jt-core/src/structure/resolve.rs +732 -0
- cq_jt-0.3.0/crates/jt-core/src/structure/value.rs +242 -0
- cq_jt-0.3.0/crates/jt-py-bridge/Cargo.toml +18 -0
- cq_jt-0.3.0/crates/jt-py-bridge/LICENSE +21 -0
- cq_jt-0.3.0/crates/jt-py-bridge/README.md +25 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/export.rs +173 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/inspect.rs +203 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/lib.rs +333 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/mesh.rs +216 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/payload.rs +125 -0
- cq_jt-0.3.0/crates/jt-py-bridge/src/structure.rs +204 -0
- cq_jt-0.3.0/docs/README.md +11 -0
- cq_jt-0.3.0/docs/compatibility.md +54 -0
- cq_jt-0.3.0/docs/model-api.md +298 -0
- cq_jt-0.3.0/examples/README.md +15 -0
- cq_jt-0.3.0/examples/convert_to_glb.py +36 -0
- cq_jt-0.3.0/licenses/adler2-2.0.1-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/block-buffer-0.10.4-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/cfg-if-1.0.5-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/cpufeatures-0.2.17-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/crc32fast-1.5.0-LICENSE-MIT.txt +21 -0
- cq_jt-0.3.0/licenses/crypto-common-0.1.7-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/digest-0.10.7-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/flate2-1.1.10-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/generic-array-0.14.7-LICENSE.txt +21 -0
- cq_jt-0.3.0/licenses/heck-0.5.0-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/itoa-1.0.18-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/libc-0.2.191-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/lzma-rust2-0.15.8-LICENSE.txt +201 -0
- cq_jt-0.3.0/licenses/manifest.json +299 -0
- cq_jt-0.3.0/licenses/memchr-2.8.3-LICENSE-MIT.txt +21 -0
- cq_jt-0.3.0/licenses/miniz_oxide-0.9.1-LICENSE-MIT.txt +24 -0
- cq_jt-0.3.0/licenses/once_cell-1.21.4-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/portable-atomic-1.15.0-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/proc-macro2-1.0.107-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/pyo3-0.29.2-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/pyo3-build-config-0.29.2-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/pyo3-ffi-0.29.2-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/pyo3-macros-0.29.2-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/pyo3-macros-backend-0.29.2-LICENSE-MIT.txt +25 -0
- cq_jt-0.3.0/licenses/quote-1.0.47-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/serde-1.0.229-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/serde_core-1.0.229-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/serde_derive-1.0.229-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/serde_json-1.0.154-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/sha2-0.10.9-LICENSE-MIT.txt +27 -0
- cq_jt-0.3.0/licenses/simd-adler32-0.3.10-LICENSE.txt +21 -0
- cq_jt-0.3.0/licenses/syn-2.0.119-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/syn-3.0.9-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/target-lexicon-0.13.5-LICENSE.txt +220 -0
- cq_jt-0.3.0/licenses/typenum-1.20.1-LICENSE-MIT.txt +21 -0
- cq_jt-0.3.0/licenses/unicode-ident-1.0.27-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/licenses/unicode-ident-1.0.27-LICENSE-UNICODE.txt +39 -0
- cq_jt-0.3.0/licenses/version_check-0.9.5-LICENSE-MIT.txt +19 -0
- cq_jt-0.3.0/licenses/zmij-1.0.23-LICENSE-MIT.txt +23 -0
- cq_jt-0.3.0/pyproject.toml +45 -0
- cq_jt-0.3.0/src/cq_jt/__init__.py +62 -0
- cq_jt-0.3.0/src/cq_jt/__main__.py +210 -0
- cq_jt-0.3.0/src/cq_jt/_native.pyi +120 -0
- cq_jt-0.3.0/src/cq_jt/api.py +96 -0
- cq_jt-0.3.0/src/cq_jt/arrays.py +9 -0
- cq_jt-0.3.0/src/cq_jt/container.py +110 -0
- cq_jt-0.3.0/src/cq_jt/docs/README.md +11 -0
- cq_jt-0.3.0/src/cq_jt/docs/compatibility.md +54 -0
- cq_jt-0.3.0/src/cq_jt/docs/model-api.md +298 -0
- cq_jt-0.3.0/src/cq_jt/errors.py +38 -0
- cq_jt-0.3.0/src/cq_jt/export.py +59 -0
- cq_jt-0.3.0/src/cq_jt/mesh.py +134 -0
- cq_jt-0.3.0/src/cq_jt/model.py +77 -0
- cq_jt-0.3.0/src/cq_jt/payload.py +32 -0
- cq_jt-0.3.0/src/cq_jt/py.typed +0 -0
- cq_jt-0.3.0/src/cq_jt/structure.py +209 -0
- cq_jt-0.3.0/uv.lock +103 -0
cq_jt-0.3.0/Cargo.lock
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "adler2"
|
|
7
|
+
version = "2.0.1"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "block-buffer"
|
|
13
|
+
version = "0.10.4"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"generic-array",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[[package]]
|
|
21
|
+
name = "cfg-if"
|
|
22
|
+
version = "1.0.5"
|
|
23
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
24
|
+
checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
|
|
25
|
+
|
|
26
|
+
[[package]]
|
|
27
|
+
name = "cpufeatures"
|
|
28
|
+
version = "0.2.17"
|
|
29
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
30
|
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
|
|
31
|
+
dependencies = [
|
|
32
|
+
"libc",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[[package]]
|
|
36
|
+
name = "cq-jt-py"
|
|
37
|
+
version = "0.3.0"
|
|
38
|
+
dependencies = [
|
|
39
|
+
"jt-core",
|
|
40
|
+
"jt-py-bridge",
|
|
41
|
+
"pyo3",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[[package]]
|
|
45
|
+
name = "crc32fast"
|
|
46
|
+
version = "1.5.0"
|
|
47
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
48
|
+
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
|
|
49
|
+
dependencies = [
|
|
50
|
+
"cfg-if",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[[package]]
|
|
54
|
+
name = "crypto-common"
|
|
55
|
+
version = "0.1.7"
|
|
56
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
57
|
+
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
|
|
58
|
+
dependencies = [
|
|
59
|
+
"generic-array",
|
|
60
|
+
"typenum",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
[[package]]
|
|
64
|
+
name = "digest"
|
|
65
|
+
version = "0.10.7"
|
|
66
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
67
|
+
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
|
68
|
+
dependencies = [
|
|
69
|
+
"block-buffer",
|
|
70
|
+
"crypto-common",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
[[package]]
|
|
74
|
+
name = "flate2"
|
|
75
|
+
version = "1.1.10"
|
|
76
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
77
|
+
checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
|
|
78
|
+
dependencies = [
|
|
79
|
+
"crc32fast",
|
|
80
|
+
"miniz_oxide",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "generic-array"
|
|
85
|
+
version = "0.14.7"
|
|
86
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
87
|
+
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
|
88
|
+
dependencies = [
|
|
89
|
+
"typenum",
|
|
90
|
+
"version_check",
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
[[package]]
|
|
94
|
+
name = "heck"
|
|
95
|
+
version = "0.5.0"
|
|
96
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
97
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
98
|
+
|
|
99
|
+
[[package]]
|
|
100
|
+
name = "itoa"
|
|
101
|
+
version = "1.0.18"
|
|
102
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
103
|
+
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
104
|
+
|
|
105
|
+
[[package]]
|
|
106
|
+
name = "jt-core"
|
|
107
|
+
version = "0.3.0"
|
|
108
|
+
dependencies = [
|
|
109
|
+
"crc32fast",
|
|
110
|
+
"flate2",
|
|
111
|
+
"lzma-rust2",
|
|
112
|
+
"serde_json",
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
[[package]]
|
|
116
|
+
name = "jt-py-bridge"
|
|
117
|
+
version = "0.3.0"
|
|
118
|
+
dependencies = [
|
|
119
|
+
"jt-core",
|
|
120
|
+
"pyo3",
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
[[package]]
|
|
124
|
+
name = "libc"
|
|
125
|
+
version = "0.2.191"
|
|
126
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
127
|
+
checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
|
|
128
|
+
|
|
129
|
+
[[package]]
|
|
130
|
+
name = "lzma-rust2"
|
|
131
|
+
version = "0.15.8"
|
|
132
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
133
|
+
checksum = "e20f57f9918e5bd7bc58c22cdd70a6afc7375d4dd9683af5f2b34bd3d2bba619"
|
|
134
|
+
dependencies = [
|
|
135
|
+
"sha2",
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
[[package]]
|
|
139
|
+
name = "memchr"
|
|
140
|
+
version = "2.8.3"
|
|
141
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
142
|
+
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
143
|
+
|
|
144
|
+
[[package]]
|
|
145
|
+
name = "miniz_oxide"
|
|
146
|
+
version = "0.9.1"
|
|
147
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
148
|
+
checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
|
|
149
|
+
dependencies = [
|
|
150
|
+
"adler2",
|
|
151
|
+
"simd-adler32",
|
|
152
|
+
]
|
|
153
|
+
|
|
154
|
+
[[package]]
|
|
155
|
+
name = "once_cell"
|
|
156
|
+
version = "1.21.4"
|
|
157
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
158
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
159
|
+
|
|
160
|
+
[[package]]
|
|
161
|
+
name = "portable-atomic"
|
|
162
|
+
version = "1.15.0"
|
|
163
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
164
|
+
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
|
165
|
+
|
|
166
|
+
[[package]]
|
|
167
|
+
name = "proc-macro2"
|
|
168
|
+
version = "1.0.107"
|
|
169
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
170
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
171
|
+
dependencies = [
|
|
172
|
+
"unicode-ident",
|
|
173
|
+
]
|
|
174
|
+
|
|
175
|
+
[[package]]
|
|
176
|
+
name = "pyo3"
|
|
177
|
+
version = "0.29.2"
|
|
178
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
179
|
+
checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
|
|
180
|
+
dependencies = [
|
|
181
|
+
"libc",
|
|
182
|
+
"once_cell",
|
|
183
|
+
"portable-atomic",
|
|
184
|
+
"pyo3-build-config",
|
|
185
|
+
"pyo3-ffi",
|
|
186
|
+
"pyo3-macros",
|
|
187
|
+
]
|
|
188
|
+
|
|
189
|
+
[[package]]
|
|
190
|
+
name = "pyo3-build-config"
|
|
191
|
+
version = "0.29.2"
|
|
192
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
193
|
+
checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
|
|
194
|
+
dependencies = [
|
|
195
|
+
"target-lexicon",
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
[[package]]
|
|
199
|
+
name = "pyo3-ffi"
|
|
200
|
+
version = "0.29.2"
|
|
201
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
202
|
+
checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
|
|
203
|
+
dependencies = [
|
|
204
|
+
"libc",
|
|
205
|
+
"pyo3-build-config",
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
[[package]]
|
|
209
|
+
name = "pyo3-macros"
|
|
210
|
+
version = "0.29.2"
|
|
211
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
212
|
+
checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
|
|
213
|
+
dependencies = [
|
|
214
|
+
"proc-macro2",
|
|
215
|
+
"pyo3-macros-backend",
|
|
216
|
+
"quote",
|
|
217
|
+
"syn 2.0.119",
|
|
218
|
+
]
|
|
219
|
+
|
|
220
|
+
[[package]]
|
|
221
|
+
name = "pyo3-macros-backend"
|
|
222
|
+
version = "0.29.2"
|
|
223
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
224
|
+
checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
|
|
225
|
+
dependencies = [
|
|
226
|
+
"heck",
|
|
227
|
+
"proc-macro2",
|
|
228
|
+
"quote",
|
|
229
|
+
"syn 2.0.119",
|
|
230
|
+
]
|
|
231
|
+
|
|
232
|
+
[[package]]
|
|
233
|
+
name = "quote"
|
|
234
|
+
version = "1.0.47"
|
|
235
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
236
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
237
|
+
dependencies = [
|
|
238
|
+
"proc-macro2",
|
|
239
|
+
]
|
|
240
|
+
|
|
241
|
+
[[package]]
|
|
242
|
+
name = "serde"
|
|
243
|
+
version = "1.0.229"
|
|
244
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
245
|
+
checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
|
|
246
|
+
dependencies = [
|
|
247
|
+
"serde_core",
|
|
248
|
+
]
|
|
249
|
+
|
|
250
|
+
[[package]]
|
|
251
|
+
name = "serde_core"
|
|
252
|
+
version = "1.0.229"
|
|
253
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
254
|
+
checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
|
|
255
|
+
dependencies = [
|
|
256
|
+
"serde_derive",
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
[[package]]
|
|
260
|
+
name = "serde_derive"
|
|
261
|
+
version = "1.0.229"
|
|
262
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
263
|
+
checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
|
|
264
|
+
dependencies = [
|
|
265
|
+
"proc-macro2",
|
|
266
|
+
"quote",
|
|
267
|
+
"syn 3.0.9",
|
|
268
|
+
]
|
|
269
|
+
|
|
270
|
+
[[package]]
|
|
271
|
+
name = "serde_json"
|
|
272
|
+
version = "1.0.154"
|
|
273
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
274
|
+
checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
|
|
275
|
+
dependencies = [
|
|
276
|
+
"itoa",
|
|
277
|
+
"memchr",
|
|
278
|
+
"serde",
|
|
279
|
+
"serde_core",
|
|
280
|
+
"zmij",
|
|
281
|
+
]
|
|
282
|
+
|
|
283
|
+
[[package]]
|
|
284
|
+
name = "sha2"
|
|
285
|
+
version = "0.10.9"
|
|
286
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
287
|
+
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
|
|
288
|
+
dependencies = [
|
|
289
|
+
"cfg-if",
|
|
290
|
+
"cpufeatures",
|
|
291
|
+
"digest",
|
|
292
|
+
]
|
|
293
|
+
|
|
294
|
+
[[package]]
|
|
295
|
+
name = "simd-adler32"
|
|
296
|
+
version = "0.3.10"
|
|
297
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
298
|
+
checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
|
|
299
|
+
|
|
300
|
+
[[package]]
|
|
301
|
+
name = "syn"
|
|
302
|
+
version = "2.0.119"
|
|
303
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
304
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
305
|
+
dependencies = [
|
|
306
|
+
"proc-macro2",
|
|
307
|
+
"quote",
|
|
308
|
+
"unicode-ident",
|
|
309
|
+
]
|
|
310
|
+
|
|
311
|
+
[[package]]
|
|
312
|
+
name = "syn"
|
|
313
|
+
version = "3.0.9"
|
|
314
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
315
|
+
checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
|
|
316
|
+
dependencies = [
|
|
317
|
+
"proc-macro2",
|
|
318
|
+
"quote",
|
|
319
|
+
"unicode-ident",
|
|
320
|
+
]
|
|
321
|
+
|
|
322
|
+
[[package]]
|
|
323
|
+
name = "target-lexicon"
|
|
324
|
+
version = "0.13.5"
|
|
325
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
326
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
327
|
+
|
|
328
|
+
[[package]]
|
|
329
|
+
name = "typenum"
|
|
330
|
+
version = "1.20.1"
|
|
331
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
332
|
+
checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
|
|
333
|
+
|
|
334
|
+
[[package]]
|
|
335
|
+
name = "unicode-ident"
|
|
336
|
+
version = "1.0.27"
|
|
337
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
338
|
+
checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563"
|
|
339
|
+
|
|
340
|
+
[[package]]
|
|
341
|
+
name = "version_check"
|
|
342
|
+
version = "0.9.5"
|
|
343
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
344
|
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
345
|
+
|
|
346
|
+
[[package]]
|
|
347
|
+
name = "zmij"
|
|
348
|
+
version = "1.0.23"
|
|
349
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
350
|
+
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
|
cq_jt-0.3.0/Cargo.toml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
members = ["crates/cq-jt-py"]
|
|
3
|
+
resolver = "2"
|
|
4
|
+
|
|
5
|
+
[workspace.package]
|
|
6
|
+
version = "0.3.0"
|
|
7
|
+
edition = "2021"
|
|
8
|
+
rust-version = "1.83"
|
|
9
|
+
license = "MIT"
|
|
10
|
+
repository = "https://github.com/monozukuri-ai/cq-jt"
|
|
11
|
+
|
|
12
|
+
[workspace.dependencies]
|
|
13
|
+
jt-core = { path = "crates/jt-core", version = "=0.3.0" }
|
|
14
|
+
jt-py-bridge = { path = "crates/jt-py-bridge", version = "=0.3.0" }
|
|
15
|
+
pyo3 = { version = "=0.29.2", features = ["abi3-py311"] }
|
cq_jt-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 monozukuri-ai contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
cq_jt-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cq-jt
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
License-File: LICENSE
|
|
5
|
+
License-File: THIRD_PARTY_NOTICES.md
|
|
6
|
+
License-File: licenses/adler2-2.0.1-LICENSE-MIT.txt
|
|
7
|
+
License-File: licenses/block-buffer-0.10.4-LICENSE-MIT.txt
|
|
8
|
+
License-File: licenses/cfg-if-1.0.5-LICENSE-MIT.txt
|
|
9
|
+
License-File: licenses/cpufeatures-0.2.17-LICENSE-MIT.txt
|
|
10
|
+
License-File: licenses/crc32fast-1.5.0-LICENSE-MIT.txt
|
|
11
|
+
License-File: licenses/crypto-common-0.1.7-LICENSE-MIT.txt
|
|
12
|
+
License-File: licenses/digest-0.10.7-LICENSE-MIT.txt
|
|
13
|
+
License-File: licenses/flate2-1.1.10-LICENSE-MIT.txt
|
|
14
|
+
License-File: licenses/generic-array-0.14.7-LICENSE.txt
|
|
15
|
+
License-File: licenses/heck-0.5.0-LICENSE-MIT.txt
|
|
16
|
+
License-File: licenses/itoa-1.0.18-LICENSE-MIT.txt
|
|
17
|
+
License-File: licenses/libc-0.2.191-LICENSE-MIT.txt
|
|
18
|
+
License-File: licenses/lzma-rust2-0.15.8-LICENSE.txt
|
|
19
|
+
License-File: licenses/memchr-2.8.3-LICENSE-MIT.txt
|
|
20
|
+
License-File: licenses/miniz_oxide-0.9.1-LICENSE-MIT.txt
|
|
21
|
+
License-File: licenses/once_cell-1.21.4-LICENSE-MIT.txt
|
|
22
|
+
License-File: licenses/portable-atomic-1.15.0-LICENSE-MIT.txt
|
|
23
|
+
License-File: licenses/proc-macro2-1.0.107-LICENSE-MIT.txt
|
|
24
|
+
License-File: licenses/pyo3-0.29.2-LICENSE-MIT.txt
|
|
25
|
+
License-File: licenses/pyo3-build-config-0.29.2-LICENSE-MIT.txt
|
|
26
|
+
License-File: licenses/pyo3-ffi-0.29.2-LICENSE-MIT.txt
|
|
27
|
+
License-File: licenses/pyo3-macros-0.29.2-LICENSE-MIT.txt
|
|
28
|
+
License-File: licenses/pyo3-macros-backend-0.29.2-LICENSE-MIT.txt
|
|
29
|
+
License-File: licenses/quote-1.0.47-LICENSE-MIT.txt
|
|
30
|
+
License-File: licenses/serde-1.0.229-LICENSE-MIT.txt
|
|
31
|
+
License-File: licenses/serde_core-1.0.229-LICENSE-MIT.txt
|
|
32
|
+
License-File: licenses/serde_derive-1.0.229-LICENSE-MIT.txt
|
|
33
|
+
License-File: licenses/serde_json-1.0.154-LICENSE-MIT.txt
|
|
34
|
+
License-File: licenses/sha2-0.10.9-LICENSE-MIT.txt
|
|
35
|
+
License-File: licenses/simd-adler32-0.3.10-LICENSE.txt
|
|
36
|
+
License-File: licenses/syn-2.0.119-LICENSE-MIT.txt
|
|
37
|
+
License-File: licenses/syn-3.0.9-LICENSE-MIT.txt
|
|
38
|
+
License-File: licenses/target-lexicon-0.13.5-LICENSE.txt
|
|
39
|
+
License-File: licenses/typenum-1.20.1-LICENSE-MIT.txt
|
|
40
|
+
License-File: licenses/unicode-ident-1.0.27-LICENSE-MIT.txt
|
|
41
|
+
License-File: licenses/unicode-ident-1.0.27-LICENSE-UNICODE.txt
|
|
42
|
+
License-File: licenses/version_check-0.9.5-LICENSE-MIT.txt
|
|
43
|
+
License-File: licenses/zmij-1.0.23-LICENSE-MIT.txt
|
|
44
|
+
License-File: licenses/manifest.json
|
|
45
|
+
Summary: Bounded JT reading and GLB export with a Rust core and Python bindings
|
|
46
|
+
License-Expression: MIT
|
|
47
|
+
Requires-Python: >=3.11
|
|
48
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
49
|
+
|
|
50
|
+
# cq-jt
|
|
51
|
+
|
|
52
|
+
A JT reader and GLB exporter with a Python-independent Rust core and thin Python bindings.
|
|
53
|
+
|
|
54
|
+
Read product structure, part placements, materials and selected triangle meshes from **JT 9.5, 10.0 and 10.3**. Inspect container boundaries, decode ZLIB/XZ streams, resolve local external JT references, and retain source information and opaque data.
|
|
55
|
+
|
|
56
|
+
JT 10.6 is available as an **explicit experimental opt-in**. Compatibility with native JT 10.6 exports has not been verified. See [compatibility and limitations](docs/compatibility.md).
|
|
57
|
+
|
|
58
|
+
## Requirements and installation
|
|
59
|
+
|
|
60
|
+
Python 3.11 or later is required. This project is under development and has not been published to PyPI.
|
|
61
|
+
|
|
62
|
+
To build from a source checkout, install Rust 1.83 or later and [uv](https://docs.astral.sh/uv/), then run:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
uv sync --locked --group dev
|
|
66
|
+
uv run python -m cq_jt --help
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
To install a locally built wheel, use `python -m pip install /path/to/cq_jt-<version>-<tags>.whl`. Wheel users do not need Rust, CadQuery, NumPy, Java, .NET or a CAD application. Locally verified wheel environments are Linux x86_64 with CPython 3.11–3.14; other platforms are not yet verified.
|
|
70
|
+
|
|
71
|
+
## Quick start
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
import cq_jt as jt
|
|
75
|
+
|
|
76
|
+
scene = jt.read("assembly.jt")
|
|
77
|
+
print(scene.complete, len(scene.meshes), len(scene.instances))
|
|
78
|
+
|
|
79
|
+
buffers = scene.mesh_buffers(0) # Explicit packed-array copies
|
|
80
|
+
print(buffers.positions.dtype, buffers.positions.shape)
|
|
81
|
+
print(buffers.triangles.dtype, buffers.triangles.shape)
|
|
82
|
+
|
|
83
|
+
report = jt.export_glb(scene, "assembly.glb")
|
|
84
|
+
print(report.instance_count, report.placed_triangle_count)
|
|
85
|
+
|
|
86
|
+
# Read and export in one call:
|
|
87
|
+
# report = jt.convert("assembly.jt", "another.glb")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
File reads resolve external Partition references within the input file's parent directory by default. Use `ResolverOptions(root=...)` to select another allowed root, or `enabled=False` to disable external reads. Bytes-based and structure-only APIs do not open external files.
|
|
91
|
+
|
|
92
|
+
Missing units or colors require explicit supplements. Partial scenes require explicit export permission. Existing output files are protected by default. GLB output contains display triangles and approximate PBR materials; precise geometry, PMI interpretation and CAD editing history are outside the supported profile.
|
|
93
|
+
|
|
94
|
+
## Command line
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
python -m cq_jt inspect part.jt --json
|
|
98
|
+
python -m cq_jt decode part.jt --json
|
|
99
|
+
python -m cq_jt structure part.jt --json
|
|
100
|
+
python -m cq_jt mesh part.jt --lod highest --json
|
|
101
|
+
python -m cq_jt convert part.jt part.glb --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Documentation
|
|
105
|
+
|
|
106
|
+
- [Documentation index](docs/README.md)
|
|
107
|
+
- [API guide](docs/model-api.md): reading, arrays, units, external references, export and errors
|
|
108
|
+
- [Compatibility](docs/compatibility.md): supported profiles and experimental JT 10.6
|
|
109
|
+
- [Conversion example](examples/README.md)
|
|
110
|
+
- [Rust core](crates/jt-core/README.md)
|
|
111
|
+
|
|
112
|
+
## Development
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
uv run pytest
|
|
116
|
+
cargo test -p jt-core --locked --features glb
|
|
117
|
+
uv run python scripts/build_python_release.py
|
|
118
|
+
python scripts/check_publication.py
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The included tests and fixtures can run from a public checkout without acquired CAD data or proprietary tools.
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT. Dependency licenses, Siemens format notices and other attributions are included in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and [licenses/](licenses/).
|
|
126
|
+
|
cq_jt-0.3.0/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# cq-jt
|
|
2
|
+
|
|
3
|
+
A JT reader and GLB exporter with a Python-independent Rust core and thin Python bindings.
|
|
4
|
+
|
|
5
|
+
Read product structure, part placements, materials and selected triangle meshes from **JT 9.5, 10.0 and 10.3**. Inspect container boundaries, decode ZLIB/XZ streams, resolve local external JT references, and retain source information and opaque data.
|
|
6
|
+
|
|
7
|
+
JT 10.6 is available as an **explicit experimental opt-in**. Compatibility with native JT 10.6 exports has not been verified. See [compatibility and limitations](docs/compatibility.md).
|
|
8
|
+
|
|
9
|
+
## Requirements and installation
|
|
10
|
+
|
|
11
|
+
Python 3.11 or later is required. This project is under development and has not been published to PyPI.
|
|
12
|
+
|
|
13
|
+
To build from a source checkout, install Rust 1.83 or later and [uv](https://docs.astral.sh/uv/), then run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uv sync --locked --group dev
|
|
17
|
+
uv run python -m cq_jt --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
To install a locally built wheel, use `python -m pip install /path/to/cq_jt-<version>-<tags>.whl`. Wheel users do not need Rust, CadQuery, NumPy, Java, .NET or a CAD application. Locally verified wheel environments are Linux x86_64 with CPython 3.11–3.14; other platforms are not yet verified.
|
|
21
|
+
|
|
22
|
+
## Quick start
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
import cq_jt as jt
|
|
26
|
+
|
|
27
|
+
scene = jt.read("assembly.jt")
|
|
28
|
+
print(scene.complete, len(scene.meshes), len(scene.instances))
|
|
29
|
+
|
|
30
|
+
buffers = scene.mesh_buffers(0) # Explicit packed-array copies
|
|
31
|
+
print(buffers.positions.dtype, buffers.positions.shape)
|
|
32
|
+
print(buffers.triangles.dtype, buffers.triangles.shape)
|
|
33
|
+
|
|
34
|
+
report = jt.export_glb(scene, "assembly.glb")
|
|
35
|
+
print(report.instance_count, report.placed_triangle_count)
|
|
36
|
+
|
|
37
|
+
# Read and export in one call:
|
|
38
|
+
# report = jt.convert("assembly.jt", "another.glb")
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
File reads resolve external Partition references within the input file's parent directory by default. Use `ResolverOptions(root=...)` to select another allowed root, or `enabled=False` to disable external reads. Bytes-based and structure-only APIs do not open external files.
|
|
42
|
+
|
|
43
|
+
Missing units or colors require explicit supplements. Partial scenes require explicit export permission. Existing output files are protected by default. GLB output contains display triangles and approximate PBR materials; precise geometry, PMI interpretation and CAD editing history are outside the supported profile.
|
|
44
|
+
|
|
45
|
+
## Command line
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python -m cq_jt inspect part.jt --json
|
|
49
|
+
python -m cq_jt decode part.jt --json
|
|
50
|
+
python -m cq_jt structure part.jt --json
|
|
51
|
+
python -m cq_jt mesh part.jt --lod highest --json
|
|
52
|
+
python -m cq_jt convert part.jt part.glb --json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Documentation
|
|
56
|
+
|
|
57
|
+
- [Documentation index](docs/README.md)
|
|
58
|
+
- [API guide](docs/model-api.md): reading, arrays, units, external references, export and errors
|
|
59
|
+
- [Compatibility](docs/compatibility.md): supported profiles and experimental JT 10.6
|
|
60
|
+
- [Conversion example](examples/README.md)
|
|
61
|
+
- [Rust core](crates/jt-core/README.md)
|
|
62
|
+
|
|
63
|
+
## Development
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
uv run pytest
|
|
67
|
+
cargo test -p jt-core --locked --features glb
|
|
68
|
+
uv run python scripts/build_python_release.py
|
|
69
|
+
python scripts/check_publication.py
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The included tests and fixtures can run from a public checkout without acquired CAD data or proprietary tools.
|
|
73
|
+
|
|
74
|
+
## License
|
|
75
|
+
|
|
76
|
+
MIT. Dependency licenses, Siemens format notices and other attributions are included in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and [licenses/](licenses/).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Third party notices
|
|
2
|
+
|
|
3
|
+
The Python extension uses PyO3 0.29.2 (MIT OR Apache-2.0) and its Rust
|
|
4
|
+
dependencies. Cargo.lock records the resolved versions. `licenses/manifest.json`
|
|
5
|
+
identifies all locked dependencies and their license texts, including build
|
|
6
|
+
dependencies. For dual MIT/Apache-2.0 licenses this distribution retains the
|
|
7
|
+
MIT text; target-lexicon's Apache-2.0 WITH LLVM-exception and unicode-ident's
|
|
8
|
+
additional Unicode-3.0 notice are retained separately. Their original
|
|
9
|
+
copyright and license terms continue to apply.
|
|
10
|
+
|
|
11
|
+
Outer compression uses flate2 1.1.10 (MIT OR Apache-2.0, Rust backend),
|
|
12
|
+
crc32fast 1.5.0 (MIT OR Apache-2.0), and lzma-rust2 0.15.8 (Apache-2.0),
|
|
13
|
+
with their locked Rust dependencies. Their license texts are in licenses/;
|
|
14
|
+
the MIT alternative is retained where offered. lzma-rust2 is a Rust port of
|
|
15
|
+
tukaani xz for java and a continuation of lzma-rust:
|
|
16
|
+
https://github.com/hasenbanck/lzma-rust2/
|
|
17
|
+
No external shared libz or liblzma is used by this package. The bounded XZ
|
|
18
|
+
framing checks follow the public-domain XZ file format specification 1.2.1:
|
|
19
|
+
https://tukaani.org/xz/xz-file-format-1.2.1.txt
|
|
20
|
+
|
|
21
|
+
The package layout and Rust/Python boundary were informed by cq-acis
|
|
22
|
+
(MIT, https://github.com/monozukuri-ai/cq-acis). The scene model is specific
|
|
23
|
+
to this project; ACIS entity implementations are not included.
|
|
24
|
+
|
|
25
|
+
JT is a Siemens format and trademark. The JT data structures and identifiers
|
|
26
|
+
used by the container reader are Copyright 2026 Siemens. They are used under
|
|
27
|
+
the Siemens JT Data Format Reference Intellectual Property License Terms,
|
|
28
|
+
JT 10.6 Rev D (10 February 2026), page ii, for interpreting JT input. Those
|
|
29
|
+
terms permit the necessary use of the listed structures and operators with
|
|
30
|
+
an appropriate copyright notice; they do not grant a license to Siemens SDK
|
|
31
|
+
code, documentation, trademarks or patents. Any applicable patent permission
|
|
32
|
+
is governed separately by Siemens' official clarification notice.
|
|
33
|
+
|
|
34
|
+
The reader's implementation code is MIT licensed. This distribution includes
|
|
35
|
+
no Siemens SDK code, specification documents or sample CAD files. The research
|
|
36
|
+
probe, downloaded third-party source snapshots and research material are also
|
|
37
|
+
excluded from Python distributions. Official specification access and notices:
|
|
38
|
+
https://www.siemens.com/en-us/products/plm-components/jt/jt-open-program/
|
|
39
|
+
|
|
40
|
+
JT 9.5 structures and identifiers are Copyright 2010 Siemens Product Lifecycle
|
|
41
|
+
Management Software Inc. They are used under the JT 9.5 Rev A Data Format
|
|
42
|
+
Reference Intellectual Property License Terms, section 1, for interpreting JT
|
|
43
|
+
input. The structure reader was checked against that Siemens specification and
|
|
44
|
+
the pinned legacy source references; no third-party JT reader code is included.
|
|
45
|
+
|
|
46
|
+
The JT 9.5 mesh data structures and decoding algorithms follow sections
|
|
47
|
+
7.2.2 and 8, and Appendices C, D and E of that reference, under the same
|
|
48
|
+
Siemens copyright notice and IP license terms. The small hash implementation
|
|
49
|
+
in `mesh/hash.rs` follows Bob Jenkins' 1996 algorithm from Appendix D, whose
|
|
50
|
+
notice permits private, educational and commercial use without restriction.
|
|
51
|
+
No Java or C# runtime or third-party JT reader is bundled or required.
|
|
52
|
+
|
|
53
|
+
JT 10.0 structures and identifiers are Copyright 2015 Siemens Product Lifecycle
|
|
54
|
+
Management Software Inc. (JT File Format Reference Version 10.0 Rev-B, cover;
|
|
55
|
+
internal pages also carry a 2014 notice). They are used under section 1 of that
|
|
56
|
+
reference for interpreting JT input. The 10.0/10.3 reader was checked against
|
|
57
|
+
this specification, later Siemens references and pinned MIT JTReader source.
|
|
58
|
+
No JTReader source, .NET SDK or development-only comparison dependency is
|
|
59
|
+
included in or required by this distribution.
|
|
60
|
+
|
|
61
|
+
The opt-in experimental JT 10.6 structure/mesh profile uses the structures and
|
|
62
|
+
operators from JT 10.6 Rev D, Copyright 2026 Siemens, under the same IP license
|
|
63
|
+
terms noted above. Its authored specification controls are not native CAD exports
|
|
64
|
+
and do not establish JT 10.6 file compatibility.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "cq-jt-py"
|
|
3
|
+
version.workspace = true
|
|
4
|
+
edition.workspace = true
|
|
5
|
+
rust-version.workspace = true
|
|
6
|
+
license.workspace = true
|
|
7
|
+
repository.workspace = true
|
|
8
|
+
description = "Native Python module for the cq-jt model foundation"
|
|
9
|
+
publish = false
|
|
10
|
+
|
|
11
|
+
[lib]
|
|
12
|
+
name = "_native"
|
|
13
|
+
crate-type = ["cdylib", "rlib"]
|
|
14
|
+
|
|
15
|
+
[dependencies]
|
|
16
|
+
jt-core = { workspace = true, features = ["glb"] }
|
|
17
|
+
jt-py-bridge = { workspace = true, features = ["glb"] }
|
|
18
|
+
pyo3.workspace = true
|