README - code example to use Python syntax highlighting (#92894)
Added explicit code block for Python syntax highlighting. Reviewed-on: https://projects.blender.org/blender/blender-asset-tracer/pulls/92894
This commit is contained in:
parent
08b37a35f8
commit
899f361fcf
54
README.md
54
README.md
@ -75,49 +75,51 @@ Mypy likes to see the return type of `__init__` methods explicitly declared as `
|
||||
BAT can be used as a Python library to inspect the contents of blend files, without having to
|
||||
open Blender itself. Here is an example showing how to determine the render engine used:
|
||||
|
||||
#!/usr/bin/env python3.7
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
```python
|
||||
#!/usr/bin/env python3.7
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from blender_asset_tracer import blendfile
|
||||
from blender_asset_tracer.blendfile import iterators
|
||||
from blender_asset_tracer import blendfile
|
||||
from blender_asset_tracer.blendfile import iterators
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
if len(sys.argv) != 2:
|
||||
print(f'Usage: {sys.argv[0]} somefile.blend', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
bf_path = Path(sys.argv[1])
|
||||
bf = blendfile.open_cached(bf_path)
|
||||
bf_path = Path(sys.argv[1])
|
||||
bf = blendfile.open_cached(bf_path)
|
||||
|
||||
# Get the first window manager (there is probably exactly one).
|
||||
window_managers = bf.find_blocks_from_code(b'WM')
|
||||
assert window_managers, 'The Blend file has no window manager'
|
||||
window_manager = window_managers[0]
|
||||
# Get the first window manager (there is probably exactly one).
|
||||
window_managers = bf.find_blocks_from_code(b'WM')
|
||||
assert window_managers, 'The Blend file has no window manager'
|
||||
window_manager = window_managers[0]
|
||||
|
||||
# Get the scene from the first window.
|
||||
windows = window_manager.get_pointer((b'windows', b'first'))
|
||||
for window in iterators.listbase(windows):
|
||||
# Get the scene from the first window.
|
||||
windows = window_manager.get_pointer((b'windows', b'first'))
|
||||
for window in iterators.listbase(windows):
|
||||
scene = window.get_pointer(b'scene')
|
||||
break
|
||||
|
||||
# BAT can only return simple values, so it can't return the embedded
|
||||
# struct 'r'. 'r.engine' is a simple string, though.
|
||||
engine = scene[b'r', b'engine'].decode('utf8')
|
||||
xsch = scene[b'r', b'xsch']
|
||||
ysch = scene[b'r', b'ysch']
|
||||
size = scene[b'r', b'size'] / 100.0
|
||||
# BAT can only return simple values, so it can't return the embedded
|
||||
# struct 'r'. 'r.engine' is a simple string, though.
|
||||
engine = scene[b'r', b'engine'].decode('utf8')
|
||||
xsch = scene[b'r', b'xsch']
|
||||
ysch = scene[b'r', b'ysch']
|
||||
size = scene[b'r', b'size'] / 100.0
|
||||
|
||||
render_info = {
|
||||
render_info = {
|
||||
'engine': engine,
|
||||
'frame_pixels': {
|
||||
'x': int(xsch * size),
|
||||
'y': int(ysch * size),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
json.dump(render_info, sys.stdout, indent=4, sort_keys=True)
|
||||
print()
|
||||
json.dump(render_info, sys.stdout, indent=4, sort_keys=True)
|
||||
print()
|
||||
```
|
||||
|
||||
To understand the naming of the properties, look at Blender's `DNA_xxxx.h` files with struct
|
||||
definitions. It is those names that are accessed via `blender_asset_tracer.blendfile`. The
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user