티스토리 뷰
dxf 엘리베이터 부속 만들기, 파이썬으로 도전, BACK COVER 설계 및 전개도 작성
Coding Life 2025. 1. 8. 19:03트랜섬의 BACK COVER 설계는 정밀한 치수 계산과 전개도의 정확한 작성이 필수적입니다. 이번 글에서는 백커버를 설계하고 전개도를 작성하는 과정을 자세히 살펴보겠습니다. 이 글은 초보자도 쉽게 따라 할 수 있도록 작성되었으며, 실제 코드와 함께 설계 과정을 친절히 설명합니다.
BACK COVER의 위치 설정
먼저, 백커버의 위치를 설정해야 합니다. 백커버는 자동차 트랜섬의 프레임 좌표를 기준으로 위치가 결정됩니다. 예를 들어, 아래 코드는 프레임 좌표와 스케일 값을 기반으로 백커버의 초기 위치를 계산합니다:
pagex, pagey = frameXpos, frameYpos + 1123 * frame_scale
rx = math.floor(pagex)
ry = math.floor(pagey)
x1 = rx - 550
y1 = ry + 450
여기서 frameXpos와 frameYpos는 기본 프레임의 시작 좌표를 나타냅니다. frame_scale은 스케일 조정을 위한 값입니다. 이 좌표 계산은 백커버의 정확한 위치를 지정하는 데 사용됩니다.
전개도 작성의 핵심
전개도 작성의 핵심은 백커버의 모든 꼭짓점 좌표를 정확히 정의하고, 이를 연결하여 모양을 형성하는 것입니다. 아래는 주요 좌표를 계산하는 코드입니다:
x1 = rx
y1 = ry + 500
x2 = x1 + 140 - 3
y2 = y1
x3 = x2
y3 = y2 + 8
x4 = x3 + 6
y4 = y3
이처럼 모든 좌표는 순서대로 정의되며, 이후 각 점을 연결하거나 곡선을 그려 백커버의 형태를 만듭니다. 특히, 곡선이 필요한 부분은 draw_arc 함수로 처리합니다:
draw_arc(doc, x3, y3, x4, y4, 3, direction='up')
이 함수는 두 점 (x3, y3)와 (x4, y4) 사이의 곡선을 그립니다. 방향은 up, 즉 위쪽으로 설정됩니다.
구성선과 판정선 추가
전개도에는 정확성을 위해 구성선과 판정선이 추가됩니다. 구성선은 디자인의 참조선 역할을 하며, 판정선은 각 요소의 치수를 확인하는 데 사용됩니다. 아래는 구성선을 추가하는 코드입니다:
line(doc, x3 + 3, y3 + 10, x3 + 3, y3 - 10, layer='CLphantom')
line(doc, x7 + 3, y7 + 10, x7 + 3, y7 - 10, layer='CLphantom')
이 구성선은 CLphantom이라는 레이어로 추가되며, 회색선으로 표시됩니다.
치수 표기 및 주석 추가
전개도에는 설계 이해를 돕기 위해 치수와 설명 텍스트가 필요합니다. 다음은 치수와 주석을 추가하는 코드입니다:
d(doc, x3 + 3, y3 + 3, x1, y1, 110, direction="left")
d(doc, x11, y11, x10, y10, 180, direction="right")
draw_Text(doc, desx, desy, 25, "CAR TRANSOM의 BACK COVER임.", layer='0')
draw_Text(doc, desx, desy - 50, 25, "Part Name : BACK COVER", layer='0')
위 코드에서는 d 함수를 사용해 치수를 표시하며, draw_Text 함수로 주석을 추가합니다. 텍스트 크기와 위치를 세밀히 조정하여 보기 좋게 표시합니다.
주기표 데이터 구성
전개도 작성 후, 설계와 관련된 데이터를 리스트로 정리해 주기표를 작성합니다. 예시는 아래와 같습니다:
listdata = []
cxlist = []
cxlist.append([1, x1, y1, x1 + 200, y1 + 400])
cxlist.append([2, x1, y1, x1 + 200, y1 + 270])
cxlist.sort(key=lambda x: x[0])
for item in cxlist:
index, x1, y1, x2, y2 = item
listdata.append(["", f"{SU}", str(index).zfill(2), "TRANSOM", "MT'L", dwgnum_dict.get("TRANSOM BRACKET")])
listdata는 주기표 데이터를 저장하는 리스트이며, 이는 나중에 테이블 형태로 화면에 출력하거나 파일로 저장할 수 있습니다.
def transom_backcover(doc, frameXpos, frameYpos, frame_scale):
pagex, pagey = frameXpos, frameYpos + 1123 * frame_scale
rx = math.floor(pagex)
ry = math.floor(pagey)
x1 = rx - 550
y1 = ry + 450
insert_block(doc, x1, y1, "transom_backcoversection", layer="0")
# 일체형 transom BACK COVER 전개도
x1 = rx
y1 = ry + 500
x2 = x1 + 140 - 3
y2 = y1
x3 = x2
y3 = y2 + 8
x4 = x3 + 6
y4 = y3
x5 = x4
y5 = y4 - 8
x6 = x5 + OP - 300 - 6
y6 = y5
x7 = x6
y7 = y6 + 8
x8 = x7 + 6
y8 = y7
x9 = x8
y9 = y8 - 8
x10 = x9 + 140 - 3
y10 = y9
x11 = x10
y11 = y10 + 150
x12 = x11 - OP + 20
y12 = y11
prev_x, prev_y = x1, y1 # 첫 번째 점으로 초기화
lastNum = 12
for i in range(1, lastNum + 1):
curr_x, curr_y = eval(f'x{i}'), eval(f'y{i}')
if i == 4:
draw_arc(doc, x3, y3, x4, y4, 3, direction='up')
elif i == 8:
draw_arc(doc, x7, y7, x8, y8, 3, direction='up')
else:
line(doc, prev_x, prev_y, curr_x, curr_y, layer="레이져")
prev_x, prev_y = curr_x, curr_y
line(doc, prev_x, prev_y, x1, y1, layer="레이져")
line(doc, x3 + 3, y3 + 10, x3 + 3, y3 - 10, layer='CLphantom') # '구성선' 회색선
line(doc, x7 + 3, y7 + 10, x7 + 3, y7 - 10, layer='CLphantom') # '구성선' 회색선
d(doc, x3 + 3, y3 + 3, x1, y1, 110, direction="left")
d(doc, x11, y11, x10, y10, 180, direction="right")
d(doc, x3, y3, x4, y4, 100, direction="up")
d(doc, x1, y1, x3 + 3, y1, 100, direction="down")
dc(doc, x7 + 3, y1)
dc(doc, x10, y10)
d(doc, x1, y1, x10, y10, 200, direction="down")
##################### part 설명 ##########################
mx = frameXpos + 1500 + (OP - 900)
my = frameYpos + 400
desx = mx - 1500
desy = my + 200
text = 'BACK COVER'
unitsu = SU
textstr = f" CAR TRANSOM의 BACK COVER임."
draw_Text(doc, desx, desy , 25, str(textstr), layer='0')
textstr = f"Part Name : {text}"
draw_Text(doc, desx, desy - 50, 25, str(textstr), layer='0')
textstr = f"Mat.Spec : 445 1.5T/1.2T 가능 "
draw_Text(doc, desx, desy - 100, 25, str(textstr), layer='0')
textstr = f"Quantity : {unitsu} SET"
draw_Text(doc, desx, desy - 150, 25, str(textstr), layer='0')
listdata = [] # 주기표 테이블을 위한 listdata 초기화
cxlist = [] # 주기를 위한 리스트
cxlist.append([1, x1, y1, x1 + 200, y1 + 400])
cxlist.append([2, x1, y1, x1 + 200, y1 + 270])
cxlist.sort(key=lambda x: x[0])
for item in cxlist:
index, x1, y1, x2, y2 = item
if index == 1:
listdata.append(["", f"{SU}", str(index).zfill(2), f"TRANSOM", "MT'L", dwgnum_dict.get("TRANSOM BRACKET")])
return listdata
최종 결과물
이제 모든 과정을 거쳐 설계된 백커버 전개도는 완성되었습니다. 설계에 포함된 곡선, 구성선, 치수, 주석은 백커버의 정확한 제작과 품질 검증을 가능하게 합니다.
이 글을 참고하여 여러분의 설계 작업에 적용해 보세요. 효율적이고 체계적인 설계를 위한 좋은 출발점이 될 것입니다.
'IT tech Coding > python' 카테고리의 다른 글
dim_angular 함수를 제대로 사용해 보기... 이거 쉽지 않네요~ (0) | 2025.01.09 |
---|---|
pythonanywhere의 VS Code를 통한 SSH 문제 해결방법 찾기 (0) | 2024.12.22 |
python 캐드 치수선 '직선거리' 1000 치수선 성질 유지하기 ezdxf (0) | 2024.12.12 |
python 조건문 활용으로 프로그래밍 효율성을 높이는 방법 (0) | 2024.12.05 |
[파이썬] 도면 자동작도를 위한 import 정리 (0) | 2024.11.20 |
- Total
- Today
- Yesterday
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 효율적코딩방법
- #프로그램설치
- 뫄프로그래밍
- 코딩튜토리얼
- isset을 적용해야 하는 이유
- 오토핫키가이드
- 구글드라이브API
- 파이썬코드줄바꿈방법
- chatGPT3.5파이썬버전
- 캐드자동작도
- 코딩효율성
- json파일편하게보는법
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- ajax오류메시지
- General error: 2031
- 프로그래머생활
- Bootstrap 5
- 엑셀보호
- 엑셀셀보호
- 테크에능한여성
- 도면자동생성
- #파이썬패키징
- json파일형태보기
- 티스토리챌린지
- 스크립트작성기초
- 엑셀입력보호
- #InstallForge
- sql문장 날짜계산
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |