Menulis konten bpy.data.texts ke folder dengan bpy.ops.text.save
Saya membaca skrip saya dari folder dengan:
import bpy
import pathlib
for file in pathlib.Path("C:\\awesome\\scripts\\folder").iterdir():
bpy.ops.text.open(filepath = str(file))
Sekarang saya dapat menggunakan skrip dalam blender itu sendiri dan dapat mengubah beberapa hal di sana-sini. Untuk menyimpan naskah sebagai pengguna saya dapat menggunakan Alt + S . Untuk membuat skrip prosedur ini, blender menampilkan tooltip dengan bpy.ops.text.save () tetapi saya tidak tahu bagaimana menentukan teks mana yang ingin saya simpan. Saya kira itu akan menjadi seperti:
import bpy
for text in bpy.data.texts:
bpy.data.texts.active = text
bpy.ops.text.save()
Tetapi bpy.data.texts.active sebenarnya tidak tersedia.
TL; DR: Di mana harus mendefinisikan teks aktif?
Hebat, Mamu
Jawaban
Anda dapat menemukan objek teks aktif saat ini di screen.areaseditor teks
area = next(area for area in context.screen.areas if area.type == 'TEXT_EDITOR')
text_obj = area.spaces.active.text
Asumsikan bahwa Anda mengetahui nama blok teks Anda, lalu tetapkan jenis teks tersebut ke teks aktif:
area.spaces.active.text = bpy.data.texts['Text.001']
Ini akan mengubah objek teks aktif saat ini.
Tanpa Operator
Baik membaca dan menulis dapat dilakukan tanpa operator.
import bpy
import pathlib
for file in pathlib.Path("somefolder").iterdir():
text = bpy.data.texts.load(str(file))
dan menulis
import bpy
from pathlib import Path
for text in bpy.data.texts:
# internal
if text.is_in_memory:
continue
path = Path(bpy.path.abspath(text.filepath))
if path.exists():
path.write_text(text.as_string())