Результат работы программы

Цель работы

Написать функцию, выводящую большую букву «И» по типу шрифта Times New Roman. Точку вставки, высоту и угол наклона символа вводим в виде чисел или динамически. После все изображение должно быть на экране.

Текст программы

(defun dtr(a) (* pi(/ a 180.)))

(defun c:letter()

(setq p1 (getpoint "\nУкажите точку вставки:"))

(setq h (getdist "\nВысота буквы h:" p1))

(setq a (getangle "\nУгол поворота a:" p1))

(setq tt (/ h 6))

(setq ws (/ h 100))

(setq wl (/ h 10))

(setq ww (/ h 20))

(setq wm (* wl 1.5))

;вычисление точек левой части

(setq p2 (polar p1 (+ a (dtr 0.)) tt))

(setq p3 (polar p2 (+ a (dtr 90.)) (* tt 0.5))) ; нижняя левая часть

(setq tc (polar p1 (+ a (dtr 90.)) (* tt 1.5)))

(setq p5 (polar p2 (+ a (dtr 90.)) h)) ;начальная точка нижней левой части

(setq p4 (polar p5 (+ a (dtr -90.)) (* tt 0.4))) ;начальная точка верхней левой части

(setq p6 (polar p1 (+ a (dtr 90.)) h)) ;конечная точка верхней левой части

(setq tc1 (polar p6 (+ a (dtr -90.)) (* tt 1.5)))

(setq p7 (polar p2 (+ a (dtr 0.)) tt)) ;нижняя правая часть

(setq tc2 (polar p7 (+ a (dtr 90.)) (* tt 1.2)))

(setq p8 (polar p7 (+ a (dtr 90.)) h)) ;верхняя правая часть

(setq tc3 (polar p8 (+ a (dtr -90.)) (* tt 1.5)))

;вычисление точек правой части

(setq p11 (polar p1 (+ a (dtr 0.)) (* tt 2.7))) ;начало

(setq p12 (polar p11 (+ a (dtr 0.)) tt))

(setq p13 (polar p12 (+ a (dtr 90.)) (* tt 0.5))) ;нижняя левая часть

(setq tc4 (polar p11 (+ a (dtr 90.)) (* tt 1.5)))

(setq p15 (polar p12 (+ a (dtr 90.)) h)) ;начальная точка нижней левой части

(setq p14 (polar p15 (+ a (dtr -90.)) (* tt 0.4))) ;начальная точка верхней левой части

(setq p16 (polar p11 (+ a (dtr 90.)) h)) ; конечная точка верхней левой части

(setq tc5 (polar p16 (+ a (dtr -90.)) (* tt 1.5)))

(setq p17 (polar p12 (+ a (dtr 0.)) tt)) ; нижняя правая часть

(setq tc6 (polar p17 (+ a (dtr 90.)) (* tt 1.2)))

(setq p18 (polar p17 (+ a (dtr 90.)) h)) ; верхняя правая часть

(setq tc7 (polar p18 (+ a (dtr -90.)) (* tt 1.5)))

;вычисление центральной линии

(setq p20 (polar p2 (+ a (dtr 90.)) (* tt 0.5))) ; нижняя левая

(setq p21 (polar p15 (+ a (dtr -90.)) (* tt 0.5))) ; верхняя правая

;отрисовка левой части

(command "_.OSNAP" "_NONE")

(command "_.PLINE" p2 "_W" wm wm p5 "") ; отрисовка центрального прямоугольника

(command "_.PLINE" p1 "_W" ws wl "_A" "_C" tc p3 "") ; отрисовка нижней левой части центральной линии

(command "_.PLINE" p4 "_W" wl ws "_A" "_C" tc1 p6 "") ; отрисовка верхней левой части центральной линии

(command "_.PLINE" p3 "_W" wl ws "_A" "_C" tc2 p7 "") ; отрисовка нижней правой части центральной линии

(command "_.PLINE" p8 "_W" ws wl "_A" "_C" tc3 p4 "") ; отрисовка верхней правой части центральной линии

;отрисовка правой части

(command "_.PLINE" p12 "_W" wm wm p15 "") ; отрисовка центрального прямоугольника

(command "_.PLINE" p11 "_W" ws wl "_A" "_C" tc4 p13 "") ; отрисовка нижней левой части центральной линии

(command "_.PLINE" p14 "_W" wl ws "_A" "_C" tc5 p16 "") ; отрисовка верхней левой части центральной линии

(command "_.PLINE" p13 "_W" wl ws "_A" "_C" tc6 p17 "") ; отрисовка нижней правой части центральной линии

(command "_.PLINE" p18 "_W" ws wl "_A" "_C" tc7 p14 "") ; отрисовка верхней правой части центральной линии

(command "_.PLINE" p20 "_W" ww ww p21 "") ; отрисовка центральной линии

(princ))

Результат работы программы

Наши рекомендации