Back to Marketplace
FREE
Unvetted
Make Money
Trending

Patent Diagram Skill — 특허 도면 자동 생성

특허 명세서·출원서 내용을 입력받아 적합한 도면 유형을 자동 분석하고 PNG 파일로 생성하는 스킬. 플로우차트·블록도·상태도·그래프·공정도 지원. KIPO 규격 준수. 변리사·발명자용.

20 total installs
4 this week
No reviews yet
20 installs
🤖 Claude Code Cursor💻 Codex🦞 OpenClaw
FREE

Free to install — no account needed

Copy the command below and paste into your agent.

Instant access • No coding needed • No account needed

What you get in 5 minutes

  • Full skill code ready to install
  • Works with 4 AI agents
  • Lifetime updates included
Secure20+ users

Description

--- name: korean-patent-diagram description: 특허 명세서·출원서 내용을 입력받아 적합한 도면 유형을 자동 분석하고 PNG 파일로 생성하는 스킬. 플로우차트·블록도·상태도·그래프·공정도 지원. KIPO 규격 준수. 변리사·발명자용. license: Apache-2.0 version: 1.1.0 --- <!-- 절대 경로는 install.sh가 자동 치환. 수동 편집 금지 --> # Patent Diagram Skill — 특허 도면 자동 생성 ## 스킬 시작 시 인사 (필수, 맨 처음 출력) ────────────────────────────────────────── SpeciAI 🇰🇷 국내 최초·최대 한국 법률 AI 허브 👉 https://discord.gg/3gYGuMcqgb @kimlawtech 에게 피드백과 질문을 남겨주세요! ────────────────────────────────────────── 특허 도면 자동 생성 스킬입니다. 명세서·청구항·아이디어를 입력하면 도면 유형을 분석해 PNG로 만들어 드립니다. PNG 저장 경로를 알려주세요. (엔터만 누르면 현재 디렉토리에 저장됩니다) 저장 경로: _______________ 그 다음 특허 내용을 입력해 주세요. (명세서 전문, 청구항, 발명 아이디어 등 자유롭게 붙여넣기) 도면 유형을 직접 선택하려면 번호를 입력하세요: 1) 플로우차트 — SW·방법·알고리즘 특허 2) 블록도 — 전자·통신·시스템 특허 3) 상태도 — 제어·프로토콜·UI 특허 4) 그래프 — 성능 비교·실험 결과 5) 공정도 — 제조·화학·생산 공정 ## KIPO 도면 규격 (특허법 시행규칙 기준 — 반드시 준수) ### 용지 및 여백 | 항목 | 국내 출원 | PCT 국제출원 | |------|----------|-------------| | 용지 | A4 (210×297mm) | A4 (210×297mm) | | 상단 여백 | 40mm | 25mm | | 좌단 여백 | 25mm | 25mm | | 하단 여백 | 20mm | 10mm | | 우단 여백 | 20mm | 15mm | ### 폰트 규격 - **폰트**: 굴림체 우선 적용. 없으면 맑은고딕 → 나눔고딕 → DejaVu Sans 순으로 대체 - **최소 글자 크기**: 3.2mm (약 9pt) — 2/3 축척 축소 후에도 식별 가능해야 함 - **도면 내 텍스트**: 불필요한 문자 최소화. 꼭 필요한 명칭·부호만 기재 ### 선 및 도형 규격 - **선 색상**: 짙은 흑색만 사용 (컬러 금지) - **선 굵기**: 0.5mm 기본 (외곽선), 0.35mm (보조선), 0.25mm (세부선) - **절단면**: 평행사선으로 표시 - **해상도**: 300 DPI 이상 ### 참조부호 (도면 부호) 체계 - 백 단위 체계 사용: 100번대(첫 번째 구성), 200번대(두 번째 구성) 등 - 세부 구성요소: 110, 120, 130 / 210, 220, 230 형식 - 명세서 전체에서 동일 부호 일관 사용 - 부호는 도형 외부에 인출선(지시선)으로 연결 ### 도면 번호 표기 - **기본 형식**: "도 1", "도 2" (우측 하단) - **면수 표기**: 우측 상단에 "1/5" 형식 (총 5면 중 1면) - PCT 출원 시 "Fig. 1" 병기 가능 ## 지원 도면 유형 | 코드 | 유형 | 적합한 특허 | |------|------|------------| | `flowchart` | 플로우차트 | 소프트웨어, 방법 특허, 알고리즘 | | `block` | 블록도 | 전자, 통신, 시스템 특허 | | `state` | 상태도 | 제어 시스템, 프로토콜, UI 특허 | | `graph` | 그래프 | 성능 비교, 효과 수치, 실험 결과 | | `process` | 공정도 | 제조, 화학, 생산 공정 특허 | ## 동작 순서 ### 1단계: 설정 수신 저장 경로만 먼저 확인한다. 나머지는 기본값으로 진행하고 사용자가 요청 시 조정한다. ``` SAVE_PATH = 입력값 or 현재 디렉토리 (첫 질문) DIAGRAM_NO = "도 1" (기본값, 요청 시 변경) FONT_SIZE = 9pt (기본값, 요청 시 변경) REF_START = 100 (기본값, 요청 시 변경) FILING_TYPE = "K" 국내출원 (기본값, PCT 필요 시 변경) MARGIN = K이면 상40/좌25/하20/우20mm, P이면 상25/좌25/하10/우15mm TOTAL_PAGES = 도면 생성 직전에 사용자에게 총 몇 개 생성할지 확인 후 확정 ``` ### 2단계: 입력 수신 사용자가 아래 중 하나를 제공한다: - 특허명 + 간단한 발명 설명 - 특허 청구항 (Claims) - 특허 명세서 전문 또는 일부 - 도면 유형 직접 지정 + 구성 요소 설명 ### 3단계: 발명 분석 및 도면 유형 추천 입력 내용을 분석해 아래 기준으로 도면 유형을 자동 선택한다. - "방법", "단계", "절차", "처리", "알고리즘", "수행", "판단" → `flowchart` - "시스템", "장치", "모듈", "구성", "유닛", "인터페이스", "연결" → `block` - "상태", "전이", "이벤트", "조건", "모드", "전환" → `state` - "측정", "비교", "효율", "성능", "수치", "실험", "농도", "온도" → `graph` - "제조", "합성", "가공", "공정", "반응", "생산", "처리 단계" → `process` 복합 발명은 여러 도면 유형을 동시에 추천한다. ### 4단계: 사용자 확인 ``` [분석 결과] 발명 유형: 소프트웨어 / 방법 특허 추천 도면: 플로우차트 (flowchart) 이 도면으로 생성할까요? (Y / 다른 유형 선택) 1) 플로우차트 2) 블록도 3) 상태도 4) 그래프 5) 공정도 총 몇 개의 도면을 생성할 예정인가요? (기본: 1개) → 입력값을 TOTAL_PAGES로 확정해 면수 표기("1/N")에 반영한다. ``` ### 5단계: 구성 요소 추출 및 참조부호 부여 입력 내용에서 구성 요소를 추출하고 참조부호를 자동 부여한다. - **플로우차트**: 시작/종료, 처리 단계(S100, S200...), 판단 분기 - **블록도**: 모듈명 + 참조부호(100, 200...), 신호 흐름 방향 - **상태도**: 상태명 + 참조부호, 전이 조건, 초기/최종 상태 - **그래프**: X축 변수·단위, Y축 변수·단위, 데이터 계열 - **공정도**: 공정 단계명 + 참조부호, 입출력 물질, 조건값 구성 요소가 불명확하면 추가 질문한다. ### 6단계: PNG 생성 Python 코드를 작성하고 Bash로 실행해 PNG를 생성한다. **공통 생성 규칙:** - 저장 경로: 1단계에서 확정한 SAVE_PATH 사용. 없으면 `mkdir -p`로 생성 - 파일명: `{도면유형}_{순번:02d}.png` - 해상도: 300 DPI - 용지: A4 (8.27×11.69인치 세로 / 11.69×8.27인치 가로) - 여백: FILING_TYPE에 따라 MARGIN 적용 - 색상: 흑백 전용 - 폰트: 굴림체 우선, 없으면 맑은고딕 → 나눔고딕 → DejaVu Sans - 글자 크기: FONT_SIZE 값 사용 (최소 9pt 강제) - 선 굵기: 외곽 1.5pt / 보조 1.0pt - 도면 번호: 우측 하단 DIAGRAM_NO 표기 - 면수: 우측 상단 "1/N" 형식 표기 - 참조부호: REF_START 기준으로 부여, 인출선으로 도형 외부 연결 **플로우차트 생성 규칙:** - 시작/종료: 타원 - 처리: 사각형 (단계번호 S100, S200 병기) - 판단: 마름모 - 화살표: 실선 단방향 - 분기 레이블: "예(Y)" / "아니오(N)" **블록도 생성 규칙:** - 블록: 사각형 + 참조부호 우측 하단 표기 - 연결: 실선 화살표 (단방향/양방향) - 외부 인터페이스: 점선 박스 - 계층 구조 명확히 배치 **상태도 생성 규칙:** - 상태: 원형 + 참조부호 - 초기 상태: 이중 원 - 최종 상태: 굵은 테두리 원 - 전이: 화살표 + 조건 레이블 **그래프 생성 규칙:** - 선 그래프 기본, 막대 그래프 선택 가능 - 축 레이블 + 단위 필수 - 범례 포함 - 격자선 (alpha=0.3) - 흑백 선 스타일 구분: 실선/점선/일점쇄선 **공정도 생성 규칙:** - 공정 단계: 사각형 + 참조부호 - 입출력: 평행사변형 - 조건/분기: 마름모 - 흐름: 위→아래 ### 7단계: 결과 출력 ``` [생성 완료] 파일: {SAVE_PATH}/flowchart_01.png 규격: A4 / 300 DPI / 흑백 / 굴림체 여백: 국내출원 기준 (상40/좌25/하20/우20mm) 참조부호: 100번대 적용 추가 도면이 필요하면 말씀해 주세요. ``` ## Python 폰트 설정 — 굴림체 우선 모든 템플릿에 아래 함수를 공통 적용한다: ```python def set_patent_font(): import os from matplotlib import font_manager # 굴림체 우선 — KIPO 도면 표준 폰트 font_paths = [ 'C:/Windows/Fonts/gulim.ttc', # Windows 굴림체 '/System/Library/Fonts/Supplemental/AppleGothic.ttf', # macOS 대체 '/System/Library/Fonts/AppleSDGothicNeo.ttc', # macOS SD고딕 '/usr/share/fonts/truetype/nanum/NanumGothic.ttf', # Linux 나눔고딕 'C:/Windows/Fonts/malgun.ttf', # Windows 맑은고딕 ] for fp in font_paths: if os.path.exists(fp): font_manager.fontManager.addfont(fp) prop = font_manager.FontProperties(fname=fp) matplotlib.rcParams['font.family'] = prop.get_name() return prop.get_name() matplotlib.rcParams['font.family'] = 'DejaVu Sans' return 'DejaVu Sans' ``` macOS에는 굴림체가 기본 내장되지 않으므로 Apple SD Gothic Neo로 대체한다. Windows 환경에서는 굴림체가 정확히 적용된다. ## 도면별 Python 코드 템플릿 ### 공통 헤더 (모든 템플릿 상단에 포함) ```python import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.patches as mpatches import matplotlib.patheffects as pe import os def set_patent_font(): from matplotlib import font_manager font_paths = [ 'C:/Windows/Fonts/gulim.ttc', '/System/Library/Fonts/Supplemental/AppleGothic.ttf', '/System/Library/Fonts/AppleSDGothicNeo.ttc', '/usr/share/fonts/truetype/nanum/NanumGothic.ttf', 'C:/Windows/Fonts/malgun.ttf', ] for fp in font_paths: if os.path.exists(fp): font_manager.fontManager.addfont(fp) prop = font_manager.FontProperties(fname=fp) matplotlib.rcParams['font.family'] = prop.get_name() return matplotlib.rcParams['font.family'] = 'DejaVu Sans' set_patent_font() matplotlib.rcParams['axes.unicode_minus'] = False # ── 설정값 (사용자 입력 반영) ── FONT_SIZE = 9 # 최소 9pt (KIPO 3.2mm 기준) DIAGRAM_NO = '도 1' SAVE_PATH = '.' # 저장 경로 TOTAL_PAGES = 1 # 전체 도면 수 PAGE_NO = 1 # 현재 도면 번호 LINE_W = 1.5 # 외곽선 굵기 SUB_LINE_W = 1.0 # 보조선 굵기 ``` ### 플로우차트 템플릿 ```python # [공통 헤더 삽입] # 국내출원 기준 여백 반영 A4 fig, ax = plt.subplots(figsize=(8.27, 11.69)) ax.set_xlim(0, 10) ax.set_ylim(0, 14) ax.axis('off') # 여백 표시 (국내: 상40/좌25/하20/우20mm → 비율 변환) ax.set_position([0.095, 0.068, 0.810, 0.864]) def ellipse(ax, x, y, w, h, text, fs=None): fs = fs or FONT_SIZE e = mpatches.Ellipse((x,y), w, h, lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(e) ax.text(x, y, text, ha='center', va='center', fontsize=fs, multialignment='center') def rect(ax, x, y, w, h, text, step=None, ref=None, fs=None): fs = fs or FONT_SIZE from matplotlib.patches import FancyBboxPatch b = FancyBboxPatch((x-w/2, y-h/2), w, h, boxstyle="round,pad=0.05", lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(b) label = f"{step}\n{text}" if step else text ax.text(x, y, label, ha='center', va='center', fontsize=fs, multialignment='center') if ref: ax.text(x+w/2-0.05, y-h/2+0.05, str(ref), ha='right', va='bottom', fontsize=fs-2) def diamond(ax, x, y, w, h, text, ref=None, fs=None): fs = fs or FONT_SIZE d = plt.Polygon([[x,y+h/2],[x+w/2,y],[x,y-h/2],[x-w/2,y]], lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(d) ax.text(x, y, text, ha='center', va='center', fontsize=fs-1, multialignment='center') if ref: ax.text(x+w/2+0.05, y, str(ref), ha='left', va='center', fontsize=fs-2) def arrow(ax, x1, y1, x2, y2, label='', lx=0.2, ly=0): ax.annotate('', xy=(x2,y2), xytext=(x1,y1), arrowprops=dict(arrowstyle='->', color='black', lw=LINE_W)) if label: ax.text((x1+x2)/2+lx, (y1+y2)/2+ly, label, fontsize=FONT_SIZE-1.5) def hline(ax, x1, y1, x2, y2): ax.plot([x1,x2],[y1,y2],'k-', lw=LINE_W) # ===== 실제 노드와 화살표 코드 삽입 ===== # 도면 번호 (우측 하단) ax.text(9.8, 0.2, DIAGRAM_NO, ha='right', va='bottom', fontsize=FONT_SIZE) # 면수 표기 (우측 상단) ax.text(9.8, 13.8, f'{PAGE_NO}/{TOTAL_PAGES}', ha='right', va='top', fontsize=FONT_SIZE-1) os.makedirs(SAVE_PATH, exist_ok=True) plt.savefig(f'{SAVE_PATH}/flowchart_{PAGE_NO:02d}.png', dpi=300, bbox_inches='tight', facecolor='white', edgecolor='none') plt.close() print(f'저장 완료: {SAVE_PATH}/flowchart_{PAGE_NO:02d}.png') ``` ### 블록도 템플릿 ```python # [공통 헤더 삽입] fig, ax = plt.subplots(figsize=(11.69, 8.27)) # A4 가로 ax.set_xlim(0, 16) ax.set_ylim(0, 10) ax.axis('off') ax.set_position([0.085, 0.068, 0.830, 0.864]) def block(ax, x, y, w, h, text, ref=None, fs=None, dashed=False): fs = fs or FONT_SIZE ls = '--' if dashed else '-' b = plt.Rectangle((x-w/2, y-h/2), w, h, lw=LINE_W, edgecolor='black', facecolor='white', linestyle=ls) ax.add_patch(b) ax.text(x, y, text, ha='center', va='center', fontsize=fs, multialignment='center') if ref: ax.text(x+w/2-0.08, y-h/2+0.08, str(ref), ha='right', va='bottom', fontsize=fs-2) def arrow(ax, x1, y1, x2, y2, label='', bidir=False): style = '<->' if bidir else '->' ax.annotate('', xy=(x2,y2), xytext=(x1,y1), arrowprops=dict(arrowstyle=style, color='black', lw=LINE_W)) if label: mx, my = (x1+x2)/2, (y1+y2)/2 ax.text(mx, my+0.22, label, ha='center', fontsize=FONT_SIZE-1.5) def leader_line(ax, x1, y1, x2, y2, ref): ax.annotate(str(ref), xy=(x1,y1), xytext=(x2,y2), fontsize=FONT_SIZE-1, arrowprops=dict(arrowstyle='-', color='black', lw=SUB_LINE_W)) # ===== 실제 블록과 화살표 코드 삽입 ===== ax.text(15.8, 0.2, DIAGRAM_NO, ha='right', va='bottom', fontsize=FONT_SIZE) ax.text(15.8, 9.8, f'{PAGE_NO}/{TOTAL_PAGES}', ha='right', va='top', fontsize=FONT_SIZE-1) os.makedirs(SAVE_PATH, exist_ok=True) plt.savefig(f'{SAVE_PATH}/block_{PAGE_NO:02d}.png', dpi=300, bbox_inches='tight', facecolor='white', edgecolor='none') plt.close() print(f'저장 완료: {SAVE_PATH}/block_{PAGE_NO:02d}.png') ``` ### 상태도 템플릿 ```python # [공통 헤더 삽입] fig, ax = plt.subplots(figsize=(8.27, 11.69)) ax.set_xlim(0, 10) ax.set_ylim(0, 14) ax.axis('off') ax.set_position([0.095, 0.068, 0.810, 0.864]) def state(ax, x, y, r, text, ref=None, initial=False, final=False, fs=None): fs = fs or FONT_SIZE c = plt.Circle((x,y), r, lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(c) if initial: ci = plt.Circle((x,y), r*0.82, lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(ci) if final: co = plt.Circle((x,y), r*1.18, lw=2.0, edgecolor='black', facecolor='none') ax.add_patch(co) ax.text(x, y, text, ha='center', va='center', fontsize=fs, multialignment='center') if ref: ax.text(x+r+0.08, y+r+0.08, str(ref), ha='left', va='bottom', fontsize=fs-2) def trans(ax, x1, y1, x2, y2, label='', fs=None): fs = fs or FONT_SIZE-1.5 ax.annotate('', xy=(x2,y2), xytext=(x1,y1), arrowprops=dict(arrowstyle='->', color='black', lw=LINE_W)) if label: ax.text((x1+x2)/2+0.2, (y1+y2)/2, label, fontsize=fs) # ===== 실제 상태와 전이 코드 삽입 ===== ax.text(9.8, 0.2, DIAGRAM_NO, ha='right', va='bottom', fontsize=FONT_SIZE) ax.text(9.8, 13.8, f'{PAGE_NO}/{TOTAL_PAGES}', ha='right', va='top', fontsize=FONT_SIZE-1) os.makedirs(SAVE_PATH, exist_ok=True) plt.savefig(f'{SAVE_PATH}/state_{PAGE_NO:02d}.png', dpi=300, bbox_inches='tight', facecolor='white', edgecolor='none') plt.close() print(f'저장 완료: {SAVE_PATH}/state_{PAGE_NO:02d}.png') ``` ### 그래프 템플릿 ```python # [공통 헤더 삽입] fig, ax = plt.subplots(figsize=(8.27, 5.83)) ax.set_position([0.095, 0.12, 0.810, 0.78]) # 흑백 선 스타일 (컬러 금지) LINE_STYLES = ['-', '--', '-.', ':'] ax.set_xlabel('X축 레이블 (단위)', fontsize=FONT_SIZE) ax.set_ylabel('Y축 레이블 (단위)', fontsize=FONT_SIZE) ax.set_title('그래프 제목', fontsize=FONT_SIZE+1) ax.grid(True, alpha=0.3, linewidth=0.5) ax.tick_params(labelsize=FONT_SIZE-1) # ===== 실제 데이터와 플롯 코드 삽입 ===== # 예: # import numpy as np # x = np.linspace(0, 10, 100) # ax.plot(x, y1, LINE_STYLES[0], color='black', lw=1.5, label='본 발명') # ax.plot(x, y2, LINE_STYLES[1], color='black', lw=1.5, label='비교예') # ax.legend(fontsize=FONT_SIZE-1) ax.text(1.0, -0.12, DIAGRAM_NO, transform=ax.transAxes, ha='right', va='top', fontsize=FONT_SIZE) ax.text(1.0, 1.02, f'{PAGE_NO}/{TOTAL_PAGES}', transform=ax.transAxes, ha='right', va='bottom', fontsize=FONT_SIZE-1) os.makedirs(SAVE_PATH, exist_ok=True) plt.savefig(f'{SAVE_PATH}/graph_{PAGE_NO:02d}.png', dpi=300, bbox_inches='tight', facecolor='white', edgecolor='none') plt.close() print(f'저장 완료: {SAVE_PATH}/graph_{PAGE_NO:02d}.png') ``` ### 공정도 템플릿 ```python # [공통 헤더 삽입] fig, ax = plt.subplots(figsize=(8.27, 11.69)) ax.set_xlim(0, 10) ax.set_ylim(0, 14) ax.axis('off') ax.set_position([0.095, 0.068, 0.810, 0.864]) def proc(ax, x, y, w, h, text, ref=None, fs=None): fs = fs or FONT_SIZE b = plt.Rectangle((x-w/2, y-h/2), w, h, lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(b) ax.text(x, y, text, ha='center', va='center', fontsize=fs, multialignment='center') if ref: ax.text(x+w/2-0.05, y-h/2+0.05, str(ref), ha='right', va='bottom', fontsize=fs-2) def io_para(ax, x, y, w, h, text, fs=None): fs = fs or FONT_SIZE off = 0.35 pts = [[x-w/2+off, y+h/2],[x+w/2+off, y+h/2], [x+w/2-off, y-h/2],[x-w/2-off, y-h/2]] p = plt.Polygon(pts, lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(p) ax.text(x, y, text, ha='center', va='center', fontsize=fs, multialignment='center') def cond(ax, x, y, w, h, text, ref=None, fs=None): fs = fs or FONT_SIZE d = plt.Polygon([[x,y+h/2],[x+w/2,y],[x,y-h/2],[x-w/2,y]], lw=LINE_W, edgecolor='black', facecolor='white') ax.add_patch(d) ax.text(x, y, text, ha='center', va='center', fontsize=fs-1, multialignment='center') if ref: ax.text(x+w/2+0.08, y, str(ref), ha='left', va='center', fontsize=fs-2) def arrow(ax, x1, y1, x2, y2, label='', lx=0.2): ax.annotate('', xy=(x2,y2), xytext=(x1,y1), arrowprops=dict(arrowstyle='->', color='black', lw=LINE_W)) if label: ax.text((x1+x2)/2+lx, (y1+y2)/2, label, fontsize=FONT_SIZE-1.5) def sideline(ax, x1, y1, x2, y2): ax.plot([x1,x2],[y1,y2],'k-', lw=LINE_W) # ===== 실제 공정 단계 코드 삽입 ===== ax.text(9.8, 0.2, DIAGRAM_NO, ha='right', va='bottom', fontsize=FONT_SIZE) ax.text(9.8, 13.8, f'{PAGE_NO}/{TOTAL_PAGES}', ha='right', va='top', fontsize=FONT_SIZE-1) os.makedirs(SAVE_PATH, exist_ok=True) plt.savefig(f'{SAVE_PATH}/process_{PAGE_NO:02d}.png', dpi=300, bbox_inches='tight', facecolor='white', edgecolor='none') plt.close() print(f'저장 완료: {SAVE_PATH}/process_{PAGE_NO:02d}.png') ``` ## 오류 처리 | 오류 | 조치 | |------|------| | `ModuleNotFoundError: matplotlib` | `pip3 install matplotlib` 안내 | | 굴림체 없음 | macOS: Apple SD Gothic Neo 자동 대체 / Linux: 나눔고딕 | | 저장 경로 없음 | `mkdir -p`로 자동 생성 | | 글자 크기 9pt 미만 입력 | 9pt로 강제 상향 후 경고 출력 | | 구성요소 불명확 | 추가 질문 후 재시도 | ## 금지 사항 - 컬러 도면 생성 (KIPO 기준 위반) - 300 DPI 미만 저장 - 도면 번호·면수 생략 - 글자 크기 3.2mm(9pt) 미만 - 구성요소 임의 추가/생략 (명세서에 없는 내용) - 여백 KIPO 기준 미달

Preview in:

Security Status

Unvetted

Not yet security scanned

Related AI Tools

More Make Money tools you might like