Как я сделал небольшой скрипт для Blender 3D , помогающий владеть информацией.
Вряд-ли кому удавалось владеть всей информацией для владения миром, но ... .
Начал я месяца три назад обучение на специальность, в которой нужно знать устройство ... нечто большого, в котором много разного и по разному устроенного. Книга хорошо, но проекцию с изображения не повертишь, и начала посещать мысль - а вот выбирать бы меш во вьюпорте, редактировать и читать текст по отдельному мешу как книгу. Да и вообще насколько помню - при работе с большими проектами меня всегда удручал тот факт, что нужно создавать какие-то файлы текстовые для заметок о том или о том, потому что работу так или иначе приходилось оставлять и выключать компьютер, а цифры и прочие сведения в уме не удержишь. И профессиональными навыками решить проблему можно было-бы в лучшем виде, но профессионалом не являюсь, а если учесть что к этому не знаю Python, то всё что могу - "пинать" LM постоянно исправляя промпты, на что и был потрачен почти весь вчерашний день, с постепенным пониманием того, что есть в последних версиях Blender 3D и что нужно использовать чтобы добиться результата минимумом затрат.
Разумеется делать полноценный аддон я не стал, мне вполне хватит скрипта, который при необходимости можно дополнять, а можно оставить и так за его простотой и параллельно запускать второй скрипт или использовать ещё один аддон, или сделать что-то одно, и оно на самом деле надо - работу с скрытием из обзора и, если надо рендера, объектов сцены и прочими манипуляциями над видимостью ообъектов. Но это потом - со временем. Пока изложу идею, которую реализовал.
Для использования скрипта, наряду с окном 3D вьювера (моделирование), нужно держать открытым скриптинга, для чтения текстов, ну и разумеется запустить сам скрипт. Тут стоит заметить, что когда вы сохраняете файл .blend - все текстовые блоки и скрипты сохраняются автоматически, поэтому нет особой нужды сразу делать полноценный аддон, а с этим и отпадает необходимость сохранять всякие заметки и прочую информацию в отдельных редакторах и файлах.
Что делает данный скрипт после запуска - в окне скриптинга, при выборе какого-либо объекта, даже камеры, он откроет текстовый блок соответствующий этому объекту, если таковой создан, который можно свободно читать и редактировать. Если такового блока нет, то просто закроется последний просматриваемый и станет ясно, что нужно создать блок для текущего объекта. Так-же можно удалить текстовый блок, если необходимость в таковом отпала - в конце концов не всем объектам они нужны. Таким образом мы избавляемся от поиска нужно информации по объекту, работы с текстовыми редакторами и блокнотами, что становится очень удобным для работы с большими проектами. Я планирую использовать скрипт для создания учебного пособия по книге (альтернатива книжному материалу). Не бог весть какое исполнение, но мне нужен результат, тем более что я не профессионал по данному редактору - дёшево и сердито, а главное - универсально и всегда под рукой (не считая факта необходимости запуска скрипта, что каждый может в принципе поправить самостоятельно сделав полноценный аддон). Ну и разумеется для работы с большими проектами, если надо будет - создам позднее полноценный аддон, дополнительно попробую создать скрипт для манипуляций над отображаемыми объектами сцены, который будет отдельным или расширением данного скрипта.
Выглядит примерно так
Вот сгенерированное руководство, сам я конечно не писака такой, и в запросе было использование скрипта, а не аддона
Теперь всё отлично - напиши небольшое руководство по данному скрипту для публикации. По установке не надо, только по использованию.
Далее так, потому что функционал цитирования, видимо, не доделан:
Конечно! Вот небольшое руководство по использованию аддона для управления текстовыми блоками в Blender:
## Руководство по использованию аддона "Text Block Manager"
Этот аддон позволяет автоматически создавать, редактировать и удалять текстовые блоки, связанные с выбранными объектами в Blender. Ниже представлены инструкции по использованию основных функций аддона.
### Основные функции
1. **Создание или открытие текстового блока:**
- Выберите объект в 3D Viewport.
- На панели "Text Block Manager" нажмите кнопку **"Create or Open Text Block"**.
- Если для выбранного объекта еще нет текстового блока, он будет создан. В противном случае, существующий текстовый блок будет открыт в редакторе текста.
2. **Удаление текстового блока:**
- Выберите объект в 3D Viewport.
- На панели "Text Block Manager" нажмите кнопку **"Delete Text Block"**.
- Текстовый блок, связанный с выбранным объектом, будет удален. Если текстовый блок открыт в редакторе текста, он будет автоматически закрыт.
3. **Автоматическое переключение текстовых блоков:**
- При выборе нового объекта в 3D Viewport аддон автоматически откроет соответствующий текстовый блок, если он существует.
- Если для нового объекта нет текстового блока, текущий открытый текстовый блок будет закрыт.
### Панель управления
- **Text Block Manager:**
- Расположена в разделе "Tools" на панели инструментов в 3D Viewport.
- Содержит две кнопки:
- **"Create or Open Text Block"** — для создания или открытия текстового блока, связанного с выбранным объектом.
- **"Delete Text Block"** — для удаления текстового блока, связанного с выбранным объектом.
### Пример использования
1. **Создание нового текстового блока:**
- Выберите объект в 3D Viewport.
- Нажмите кнопку **"Create or Open Text Block"**.
- В редакторе текста появится новый текстовый блок с именем, соответствующим имени выбранного объекта.
2. **Редактирование существующего текстового блока:**
- Выберите другой объект в 3D Viewport.
- Нажмите кнопку **"Create or Open Text Block"**.
- В редакторе текста откроется существующий текстовый блок, связанный с выбранным объектом.
3. **Удаление текстового блока:**
- Выберите объект в 3D Viewport.
- Нажмите кнопку **"Delete Text Block"**.
- Текстовый блок будет удален, и если он открыт в редакторе текста, будет закрыт автоматически.
---
Этот аддон значительно упрощает работу с текстовыми блоками, связанными с объектами в Blender. Наслаждайтесь его использованием!
-------------------------------------------------------------------------------------------------------------------------------------------
скрипт не стану выкладывать в раздачу, потому что хлопотно это потом становится, а выложу прямо тут
-------------------------------------------------------------------------------------------------------------------------------------------
import bpy
def switch_text_block(context):
obj = context.active_object
if not obj:
# Закрыть текущий текстовый блок, если нет активного объекта
for area in context.screen.areas:
if area.type == 'TEXT_EDITOR':
for space in area.spaces:
if space.type == 'TEXT_EDITOR' and space.text:
space.text = None
return
text_name = f"{obj.name}_text_block"
text_block = bpy.data.texts.get(text_name)
# Открыть текстовый блок или закрыть текущий, если его нет
for area in context.screen.areas:
if area.type == 'TEXT_EDITOR':
for space in area.spaces:
if space.type == 'TEXT_EDITOR':
if text_block:
space.text = text_block
else:
space.text = None
class TEXT_BLOCK_OT_create_or_open(bpy.types.Operator):
bl_idname = "text_block.create_or_open"
bl_label = "Create or Open Text Block"
def execute(self, context):
obj = context.active_object
if not obj:
self.report({'WARNING'}, 'No active object')
return {'CANCELLED'}
text_name = f"{obj.name}_text_block"
text_block = bpy.data.texts.get(text_name)
if not text_block:
text_block = bpy.data.texts.new(name=text_name)
switch_text_block(context)
return {'FINISHED'}
class TEXT_BLOCK_OT_delete_text(bpy.types.Operator):
bl_idname = "text_block.delete_text"
bl_label = "Delete Text Block"
def execute(self, context):
obj = context.active_object
if not obj:
self.report({'WARNING'}, 'No active object')
return {'CANCELLED'}
text_name = f"{obj.name}_text_block"
text_block = bpy.data.texts.get(text_name)
if text_block:
bpy.data.texts.remove(text_block)
switch_text_block(context)
return {'FINISHED'}
class TEXT_BLOCK_PT_panel(bpy.types.Panel):
bl_label = "Text Block Manager"
bl_idname = "OBJECT_PT_text_block_manager"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'Tools'
def draw(self, context):
layout = self.layout
obj = context.active_object
if not obj:
layout.label(text="No active object", icon='INFO')
else:
text_name = f"{obj.name}_text_block"
text_block = bpy.data.texts.get(text_name)
row = layout.row()
if text_block:
row.operator(TEXT_BLOCK_OT_create_or_open.bl_idname, text=f"Edit {obj.name} Text Block")
else:
row.operator(TEXT_BLOCK_OT_create_or_open.bl_idname, text=f"Create {obj.name} Text Block")
row = layout.row()
if text_block:
row.operator(TEXT_BLOCK_OT_delete_text.bl_idname, text="Delete Text Block")
def on_depsgraph_update(scene):
context = bpy.context
switch_text_block(context)
def register():
bpy.utils.register_class(TEXT_BLOCK_OT_create_or_open)
bpy.utils.register_class(TEXT_BLOCK_OT_delete_text)
bpy.utils.register_class(TEXT_BLOCK_PT_panel)
# Добавляем обработчик события для смены текстового блока при выборе объекта
bpy.app.handlers.depsgraph_update_post.append(on_depsgraph_update)
def unregister():
bpy.utils.unregister_class(TEXT_BLOCK_OT_create_or_open)
bpy.utils.unregister_class(TEXT_BLOCK_OT_delete_text)
bpy.utils.unregister_class(TEXT_BLOCK_PT_panel)
# Удаляем обработчик события
bpy.app.handlers.depsgraph_update_post.remove(on_depsgraph_update)
if __name__ == "__main__":
register()
--------------------------------------------------------------------------------------------------------------------------------------------
И что хотелось - бы сказать в заключении. Технологии искусственного интеллекта, вцелом, значительно упрощают использование свободного ПО, теперь не надо просматривать ролики, достаточно вбить промпт в поисковое окно и ассистент даст нужную инструкцию. Вот например при модификации мешей могут создаваться дубликаты вершин (логические операции пересечения, вычитаний, сложения), после обновлений я просто потерял где это теперь делается, но потом терпение лопнуло и вбил в поисковик - удалить дубликаты вершин в Blender 3D
Обзор от ИИ
Для удаления дубликатов вершин в Blender необходимо переключиться в режим редактирования, выделить все вершины (A), затем нажать клавишу "M" и выбрать "By Distance" (По расстоянию). Можно также использовать сочетание клавиш "W" и выбрать "Remove Doubles". В диалоговом окне "Remove Doubles" можно настроить "Merge Distance" для определения близости вершин, которые будут объединены.
Подробная инструкция:.....
.
В целом огромное спасибо свободному ПО и тем кто над ним работает. Не всем по средствам, да и нужно вообще для их проектов, лицензионное ПО, а перейти с одного на другое с технологиями AI становится намного проще. Всем спасибо за внимание и успехов.
Еще больше интересных статей
Тканевые крылья на Т-18(МС-1)-2 ПРОИЗВОДСТВЕННАЯ СЕРИЯ.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Пероклейка
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Записки тридэголика. Эпизод первый.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.




Комментарии и вопросы
Да запросто, они экономят на В...
Хоть сам давно ушел из печати....
Совершенство не требует иннова...
Народ, помогите, настала крайн...
Печатаю на 3д принтере Flashfo...
Всем доброго времени суток.Пер...
Добрый день! Только начинаю пе...