3DCoatScripting  4.8.31β
С помощью скриптинга можно управлять возможностями Коута и расширять его функционал.
🌀 Работа с вокселями

Показывает все v-слои.

Создание слоёв

3DCoat позволяет создавать множество слоёв в скульпт-сцене. И каждый слой может содержать другие слои.

Вот такой код:

void main() {
// подготавливаем сцену
Vox v;
v.clearScene();
// строим дерево v-слоёв
v
.appendToParent( "Head" )
.appendToParent( "Body" )
.append( "Neck" )
.appendToParent( "Left arm" )
.appendToParent( "Right arm" )
.appendToParent( "Heart" )
.appendToParent( "Left leg" )
.appendToParent( "Right leg" )
// возвращаемся к слою "Head", переводим его
// в "Режим поверхности" и аттачим новые
.to( "Head" ).toSurface()
.append( "Eye" )
.appendToParent( "Lamps" )
// Заметили как добавились последние?
// Верно: `S`, не `V`.
;
// удаляем первый (пустой) слой со сцены
v.firstForRoot().remove();
}

В результате получишь такое дерево:

voxtree.png

Проверь!)

Видишь группы методов? append(), appendToParent(), appendToRoot(), forEach(), forRootEach(), ... - говорящие названия, если понимать, что "parent" по англ. "родитель", "root" - "корень", а "for each" - "для каждого". Сравнивая код с результатом-картинкой, ты без труда разберёшься кто что творит.

Знаком с JQuery? Тогда легко поймёшь, как 3DCoat работает с деревьями.

Учитывай, что класс Vox взаимодействует с UI 3DCoat, поэтому представленные в коде Vox-методы выделяют слои *прежде* чем что-то с ними делать.

Обход слоёв

Дополним код выше, чтобы показать, как можно работать со слоями.

Есть два способа. Первый:

// доступ к воксельному дереву
Vox v;
void main() {
// строим дерево v-слоёв
// см. `CreateVoxelTree.as`
// ...
// проходим все слои и вызываем для каждого функцию invert()
// см. ниже `void invert()`
v.forRootEach( "invert" );
// перемещаемся на слой "Body" и вызываем `invert()` для него и его деток
v.to( "Body" ).call( "invert" ).forEach( "invert" );
}
// функция для `forEach()`, см. выше
void invert() {
v.isSurface() ? v.toVoxel() : v.toSurface();
// пауза, чтобы видеть движение в UI
Wait( 50 );
}

Второй:

// доступ к воксельному дереву
Vox v;
void main() {
// строим дерево v-слоёв
// см. `CreateVoxelTree.as`
// ...
// доступ по индексу для всех деток слоя "Head"
v.to( "Body" ).call( "invert" );
for ( int i = 0; i < v.count(); ++i ) {
v.at( i ).call( "invert" ).parent();
Wait( 100 );
}
}
// функция для `forEach()`, см. выше
void invert() {
v.isSurface() ? v.toVoxel() : v.toSurface();
}

Какой способ использовать лучше - дело вкуса.

Создание дерева с воксельными слоями загляни сюда

Методы слоев (поверхностный и воксельный режим)

Vox & moveToIndex (const std :: string & name, int index);

Переместите v-слой name как дочерний по отношению к родительскому выбранному v-слою в относительный index . V-слой становится выбранным.

Vox v;
// Выбираем дочерние «Lamps» родительского v-слоя «Нead» (индекс = 1)
v.moveToIndex ("Нead", 1);

Vox & moveCurrentToIndex (int idx);

Переместите текущий v-слой как дочерний по отношению к родительскому выбранному v-слою в относительный индекс. v-слой с индексом равным idx становится выбранным \ param idx индекс v-слоя

//Примеры:
Vox v;
// Выбираем дочерний «Eye» родительского v-слоя «Нead» (индекс = 0)
v.moveToIndex ("Нead", 0);
// Перемещаем дочерний слой «Eye» в слой «Lamps» с относительным индексом равным 1.
v.moveCurrentToIndex (1);

int getIndex ();

Получает индекс текущего v-слоя

string names ();

Получает все тома для дерева.

string namesQuotes ();

Получает все тома для дерева (через запятую).

//Примеры:
const string s = v.names();
log += s;
const string sq = v.namesQuotes();
log += sq;

string name ();

Получает имя текущего тома.

Vox & переименовать (const string & newName);

Переименуйте текущий том.

Аргументы
newNameимя для переименования

Vox & to (const string & name);

Переключитесь на v-слой с названием name.

Аргументы
nameимя нового слоя
//Примеры:
Vox v;
v.rename («My head»);
v.to («My head»);

Vox & parent ();

Выбираем родителя, если родитель не корень. #! Мы не можем выбрать корень v-слоя (на самом деле не выбирайте в пользовательском интерфейсе 3D-Coat). Используйте appendToParent () для добавления нового v-слоя в корень.

Не переходит к корневому v-слою.

bool hasParent ();

Проверьте, есть ли у слоя тома родительский

Возвращает
TRUE, если выбранный v-слой не имеет родителя root.

Vox & firstForRoot ();

Перейти к первому v-слою среди потомков корневого v-слоя.

Vox & first ();

Перейти к первому v-слою среди потомков выбранного v-слоя.

Vox & firstForParent ();

Перейти к первому v-слою среди дочерних элементов выбранного v-слоя родителя.

Vox & nextForParent ();

Перейти к следующему v-слою среди потомков выбранного родительского v-слоя. Останавливается, когда родитель последний.

bool hasChildren ();

Проверьте дочерние слои на предмет текущего объема.

Возвращает
TRUE, если выбранный v-слой состоит из других v-слоев.

bool hasNextForParent ();

Проверьте следующий слой на родительский том.

Возвращает
TRUE, когда есть следующий v-слой для дочерних элементов выбранного v-слоя родителя.

bool next ();

Выберите следующий том. Перемещайтесь по всем v-слоям, игнорируя глубины.

Vox & lastForRoot ();

Перейти к последнему v-слою среди потомков корневого v-слоя.

Vox & last ();

Перейти к последнему v-слою среди потомков выбранного v-слоя.

Vox & lastForParent ();

Перейти к последнему v-слою среди потомков выбранного родительского v-слоя.

Vox & remove ();

Удаляем текущий v-слой из дерева ветвей vox.

Vox & forRootEach (const string & func);

Перемещаемся по всем v-слоям и запускаем func для каждого.

Vox & forEach (const string & func);

Перебираем все родительские v-слои (выбранные относительно) и запускаем func для каждого.

Vox & call (const string & func);

Запускаем func для выбранного v-слоя

Vox & atForRoot (int i);

Выбираем дочерний v-слой корня по индексу.

Vox & at (int i);

Выбираем дочерний элемент текущего v-слоя по индексу.

Vox & atForParent (int i);

Выбираем дочерний элемент родительского для текущего v-слоя по индексу.

Vox & showAllHidden ();

Vox & showHiddenSubtree ();

Показывает скрытые v-слои поддерева для текущей ветви дерева голосовых сообщений.

Методы объекта тома

Mat4 transform ();

Получает матрицу преобразования из текущего объекта тома.

Vox & setTransform (const Mat4 & m);

Устанавливает матрицу преобразования для текущего объекта тома.

bool visible ();

Получает видимость текущего объекта тома.

Vox & setVisible (bool v);

Устанавливает видимость текущего объекта тома.

bool ghost ();

Получает призрачный режим текущего объекта тома.

Vox & setGhost (bool v);

Устанавливает включение / выключение призрачного режима текущего объекта тома.

string nameShader ();

Получает имя шейдера текущего объекта тома.

Vox & setShaderProperty (const string & name, const string & vs);

Устанавливает свойство шейдера текущего объекта тома.

Аргументы
nameидентификатор свойства
vsстроковое значение

Vox & setOpacity (float v);

Устанавливает непрозрачность для текущего объекта объема.

Аргументы
vзначение непрозрачности

Vox & setColor (int v);

Устанавливает цвет для текущего объекта объема.

Аргументы
vцветное 32-битное (argb) значение

Vox & setColorRGB (int r, int g, int b);

Устанавливает цвет RGB для текущего объекта объема.

Аргументы
rкрасный канал
gзеленый канал
bсиний канал

Vox & toSurface ();

Устанавливает текущий объем в режим поверхности.

