Ностройка редактора для написания плагинов.

Список разделов Blender 3D Плагины

Описание: Обсуждение расширений для Blender
Модератор: exooman

Сообщение #1 ekkl » 11.07.2018, 18:29

Хочу попробовать написать плагин. В качестве редактора выбрал LightTable (но это не суть важно, я думаю).
Как заставить редактор "подцепить" нужные мне классы для автодополнения (класс bpy и т.д.) Нужно, чтобы редактор увидел, что такой клас есть. Конечно, можно открыть дополнительный файл (и ничего с ним не делать), только кажется мне, что это не совсем правильно.
ekkl M
Сообщения: 164


Сообщение #2 Korchy » 11.07.2018, 21:35

В PyCharm это делается так. Попробуй по аналогии.
https://b3d.interplanety.org/podkluchenie-vneshne ... charm-dlya-sozdaniya-plaginov/
Korchy M
Аватара
Сообщения: 2223



Сообщение #3 ekkl » 11.07.2018, 23:53

Я находил эту статью. Всё-равно есть неточности.
Для 2,73 окончание вывода в консоль
Код: Выделить всё
   not documenting bpy.utils.units
   not documenting bpy.path.extensions_audio
   not documenting bpy.path.extensions_image
   not documenting bpy.path.extensions_movie
Missing argument declaration for 'soft_min'
   not documenting mathutils.geometry
   not documenting mathutils.kdtree
   not documenting mathutils.noise
   not documenting bmesh.geometry
   not documenting bmesh.ops
   not documenting bmesh.types
   not documenting bmesh.utils
   updating: bpy.py
Error: Not freed memory blocks: 330

Для 2,79b начало
Код: Выделить всё
Exception in module register(): '/home/ekkl/programs/blender-2.79b-linux-glibc219-x86_64/2.79/scripts/addons/object_boolean_tools.py'
archimesh: Imported multifiles
archipack: ready
Missing argument declaration for 'flag'
class Action:

Конец:
Код: Выделить всё
class window.edit_panel2:

   not documenting bpy.utils.previews
   not documenting bpy.utils.units
   not documenting bpy.path.extensions_audio
   not documenting bpy.path.extensions_image
   not documenting bpy.path.extensions_movie
Missing argument declaration for 'soft_min'
   not documenting mathutils.bvhtree
   not documenting mathutils.geometry
   not documenting mathutils.interpolate
   not documenting mathutils.kdtree
   not documenting mathutils.noise
Missing argument declaration for 'rgb'
Missing argument declaration for 'angles'
Missing argument declaration for 'order'
Missing argument declaration for 'rows'
Missing argument declaration for 'seq'
Missing argument declaration for 'angle'
Missing argument declaration for 'seq'
   not documenting bgl.glActiveTexture
   not documenting bgl.glAttachShader
   not documenting bgl.glBeginQuery
   not documenting bgl.glBindAttribLocation
   ...
   updating: aud.py
   updating: bgl.py
   updating: blf.py
   updating: bmesh.py
   updating: bmesh.types.py
   updating: bpy.app.py
   updating: bpy.path.pyRead prefs: /home/ekkl/.config/blender/2.79/config/userpref.blend
found bundled python: /home/ekkl/programs/blender-2.79b-linux-glibc219-x86_64/2.79/python
RNA Warning: Current value "0" matches no enum in 'EnumProperty', 'material', 'default'
RNA Warning: Current value "0" matches no enum in 'EnumProperty', 'user_profile_selector', 'default'
RNA Warning: Current value "0" matches no enum in 'EnumProperty', 'user_profile_selector', 'default'
.....
   updating: bpy.props.py
   updating: bpy.py
   updating: bpy.utils.py
   updating: mathutils.geometry.py
   updating: mathutils.py
Error: Not freed memory blocks: 124, total unfreed memory 0.030273 MB

Но файлы всё-равно создаются.
Запускал с линукса, естественно так:
Код: Выделить всё
]$ ./blender -b -P ~/bpy/pypredef_gen.py
Есть и готовые "сборки" для 2,79 https://github.com/nutti/fake-bpy-module

Но теперь имею вопрос: раз всё не так и просто, нету сразу "готового" решения то как пишутся плагины, которых достаточно много. Неужели при профессиональном написании кода практически не пользуются автокомплетом?
ekkl M
Сообщения: 164


Сообщение #4 Korchy » 12.07.2018, 08:56

Так ты определись, что тебе нужно. Шаблон для аддона или автокомплит? Это немного разные вещи :-D

Про создание аддона смотри здесь.
Начальные сведения: https://b3d.interplanety.org/sozdanie-addona-dlya-blender/
Как удобно делать и отлаживать многофайловые аддны: https://b3d.interplanety.org/otladka-mnogofaylovo ... lender-bystroy-pereustanovkoy/

Автокомплит - это настройка среды ide. Ссылку я кинул. Скачай pycharm. Комьюнити версия, которой я пользуюсь, бесплатная. У меня автокомплит работает. Не супер-гуд, но на достаточно удобном уровне. Если не работает pypredef, так внизу в комментах есть ссылка на nutty https://github.com/nutti/fake-bpy-module/tree/master/modules/2.79
Korchy M
Аватара
Сообщения: 2223



Сообщение #5 ekkl » 16.07.2018, 17:36

Можно считать, что с автокомплитом разобрался. Спасибо.
Теперь есть вопрос по самому примеру кода, приведенного вами.
Я упростил до такого состояния
Код: Выделить всё
bl_info = {
  'name': 'Null object addon',
  'author': 'Igor Yuchimenko',
  'version': (0, 1, 0),
  'blender': (2, 71, 0),
  'category': 'Add Mesh',
  'description': 'This addon is tested. No creation'
}

import bpy

class nulladdon(bpy.types.Operator):
  bl_idname = 'mesh.0'
  bl_label = 'Create Null'
  bl_options = {"REGISTER", "UNDO"}
 
  def execute(self, context):
    return {'FINISHED'}


def addToMenu(self, context):
    self.layout.operator("Create Null", icon="PLUGIN")
 
def register():
    bpy.utils.register_class(nulladdon)
    bpy.types.INFO_MT_mesh_add.append(addToMenu)
 
def unregister():
    bpy.utils.unregister_class(nulladdon)
    bpy.types.INFO_MT_mesh_add.remove(addToMenu)

Подключается, но в меню ничего не добавляет. Почему так?
---
Кажись уже понял. :)
ekkl M
Сообщения: 164



Вернуться в Плагины

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость