Найти в Дзене
ДПИ

Как китайский ИИ написал мне скрипт для расчёта объёма материала в 3ds max

Решил я познакомиться с китайской нейросетью DeepSeek, которая, по словам знатоков, рвёт в клочья американские нейросети (не говоря уж о российских, которые сознательно ограничивают, так, что даже флаг родной страны правильно нарисовать не могут). Моему сыну DeepSeek помог исправить ошибку в программе, которую он, учась программировать, написал, но неудачно. Поскольку именно сын разрекламировал мне DeepSeek, и речь шла о программировании, то я, ни разу не программист, заинтересовался возможностью создать то, чего сам не могу. Иногда для работы использую программы 3d моделирования, в частности 3ds max. И вот, например, создаю я там проект мастерской для себя, а подсчитывать количество материала, который потребуется для строительства, приходится вручную. Есть строительные калькуляторы, но они не работают с 3d моделями. Есть программы, которые рассчитывают объём модели, например слайсеры для 3d печати, но они ограничены размером области печати. В общем, задал я DeepSeek задание написать
Пример работы скрипта
Пример работы скрипта

Решил я познакомиться с китайской нейросетью DeepSeek, которая, по словам знатоков, рвёт в клочья американские нейросети (не говоря уж о российских, которые сознательно ограничивают, так, что даже флаг родной страны правильно нарисовать не могут). Моему сыну DeepSeek помог исправить ошибку в программе, которую он, учась программировать, написал, но неудачно. Поскольку именно сын разрекламировал мне DeepSeek, и речь шла о программировании, то я, ни разу не программист, заинтересовался возможностью создать то, чего сам не могу.

Иногда для работы использую программы 3d моделирования, в частности 3ds max. И вот, например, создаю я там проект мастерской для себя, а подсчитывать количество материала, который потребуется для строительства, приходится вручную. Есть строительные калькуляторы, но они не работают с 3d моделями. Есть программы, которые рассчитывают объём модели, например слайсеры для 3d печати, но они ограничены размером области печати. В общем, задал я DeepSeek задание написать скрипт по вычислению объема модели для программы, которой пользуюсь чаще всего - 3ds max 2024.

Мой вопрос:
Создай скрипт для 3ds max 2024, который подсчитывает объём материала, необходимого для создания модели, учитывая точные размеры.
Ответ DeepSeek:
Создание скрипта для подсчёта объёма материала в 3ds Max 2024 требует использования MaxScript, встроенного языка программирования для автоматизации задач в 3ds Max. Скрипт будет анализировать геометрию объекта, вычислять его объём и выводить результат.
Вот пример скрипта, который вычисляет объём объекта:
-2

Как работает скрипт:
Функция calculateVolume:
Принимает объект как аргумент.
Создаёт снимок меша объекта.
Проходит по всем граням меша и вычисляет объём тетраэдра, образованного каждой гранью и началом координат.
Суммирует объёмы всех тетраэдров, чтобы получить общий объём объекта.
Основная часть скрипта:
Проверяет, выбран ли один объект.
Если объект выбран, вычисляет его объём и выводит результат в окно слушателя (Listener).
Если объект не выбран или выбрано несколько объектов, выводит сообщение об ошибке.
Как использовать:
Откройте 3ds Max 2024.
Перейдите в меню Scripting -> New Script.
Вставьте код скрипта в редактор.
Сохраните скрипт с расширением .ms.
Выберите объект, объём которого хотите вычислить.
Запустите скрипт через меню Scripting -> Run Script или нажатием Ctrl + E.
Примечания:
Скрипт работает только для одного выбранного объекта.
Объём вычисляется в кубических единицах, соответствующих единицам измерения сцены.
Если объект имеет сложную структуру (например, вложенные элементы или модификаторы), может потребоваться дополнительная обработка.
Этот скрипт можно расширить для учёта плотности материала, чтобы вычислять массу объекта, или для работы с несколькими объектами одновременно.

К сожалению, с первого раза не сработало. Возможно, по моей вине - надо было сначала конвертировать объекты в редактируемую сетку. Но DeepSeek, с терпеливостью бездушной машины, снова и снова исправлял скрипты, попутно направляя меня, как правильно настроить шрифты и единицы измерения. В итоге всё получилось, только сведения выдаются на английском языке, но это нормально. Попутно я узнал, что для выбора единиц измерения недостаточно просто выбрать метры или сантиметры, надо ещё задать, что 1 юнит равен 1 метру (сантиметру, миллиметру), а раньше я в эти дебри не залазил. В итоге вот рабочий скрипт, который вы можете вставить в свой 3ds max и пользоваться им:

-- Функция для вычисления объёма объекта с учётом единиц измерения fn calculateVolume obj = ( if classOf obj != Editable_Poly and classOf obj != Editable_Mesh do ( messageBox "The object must be Editable Poly or Editable Mesh." return undefined )
local volume = 0.0 local mesh = snapshotAsMesh obj
local numFaces = getNumFaces mesh

-- Получаем масштаб для перевода внутренних единиц в метры local unitsScale = units.SystemScale

for i = 1 to numFaces do ( local face = getFace mesh i
local vert1 = getVert mesh face.x * unitsScale
local vert2 = getVert mesh face.y * unitsScale
local vert3 = getVert mesh face.z * unitsScale

-- Вычисляем объём тетраэдра, образованного гранью и началом координат local tetraVolume = dot (cross vert2 vert3) vert1 / 6.0 volume += tetraVolume
)
-- Освобождаем память delete mesh

-- Возвращаем абсолютное значение объёма abs volume
)
-- Основная часть скрипта if selection.count == 1 then ( local obj = selection[1] local volume = calculateVolume obj

if volume != undefined do ( -- Используем английский текст для вывода local messageText = "Volume of the object: " + (volume as string) + " cubic meters" messageBox messageText title:"Result" ) ) else ( messageBox "Please select one object." title:"Error" )

Как описано выше:

Откройте 3ds Max 2024.
Перейдите в меню Scripting -> New Script.
Вставьте код скрипта в редактор.
Сохраните скрипт с расширением .ms.
Выберите объект, объём которого хотите вычислить.
Запустите скрипт через меню Scripting -> Run Script или нажатием Ctrl + E.

От себя добавлю, что работает этот скрипт не только с одним объектом, а со множеством объектов, если объединить их в одну модель командой attach, то есть приаттачить. Проверял точность расчёта пока на простых объёмах, вроде кубометр, полтора, 3,5, думаю, доверять можно и более точным расчётам.

Спасибо китайцам и их дружелюбному DeepSeek, прекрасно владеющему русским! Налетай, пока бесплатно!