Vox & toVoxel ();

Устанавливает текущую громкость в воксельный режим.

Vox & toVoxelSuggestPoly (int SuggestPoly);

Устанавливает текущий объем в режим вокселей с соответствующим количеством полигонов. \ param offerПолигональное количество полигонов.

Vox & decreaseObject2X ();

Уменьшаем плотность объемного объекта в 2 раза

Vox & increaseObject2X ();

Увеличиваем плотность объемного объекта в 2 раза.

Vox & toGlobalSpace ();

Устанавливает объекты тома в глобальное пространство.

Vox & toUniformSpace ();

Устанавливает объемные объекты на единое пространство.

Vox & resample ();

Изменить разрешение объекта объема.

Vox & applyAxialSymmetry ();

Устанавливает радиальный массив объекта с любым количеством срезов.

Vox & extrude ();

Вытягиваем объемный объект.

Vox & turnToShell ();

Утолщает поверхность объемного объекта. Только для режима поверхность .

Vox & makeVoxelHull ();

Создаем сетку оболочки, используя алгоритм вокселей. Для расчета требуется больше времени, но он хорошо работает для сложной топологии. Только для режима voxel .

Vox & makeSurfaceHull ();

Утолщает объект-сетку с помощью выдавливания поверхности. Только для режима поверхность .

Vox & closeSurfaceHoles ();

Закрываем поверхностные отверстия в сетке. Только для режима поверхность .

Vox & fillVoids ();

Заполняет внутренние пустоты или впадины в модели. Только для режима voxel .

Vox & closeInvisibleHulls ();

Закрываем невидимые оболочки внутри объекта. Даже если корпус не полностью закрыт, он может быть закрыт этим инструментом, потому что видна только небольшая внешняя часть корпуса. Только для режима voxel .

Vox & decompose ();

Создает объект в VoxTree для каждой отдельной части геометрии, и помещает геометрию в эти объекты. Только для режима поверхность .

Vox & save3B ();

Сохраняем объем как 3B.

Vox & saveSubtree3B ();

Сохраняем том с поддеревом как 3B.

Vox & merge3B ();

Импортируем внешний файл 3B в сцену.

Vox & mergeCloud ();

Импортируем набор точек как последовательность маленьких сфер.

Vox & mergeObject ();

Импортируем 3D-объект.

Vox & exportScene ();

Экспорт всей сцены как мультиобъектного файла.

Vox & exportObject ();

Экспорт текущего объекта в файл на диске.

Vox & exportPatternForMerge ();

Экспорт текущего объекта для использования в качестве предустановки на панели Meshes.

Vox & exportCurveProfile ();

Экспорт текущего объекта для использования в качестве предустановки на панели Meshes.

Vox & autopoQuadrangulate ();

Запускаем AUTOPO и переключаемся в комнате ретопологии.

Vox & autopoQuadrangulateAndMergePtex ();

Запускаем AUTOPO и запекаем с использованием технологии PTEX.

Vox & autopoQuadrangulateAndMerge ();

Запускаем AUTOPO, чтобы начать текстурирование в комнате рисования.

Vox & autopoQuadrangulateAndMergeDP ();

AUTOPO для попикселя.

Vox & putOnGround ();

Привязать объект к земле (нулю). Будет использоваться только вертикальное параллельное движение.

Vox & layOnGround ();

Положить объект на землю. Объект будет перемещаться и вращаться, чтобы получить физически устойчивое положение на земле.

Vox & cloneInstance ();

Клонировать экземпляры.

Vox & clone ();

Клонировать и преобразовывать объемный объект.

Vox & cloneInstanceWithSymmetry ();

Клонировать экземпляры с симметрией.

Vox & cloneSymmetry ();

Клонирование с симметрией и преобразованием.

Vox & cloneDegrade ();

Клонировать и вдвое уменьшить уровень детализации.

Vox & cloneSpace ();

Создаем пространство с одинаковой плотностью и трансформацией. Это важно, если вы хотите использовать инструмент копирования без потери качества. Создаем новое пространство и используем инструмент копирования.

Vox & flipX ();

Отразить объект по X.

Vox & flipY ();

Отразить объект по оси Y.

Vox & flipZ ();

Отразить объект по Z.

