Загрузка данных


/* STREAMING_CHUNK:Initializing the AutoLISP function and saving system settings... */
(defun c:DONUTHAND ( / old_osmode old_cmdecho old_cecolor i ang rad x y z col_list)
;; Сохраняем текущие настройки привязок и эха команд
(setq old_osmode (getvar "OSMODE"))
(setq old_cmdecho (getvar "CMDECHO"))
(setq old_cecolor (getvar "CECOLOR"))
;; Отключаем привязки, чтобы они не искажали 3D-построение в пространстве
(setvar "OSMODE" 0)
(setvar "CMDECHO" 0)
;; Переходим в Мировую Систему Координат (МСК / WCS)
(command "_.UCS" "_W")
/* STREAMING_CHUNK:Generating the 3D donut base and pink icing... */
;; ==========================================================================
;; 1. СОЗДАНИЕ 3D-ПОНЧИКА (ТЕСТО И РОЗОВАЯ ГЛАЗУРЬ)
;; ==========================================================================
;; Основное тесто пончика (бежево-оранжевый цвет: ACI 30)
(setvar "CECOLOR" "30")
(command "_.TORUS" '(0 0 25) 45 20)
;; Светлая полоска посередине теста (кремовый цвет: ACI 51)
(setvar "CECOLOR" "51")
(command "_.TORUS" '(0 0 25) 45.3 18.5)
;; Розовая глазурь сверху (нежно-розовый цвет: ACI 241)
;; Слегка смещена вверх по оси Z, чтобы красиво облегать верхнюю часть
(setvar "CECOLOR" "241")
(command "_.TORUS" '(0 0 28) 45.2 19.2)
;; Добавим капли глазури по краям пончика (сферы вдоль внешнего радиуса)
(setq i 0)
(while (< i 18)
(setq ang (* i (/ (* 2 pi) 18.0)))
(setq rad 62.5)
(setq x (* rad (cos ang)))
(setq y (* rad (sin ang)))
;; Чередуем высоту капель для естественной волны глазури
(setq z (+ 23.0 (* 3.5 (sin (* ang 5.0)))))
(command "_.SPHERE" (list x y z) (+ 3.5 (* 1.2 (cos (* ang 3.0)))))
(setq i (1+ i))
)
/* STREAMING_CHUNK:Generating colorful 3D sprinkles on top of the icing... */
;; ==========================================================================
;; 2. СОЗДАНИЕ РАЗНОЦВЕТНОЙ КОНДИТЕРСКОЙ ПОСЫПКИ
;; ==========================================================================
;; Цвета: Белый (7), Желтый (2), Голубой (4), Зеленый (3), Фиолетовый (200), Оранжевый (30)
(setq col_list '("7" "2" "4" "3" "200" "30" "240"))
(setq i 0)
;; Генерируем 48 посыпок по золотому сечению на верхней поверхности глазури
(while (< i 48)
(setq ang (* i 1.75)) ;; Угол распределения
;; Распределяем радиус от внутренней дырки (32) до внешнего края (56)
(setq rad (+ 32.0 (* 24.0 (abs (sin (* i 0.85))))))
(setq x (* rad (cos ang)))
(setq y (* rad (sin ang)))
;; Вычисляем высоту Z точно по куполу тора глазури
(setq z (+ 28.0 (sqrt (max 1.0 (- (* 19.2 19.2) (expt (- rad 45.2) 2))))))
;; Выбираем цвет из списка по кругу
(setvar "CECOLOR" (nth (rem i (length col_list)) col_list))
;; Рисуем скругленную посыпку (сферу-драже или мини-капсулу)
(command "_.SPHERE" (list x y z) 1.8)
(setq i (1+ i))
)
/* STREAMING_CHUNK:Defining a helper function to build smooth 3D finger segments... */
;; ==========================================================================
;; 3. ВСПОМОГАТЕЛЬНАЯ ФУНКЦИЯ ДЛЯ ПОСТРОЕНИЯ СУСТАВОВ И ФАЛАНГ ПАЛЬЦЕВ
;; ==========================================================================
;; Строит цилиндрическую фалангу между двумя 3D-точками и сглаживает сустав сферой
(defun draw-segment (pt1 pt2 r1 r2 / )
(command ".SPHERE" pt1 r1)
(command ".CYLINDER" pt1 r1 "A" pt2)
(command ".SPHERE" pt2 r2)
)
/* STREAMING_CHUNK:Building the 3D hand, palm, wrist, and curved fingers... */
;; ==========================================================================
;; 4. СОЗДАНИЕ 3D-РУКИ (ЛАДОНЬ, ЗАПЯСТЬЕ И 5 ПАЛЬЦЕВ, ДЕРЖАЩИХ ПОНЧИК)
;; ==========================================================================
;; Телесный / персиковый цвет кожи (ACI 41)
(setvar "CECOLOR" "41")
;; --- Запястье и предплечье (уходит вправо-вниз, как на фото) ---
(draw-segment '(55 -35 -65) '(22 -12 -25) 18.0 16.0)
(draw-segment '(38 -24 -45) '(10 -5 -18) 17.0 19.0)
;; --- Основание ладони (мягкий объем из пересекающихся сфер и сегментов) ---
(command ".SPHERE" '(5 -8 -16) 20.0)
(command ".SPHERE" '(-12 -10 -14) 18.0)
(command ".SPHERE" '(-28 -5 -10) 15.0)
(command ".SPHERE" '(12 12 -14) 17.0)
(draw-segment '(12 12 -14) '(-28 -5 -10) 16.0 14.0)
(draw-segment '(5 -8 -16) '(-32 10 -6) 18.0 13.0)
;; --- ПАЛЕЦ 1: Большой палец (спереди-справа, поддерживает пончик снизу-сбоку) ---
(draw-segment '(10 -22 -14) '(-5 -45 -6) 11.0 9.0)
(draw-segment '(-5 -45 -6) '(-15 -56 8) 9.0 7.8)
(draw-segment '(-15 -56 8) '(-12 -60 22) 7.8 6.8)
;; --- ПАЛЕЦ 2: Указательный палец (спереди-слева, четко виден на фото) ---
(draw-segment '(-22 -15 -12) '(-40 -46 -2) 9.0 8.0)
(draw-segment '(-40 -46 -2) '(-46 -54 14) 8.0 7.2)
(draw-segment '(-46 -54 14) '(-42 -52 30) 7.2 6.2)
;; --- ПАЛЕЦ 3: Средний палец (левее, поднимается выше к розовой глазури) ---
(draw-segment '(-32 -4 -10) '(-58 -24 2) 9.2 8.2)
(draw-segment '(-58 -24 2) '(-66 -26 20) 8.2 7.4)
(draw-segment '(-66 -26 20) '(-60 -22 36) 7.4 6.4)
;; --- ПАЛЕЦ 4: Безымянный палец (огибает левый край пончика) ---
(draw-segment '(-35 10 -8) '(-62 4 4) 8.6 7.6)
(draw-segment '(-62 4 4) '(-68 6 20) 7.6 6.8)
(draw-segment '(-68 6 20) '(-63 8 34) 6.8 5.8)
;; --- ПАЛЕЦ 5: Мизинец (сзади-слева, аккуратно поддерживает край) ---
(draw-segment '(-30 22 -6) '(-54 28 6) 7.5 6.6)
(draw-segment '(-54 28 6) '(-60 30 19) 6.6 5.8)
(draw-segment '(-60 30 19) '(-56 28 30) 5.8 5.0)
/* STREAMING_CHUNK:Configuring the 3D camera angle and visual style... */
;; ==========================================================================
;; 5. НАСТРОЙКА КАМЕРЫ И КРАСИВОГО 3D-ОТОБРАЖЕНИЯ
;; ==========================================================================
;; Переключаем визуальный стиль на "Реалистичный" (или Концептуальный)
(command "_.VSCURRENT" "_R")
;; Устанавливаем ракурс камеры в точности как на картинке (вид спереди-слева-снизу)
(command "_.VPOINT" '(-1.1 -1.8 0.75))
;; Масштабируем вид, чтобы вся модель красиво поместилась в экран
(command "_.ZOOM" "E")
(command ".ZOOM" "0.9x")
;; Возвращаем пользовательские настройки обратно
(setvar "OSMODE" old_osmode)
(setvar "CECOLOR" old_cecolor)
(setvar "CMDECHO" old_cmdecho)
(princ "\n[Готово!] 3D-модель руки с пончиком успешно построена!")
(princ)
)
;; Автоматически запускаем построение сразу после вставки кода в командную строку!
(c:DONUTHAND)