Notice
Recent Posts
Recent Comments
Artgineer_기술 배우는 아티스트
파이썬(Python)으로 라이노3D 도구 만들기 -1 [자재 단가(견적) 산출하기] 본문
반응형
만들 도구: 자동 견적 툴.
1. 도구 실행
2. 견적 낼 개체를 사용자 지정.
3. 개체의 재질을 사용자가 선택.
4. 재질, 규격, 무게, 가격 등을 출력.
# -*- coding: utf-8 -*-
import rhinoscriptsyntax as rs
def calculate_plate_price():
# 재질별 밀도와 가격 정의
materials = {
"SUS201": {"density": 7.93, "price_per_kg": 2800},
"SUS304": {"density": 7.93, "price_per_kg": 5500},
"STL": {"density": 7.85, "price_per_kg": 1500},
}
# 재질 선택 (리스트박스를 사용)
material = rs.ListBox(["SUS201", "SUS304", "STL"], "재질을 선택하세요")
if not material:
return
# 객체 선택 (철판)
obj = rs.GetObject("철판 개체를 선택하세요")
if obj is None:
return
# 객체가 Polysurface(닫힌 면을 가진 개체)인지 확인
if not rs.IsPolysurface(obj):
rs.MessageBox("선택한 개체는 Polysurface가 아닙니다. 닫힌 면을 가진 개체를 선택해 주세요.")
return
SUS201, SUS304, STL 의 비중을 넣고 각각 kg당 단가를 입력.
kg당 단가를 사용자가 입력하도록 해도 되지만
단가 변동 주기가 짧은편은 아니어서 필요시 코드만 수정하면 되도록 결정했다.
# 객체의 BoundingBox 구하기
bounding_box = rs.BoundingBox(obj)
if not bounding_box:
rs.MessageBox("BoundingBox를 계산할 수 없습니다.")
return
# BoundingBox에서 x, y, z 값을 계산
x_length = abs(bounding_box[0][0] - bounding_box[1][0]) # x 방향 길이
y_length = abs(bounding_box[0][1] - bounding_box[3][1]) # y 방향 길이
z_length = abs(bounding_box[0][2] - bounding_box[4][2]) # z 방향 길이
# mm로 변환
x_length_mm = x_length # 이미 mm로 측정됩니다.
y_length_mm = y_length # 이미 mm로 측정됩니다.
z_length_mm = z_length # 이미 mm로 측정됩니다.
# 부피 계산 (mm³)
volume_mm3 = x_length_mm * y_length_mm * z_length_mm
# 밀도 추출 (g/mm³로 변환)
density = materials[material]["density"] / 1000 # g/mm³로 변환
weight_kg = volume_mm3 * density / 1000 # kg
# 가격 계산
price_per_kg = materials[material]["price_per_kg"]
price = weight_kg * price_per_kg # 가격 (원)
일단 박스 형태의 철판을 테스트 할거기에 BoundingBox를 사용.
개체의 가로, 세로, 높이를 추출.
가장 넓은면의 면적과 높이만을 추출하여
면적(헤베)와 두께(t) 출력도 가능하나, 일단은 단순하게 진행.
# 결과 출력
rs.MessageBox("재질: {}\nX: {:.2f} mm\nY: {:.2f} mm\nZ: {:.2f} mm\n무게: {:.2f} kg\n가격: {:.2f} 원".format(
material, x_length_mm, y_length_mm, z_length_mm, weight_kg, price))
if __name__ == "__main__":
calculate_plate_price()
최종적으로,
재질
X
Y
Z
무게
가격(원)
이 출력되도록 하였다.
아래는 사용 예시 GIF.
SUS201 1200*2400*3t 철판 견적을 내는 모습이다.
728x90
'Rhino3D & Python 💻' 카테고리의 다른 글
펜로즈 삼각형 3D프린터 도안 공유 (2) | 2025.01.22 |
---|---|
파이썬(Python)으로 라이노3D 도구 만들기 -2 [어린이 놀이시설 네트 자동 설계] (3) | 2024.12.08 |
라이노는 참.. 돌이켜보면 창피한 작품이 많다. (1) | 2024.10.12 |
라이노와 키샷으로 AR 기술 구현을 할 수 있을까? (0) | 2024.07.31 |
사이버보드 모델링&렌더링 작업 (0) | 2024.03.05 |