Vox & flipNormals ();

Отразить нормали объекта. Только для режима поверхность .

Vox & bakeColors ();

Запекать цвет из всех видимых объемов в текущий. Громкость перейдет в режим поверхности.

Vox & plainMergeVisible ();

Объединить видимое (без логических значений)

Vox & plainMergeSubtree ();

Объединить поддерево (без логических значений).

Vox & plainMergeTo (const string & with);

Копирование и слияние (без логических значений).

Vox & plainMoveTo (const string & with);

Слияние (перемещение, без логических значений).

Vox & mergeVisible ();

Объединить текущий слой со всеми дочерними слоями.

Vox & mergeSubtree ();

Объединить поддерево текущего тома. Все дочерние слои будут удалены.

Vox & mergeTo (const string & with);

Объединить копию объекта с другим объектом.

Аргументы
withимя целевого тома

Vox & moveTo (const string & with);

Переместить объект в другое пространство объекта.

Аргументы
withимя целевого объекта

Vox & subtractFrom (const string & with);

Вычесть объект из другого объекта.

Аргументы
withимя объекта, из которого нужно вычесть

Vox & intersectWith (const string & with);

Пересечение объема с другим.

Аргументы
withимя пересекаемого объекта

Vox & removeIntersectionWith (const string & with);

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

Аргументы
withимя пересекаемого объекта

Vox & splitWith (const string & with);

Разделить том на две части (тома) с целевым объемом.

Аргументы
withимя объекта для разделения

Vox & changeParent (const string & with);

Смена родителя объекта.

Аргументы
withимя изменяемого объекта

void addObject (const string & name);

Добавляем подобъект к полигональной сетке.

Аргументы
nameимя подобъекта

int objectIndex (константная строка & имя);

Получает индекс объекта по имени ID.

Аргументы
nameидентификатор имени объекта
Возвращает
индекс объекта

string objectName (int index);

Получаем идентификатор имени объекта по индексу

Аргументы
indexиндекс объекта
Возвращает
имя объекта

void renameObject (const string & oldName, const string & newName);

Переименовать подобъект.

Аргументы
oldNameимя старого объекта
newNameимя нового объекта

bool visibleObject (const string & name);

Получаем видимость объекта.

Аргументы
nameимя объекта
Возвращает
true, если объект видим, иначе false.

void setVisibleObject (const string & name, bool v);

Получаем видимость объекта.

Аргументы
nameимя объекта
vфлаг видимости

void lockObject (const string & name, bool b);

Устанавливаем режим блокировки для именованного объекта.

Аргументы
nameимя объекта
bфлаг блокировки

int uvsetIndex (константная строка & имя);

Получает индекс UVsets ретопо по имени.

Аргументы
nameимя ретопо uvset
Возвращает
uvsets index.

string uvsetName (int index);

Получает имя ретопо uvset по индексу.

Аргументы
indexзначение индекса
Возвращает
имя uvset

void renameUVSet (const string & oldName, const string & newName);

Переименовать старое имя uvset на новое имя

Аргументы
oldNameстарое имя
newNameновое имя

bool isEmpty ();

Проверяет, пуст ли том.

Возвращает
true, если том пустой, иначе false.

bool isSurface ();

Проверяет, является ли текущий режим объема поверхностным.

Возвращает
true, если текущий объемный режим поверхностный, иначе false.

bool isVoxel ();

Проверяет, является ли текущий режим громкости воксельным.

Возвращает
true, если текущий режим громкости - воксельный, иначе false.

Методы рисования слоев

void addPaintLayer (const string & name);

Добавляем слой краски.

Аргументы
nameимя слоя

void deletePaintLayers ();

Удаляем текущий слой краски.

string paintLayer ();

Получает имя текущего слоя.

Возвращает
имя строки

bool setPaintLayer (const string & name);

Выбираем слой краски.

Аргументы
nameимя слоя

void renamePaintLayer (const string & newName);

Переименовать текущий слой краски.

Аргументы
newNameимя слоя

void firstPaintLayer ();

Выбираем первый слой краски.

bool nextPaintLayer ();

Выбираем следующий слой краски.

bool visiblePaintLayer ();

Получает видимость текущего слоя краски.

