첫 게시글 : itadventure.tistory.com/319
블렌더의 파이썬 스크립트를 이용하여 달력을 자동 생성하는 스크립트 소스입니다.
달력을 생성하는 스크립트 소스는 순수하게 크레이가 제작하였고
오픈 소스로 공개하니 필요하신 분은 자유롭게 사용하세요 :)
애드온까지는 안 만들었는데 나중에 진행할까 생각중입니다
# Calendar Library
# author : cray Fall / 크레이
# https://itadventure.tistory.com/ 크레이의 IT 탐구
import bpy
from math import radians
# console write
def print(*datas):
window=bpy.context.window_manager.windows[0]
screen = window.screen
for area in screen.areas:
if area.type == 'CONSOLE':
for data in datas:
bpy.ops.console.scrollback_append(
{'window': window, 'screen': screen, 'area': area},
text=str(data))
# calendar class
class CalendarClass:
monDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
def isLeapYear(self, year):
if year % 400 == 0:
return True
if year % 100 == 0:
return False
if year % 4 == 0:
return True
return False
def monDay(self, year, mon):
if(mon==2 and self.isLeapYear(year)):
return 29
return self.monDays[mon-1]
def firstDayOfWeek(self, year, mon):
# 0001-01-01 : monday
# 0=sunday, 1=monday, ... 6=satday
# 1 year = 365 day
# leap year = 366 day
weekday=1
for i in range(1, year):
if self.isLeapYear(i):
weekday = ( weekday + 366 ) % 7
else:
weekday = ( weekday + 365 ) % 7
for j in range(1, mon):
weekday = (weekday + self.monDay(year, j)) % 7
return weekday
def calendar_matrix(self, year, mon):
calendar_matrix_data = (
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
["", "", "", "", "", "", ""],
)
row = 0
col = self.firstDayOfWeek(year, mon)
lastday = self.monDay(year, mon)
for i in range(1, lastday+1):
calendar_matrix_data[row][col]=str(i)
col = col + 1
if col >= 7:
col = 0
row = row + 1
return calendar_matrix_data
# calculate calendar matrix
Calendar = CalendarClass()
mat = Calendar.calendar_matrix(year,mon)
# put title
bpy.ops.object.text_add(
location=(5, 0, 10 + 2),
rotation=(radians(90) ,0, 0))
bpy.context.object.data.body = str(year) + '. ' + str(mon)
bpy.context.object.data.bevel_depth = 0.03
bpy.context.object.data.extrude = 0.07
# put calendar matrix
for row in range(0, 6):
for col in range(0, 7):
if mat[row][col] != "":
bpy.ops.object.text_add(
location=(col * 2, 0, 10 - row * 2),
rotation=(radians(90) ,0, 0))
bpy.context.object.data.body = mat[row][col]
bpy.context.object.data.align_x = 'RIGHT'
bpy.context.object.data.bevel_depth = 0.06
bpy.context.object.data.extrude = 0.07
# back panel
bpy.ops.mesh.primitive_plane_add(
location=(0, 0, 0),
rotation=(radians(90) ,0, 0)
)
bpy.ops.transform.resize(value=(8, 5, 8))
bpy.ops.transform.translate(value=(5.5, 0.1, 6))
print('3d calendar done.');
생성할 연, 월을 변경하시려면 소스 중간에 year, mon 값을 바꿔주시고 장면의 오브젝트를 삭제하신 다음에 실행해주시면 됩니다.
year = 2020
mon = 8
달력에 색깔과 태양광을 넣어본 결과물입니다.
이번 자료도 필요하신 분에게 되셨을지요?
오늘도 방문해주셔서 감사합니다 :)
다음 게시글 : https://itadventure.tistory.com/335
'블렌더' 카테고리의 다른 글
3D 블렌더 한글 입력기 v1.0 by 크레이 (3) | 2020.08.27 |
---|---|
블렌더 파이썬 팁 - 파이썬 개발도구 (0) | 2020.08.22 |
블렌더 파이썬 CMD 모드 (0) | 2020.08.20 |
3D블렌더 2.83+애드온(add-on) 만들기+파이썬 (2) | 2020.08.18 |
3D블렌더2.83+파이썬+뷰어UI 만들기 (2) | 2020.08.17 |