Как я сделал небольшой скрипт для 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 становится намного проще. Всем спасибо за внимание и успехов.
Еще больше интересных статей
Прошивка Creality Ender 3 V3 SE
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
CoreXY, влияние ремня и шагов на размеры.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Записки тридэголика. Эпизод первый.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
А в чем проблема просто пойти....
Вещь! Почет и уважуха!Стол из....
Для герметизации лучше использ...
Не могу настроить съёмку таймл...
здраствуйте. может есть возмож...
Всем доброго времени суток. Во...
Как в том анекдоте - принтер к...