Возвращает
true, если слой краски видим, иначе false.

void setVisiblePaintLayer (bool v);

Получает режим видимости текущего слоя краски.

Аргументы
vвидимое значение

float opacityPaintLayer ();

Получает непрозрачность текущего слоя краски.

Возвращает
непрозрачность

void setOpacityPaintLayer (float v);

Устанавливает непрозрачность текущего слоя краски.

Аргументы
vзначение непрозрачности (0..1)

float depthOpacityPaintLayer ();

Получает непрозрачность по глубине текущего слоя краски.

Возвращает
непрозрачность глубины

void setDepthOpacityPaintLayer (float v);

Устанавливает глубину непрозрачности текущего слоя краски.

Аргументы
vзначение непрозрачности (0..1)

void setBlendingPaintLayer (const string & name);

Устанавливаем режим наложения текущего слоя краски.

Аргументы
nameидентификаторы режима наложения цветов

void setDepthBlendingPaintLayer (const string & name);

Устанавливает режим наложения глубины текущего слоя краски.

Аргументы
nameидентификаторы режима наложения глубины

Методы ретопо-слоев

void deleteRetopoLayer ();

Удаляем текущий слой ретопо.

string retopoLayer ();

Получает текущий слой ретопо.

Возвращает
имя слоя

bool setRetopoLayer (const string & name);

Выбираем слой ретопо с именем ID.

Аргументы
nameидентификатор имени слоя
Возвращает
false, если слой не найден.

void renameRetopoLayer (const string & newName);

Переименовать текущий слой ретопо.

Аргументы
newNameимя для переименования

void firstRetopoLayer ();

Выбираем первый слой ретопо.

bool nextRetopoLayer ();

Выбираем следующий слой ретопо.

Возвращает
false, если текущий слой является последним и новый слой не был выбран.

bool visibleRetopoLayer ();

Получает видимость текущего слоя ретопо.

Возвращает
режим видимости.

void setVisibleRetopoLayer (bool v);

Устанавливаем видимость текущего слоя ретопо.

Аргументы
vрежим видимости.

Работа с материалами

void addMaterial (const string & name);

Добавляем материал к материалам полигональной сетки.

Аргументы
nameназвание материала

void deleteMaterial (const string & name);

Удаляем материал из материалов полигональной сетки.

Аргументы
nameудаляемый материал

int materialIndex (const string & name);

Получает индекс материала по имени.

Аргументы
nameназвание материала
Возвращает
указатель материала

string materialName (int index);

Получает название материала по индексу.

Аргументы
indexуказатель материала
Возвращает
название материала

void renameMaterial (const string & oldName, const string & newName);

Переименовать старое имя материала в новое имя.

Аргументы
oldNameстарое имя
newNameновое имя

bool visibleMaterial (const string & name);

Получает видимость материала.

Аргументы
nameназвание материала
Возвращает
true, если материал видим, иначе false.

void setVisibleMaterial (const string & name, bool v);

Устанавливает видимость материала.

Аргументы
nameназвание материала
vвидимость

void lockMaterial (const string & name, bool b);

Устанавливаем режим блокировки материала.

Аргументы
nameназвание материала
bфлаг блокировки (true / false)

Методы сцены

Vox & clearScene ();

Очистить сцену.

int count ();

Вычислить количество дочерних объектов для текущей ветви дерева вокселей.

Возвращает
Количество дочерних объектов

float square()

Получает текущий площадь воксельного тома.

Возвращает
площадь

float volume();

Получает объем текущего воксельного тома.

Возвращает
значение объема

int polycount ();

Получает количество полигонов текущего объема.

Возвращает
количество полигонов

int polycountScene ();

Получает количество полигонов из объемов сцены

Возвращает
количество полигонов

int countPaintLayer ();

Получает количество слоев полигональной сетки.

Возвращает
количество слоев

int countRetopoLayer ();

Получает количество слоев ретопо.

Возвращает
количество слоев ретопо

int countMaterial ();

Получает количество материалов полигональной сетки.

Возвращает
количества материалов

int countObject ();

Получает количество объектов полигональной сетки.

Возвращает
количество объектов.

int countUVSet ();

Получает количество uvsets.

Возвращает
количество uvset.

Функции

