KREMEN Реклама
KREMEN Реклама

Как я сделал небольшой скрипт для Blender 3D , помогающий владеть информацией.

accurate_random
Идет загрузка
Загрузка
16.08.2025
614
3
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

2
Статья относится к принтерам:
PICASO 3D Designer

Как я сделал небольшой скрипт для Blender 3D , помогающий владеть информацией.

Вряд-ли кому удавалось владеть всей информацией для владения миром, но ... .
Начал я месяца три назад обучение на специальность, в которой нужно знать устройство ... нечто большого, в котором много разного и по разному устроенного. Книга хорошо, но проекцию с изображения не повертишь, и начала посещать мысль - а вот выбирать бы меш во вьюпорте, редактировать и читать текст по отдельному мешу как книгу. Да и вообще насколько помню - при работе с большими проектами меня всегда удручал тот факт, что нужно создавать какие-то файлы текстовые для заметок о том или о том, потому что работу так или иначе приходилось оставлять и выключать компьютер, а цифры и прочие сведения в уме не удержишь. И профессиональными навыками решить проблему можно было-бы в лучшем виде, но профессионалом не являюсь, а если учесть что к этому не знаю Python, то всё что могу - "пинать" LM постоянно исправляя промпты, на что и был потрачен почти весь вчерашний день, с постепенным пониманием того, что есть в последних версиях Blender 3D и что нужно использовать чтобы добиться результата минимумом затрат.

Разумеется делать полноценный аддон я не стал, мне вполне хватит скрипта, который при необходимости можно дополнять, а можно оставить и так за его простотой и параллельно запускать второй скрипт или использовать ещё один аддон, или сделать что-то одно, и оно на самом деле надо - работу с скрытием из обзора и, если надо рендера, объектов сцены и прочими манипуляциями над видимостью ообъектов. Но это потом - со временем. Пока изложу идею, которую реализовал.

Для использования скрипта, наряду с окном 3D вьювера (моделирование), нужно держать открытым скриптинга, для чтения текстов, ну и разумеется запустить сам скрипт. Тут стоит заметить, что когда вы сохраняете файл .blend  - все текстовые блоки и скрипты сохраняются автоматически, поэтому нет особой нужды сразу делать полноценный аддон, а с этим и отпадает необходимость сохранять всякие заметки и прочую информацию в отдельных редакторах и файлах.

Что делает данный скрипт после запуска - в окне скриптинга, при выборе какого-либо объекта, даже камеры, он откроет текстовый блок соответствующий этому объекту, если таковой создан, который можно свободно читать и редактировать. Если такового блока нет, то просто закроется последний просматриваемый и станет ясно, что нужно создать блок для текущего объекта. Так-же можно удалить текстовый блок, если необходимость в таковом отпала - в конце концов не всем объектам они нужны. Таким образом мы избавляемся от поиска нужно информации по объекту, работы с текстовыми редакторами и блокнотами, что становится очень удобным для работы с большими проектами. Я планирую использовать скрипт для создания учебного пособия по книге (альтернатива книжному материалу). Не бог весть какое исполнение, но мне нужен результат, тем более что я не профессионал по данному редактору - дёшево и сердито, а главное - универсально и всегда под рукой (не считая факта необходимости запуска скрипта, что каждый может в принципе поправить самостоятельно сделав полноценный аддон). Ну и разумеется для работы с большими проектами, если надо будет - создам позднее полноценный аддон, дополнительно попробую создать скрипт для манипуляций над отображаемыми объектами сцены, который будет отдельным или расширением данного скрипта.

Выглядит примерно так

Как я сделал небольшой скрипт для Blender 3D , помогающий владеть информацией., и для второго меша

Как я сделал небольшой скрипт для Blender 3D , помогающий владеть информацией.

Вот сгенерированное руководство, сам я конечно не писака такой, и в запросе было использование скрипта, а не аддона

Теперь всё отлично - напиши небольшое руководство по данному скрипту для публикации. По установке не надо, только по использованию.

Далее так, потому что функционал цитирования, видимо, не доделан:

Конечно! Вот небольшое руководство по использованию аддона для управления текстовыми блоками в 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 становится намного проще. Всем спасибо за внимание и успехов.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

2
Комментарии к статье
Lider 3D Реклама
Lider 3D Реклама