Если предпочитаешь функциональное программирование, обрати внимание на этот список функций, доступных для твоего скрипта:

// Returns true if current volume is in surface mode.
DEPRECATED bool IsSurface();
// Check if volume cached.
DEPRECATED bool IsInCache();
// Move current volume to cache.
DEPRECATED void ToCache();
// Restore current volume from cache.
DEPRECATED void FromCache();
// Get current volume name.
DEPRECATED string GetCurVolume();
// Rename current volume.
DEPRECATED void RenameCurVolume(string &name);
// Set surface/voxel mode for volume Surf=true - set surface mode,
// false - volume. It is same as click on S/V icon.
// If silent=true then no dialogs will be shown, all will be
// done by default.
DEPRECATED void SetCurVolumeMode(bool Surf,bool Silent);
// Set current volume by name, returns true if succeed.
DEPRECATED bool SetCurVolume(string &name);
// Select first volume in scene, if OnlyVisible==true then first
// visible volume will be selected.
DEPRECATED void SelectFirstVolume(bool OnlyVisible);
// Select next volume after current in tree, if OnlyVisible==true
// then next visible volume will be selected. Returns false if
// current volume is last in list.
DEPRECATED bool SelectNextVolume(bool OnlyVisible);
// Example of walking through all volumes:
void main() {
string s=GetCurVolume(); //keep current selection
SelectFirstVolume(true);
do {
//insert your action
} while( SelectNextVolume(true));
SetCurVolume(s); //restore initial selection
}
// Checks if volume is empty.
DEPRECATED bool CurVolumeIsEmpty();
// Get current volume polycount.
DEPRECATED int GetCurVolumePolycount();
// Get polycount of whole voxel scene.
DEPRECATED int GetVoxSceneVisiblePolycount();
// Get polycount of visible volumes.
DEPRECATED int GetVoxScenePolycount ();
// Get current volume shader name.
DEPRECATED string GetCurVolumeShader();
// Set volume visibility (like with eye icon).
DEPRECATED void SetVolumeVisibility(bool vis)
// Returns current volume visibility.
DEPRECATED bool GetVolumeVisibility()
// Sets Ghost property to volume.
DEPRECATED void SetVolumeGhosting(bool Ghosting)
DEPRECATED void SetCurVolumeTransform(Mat4& transform)
// Set/get current volume transform as 4-dimentional matrix.
// See the Mat4 class description.
DEPRECATED Mat4 SetCurVolumeTransform()
DEPRECATED bool GetVolumeSquare()
// Get square and volume of the current volume.
DEPRECATED bool GetVolumeVolume()
// Get Ghost property from the volume.
DEPRECATED bool GetVolumeGhosting()
// Set opacity of the current volume if the shader
// has corresponding property.
DEPRECATED void SetVolumeOpacity(float Opacity)
// Set current volume color if this property of shader is available.
DEPRECATED void SetVolumeColor(int Color)
// Assign val to current object shader property field.
DEPRECATED void SetShaderProperty(string &id, string &val)

Посмотри также этот набор функций для полной картины возможностей:

// Returns whole command line.
string getCommandLine();
// Stores some string as global value that may be read later in
// the session. The value will be stored in 3B file and you will
// be able to read in further work with this scene.
DEPRECATED void SetGlobalVar(string& Name,string& Value)
// Returns value previously stored using SetGlobalVar.
DEPRECATED string GetGlobalVar (string& Name)
// Returns scene filename (last saved or opened as 3B file).
DEPRECATED string GetSceneFileName()
// Sets scene filename for further saving.
DEPRECATED void SetSceneFileName(string& Name)
// Highlight element with red rectangle.
// Pass the `time` in seconds.
void HighlightUIElement(string &ID, float time);
// Goes to one of previous dialogs in call stack.
DEPRECATED void back(int steps=1);
// Opens window described by xml-file pointed by Path.
// If Path contains .3b file will be opened as 3B file.
DEPRECATED void open(string &Path);
// Opens model for PPP, if path is empty, shows open dialog.
DEPRECATED void ppp(string &path);
// Opens model for MV painting, if path is empty, shows open dialog.
DEPRECATED void mv(string &path);
// Opens model for Ptex, if path is empty, shows open dialog.
DEPRECATED void ptex(string &path);
// Import image as mesh, dialog will be shown.
DEPRECATED void imagemesh();
// Import mesh as reference, if path is empty dialog will be shown.
DEPRECATED void refmesh(string &path);
// Import mesh for vertex painting, if path is empty dialog will be shown.
DEPRECATED void vertexpaint(string &path);
// Perform autopo over the mesh chosen in dialog.
DEPRECATED void autopo(string &path);
// Opens mesh for repairing. If id contains "vox" then model will be
// voxelized, if there is substring "shell" then mesh will be imported
// as thin shell. Mesh Opening dialog will be shown.
DEPRECATED void repair(string &id);
// Activate bas-relief tool.
DEPRECATED void bass();
// Activale remove undercuts mode.
DEPRECATED void undercut();
// Activate special voxel tool. id may be found in English.xml between
// <ID>...</ID> if you will find name of tool between
// <Text>...</Text> tags.
DEPRECATED void activate(string &id);
// Activate retopo tool.
DEPRECATED void retopo();
// Open mesh using dialog and merge as retopo mesh.
DEPRECATED void retopopen();
// Activate any room - name is one of "Paint", "Tweak", "UV",
// "Voxels", "Retopo", "Render".
DEPRECATED void ToRoom(string &name);
// Check if you are in specified room - name is one of "Paint",
// "Tweak", "UV", "Voxels", "Retopo", "Render".
DEPRECATED bool IsInRoom(string &name);
// Add new volume in voxel room. If name is empty name will be
// assigned automatically.
DEPRECATED void AddNewVolume(string &name);
// Activate UV room.
DEPRECATED void uv();
// Activate voxel room and add new volume.
DEPRECATED void vox();
// Create sphere of radius R in voxel room in current object.
// \param mode 0 - add, 1 - subtract, 2 - intersect with scene.
DEPRECATED void sphere(float x,float y,float z,float r,int mode);
// Create cube in voxel room in current object.
// \param mode 0 - add, 1 - subtract, 2 - intersect with scene.
// \param sizex Size by X-axis.
// \param sizey Size by Y-axis.
// \param sizez Size by Z-axis.
DEPRECATED void cube(float x,float y,float z,float sizex,float sizey,float sizez,int mode);
// Turn all volumes to surface mode.
DEPRECATED void surf();
// Turn current volume to the surface mode.
DEPRECATED void cursurf();
// Turn current volume to voxel mode, voxelize if need.
DEPRECATED void voxelize();
// Sets merging options in voxel room. opt is just set of substrings
// with different options. Possible values are:
// [voxelize=true]
// [voxelize=false]
// [separate=true]
// [separate=false]
// [respectneg=true]
// [respectneg=false]
// [as_skin=true]
// [as_skin=false]
// [skin=....] - to set skin thickness.
DEPRECATED void mergeopt(string &opt);
// Example:
mergeopt( "[voxelize=true][as_skin=true][skin=4.5]" );
// Merge model in voxel room. Empty string means that dialog will be shown.
DEPRECATED void merge(string &model);
// Activate voxel primitives tool. Possible primitives:
// cube, cylinder, sphere, tube, cone, ellipse, n-gon, gear.
DEPRECATED void prim(string &id);
// Apply in current tool (same as press enter).
DEPRECATED void apply();
// Apply in Merge tool without asking "Keep scale?".
// Scale will not be kept and scene scale will not be changed.
DEPRECATED void ApplyAndKeepScale();
// Apply in current tool (same as press enter) wint one difference -
// in Merge tool scale of merged object sill be automatically kept and
// scene scale changed if this merge is first.
DEPRECATED void mapply();
// Open recent 3B-file.
DEPRECATED void recent3b();
// Print text to MyDocuments/3D-CoatV4/log.txt.
DEPRECATED void Log(string &line);
// Generate integer random number min..max.
int rand(int min,int max);
// Generate floating random number min..max.
float randF(float min,float max);
// Set random generator seed.
void seed(int val);
// Show progress bar pos = 0..100.
DEPRECATED void ProgressBar(const string& message,int pos);
// Set orthogonal (true) or perspective (false) view mode.
DEPRECATED void SetOrthoMode(bool value);