diff --git a/.claude/settings.json b/.claude/settings.json index 80e3a98..e4efb3d 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -56,7 +56,76 @@ "Bash(head -20 /d/ad-hoc/kei/design_agent/samples/mdx/01*.mdx)", "Bash(head -20 /d/ad-hoc/kei/design_agent/samples/mdx/02*.mdx)", "Bash(head -20 /d/ad-hoc/kei/design_agent/samples/mdx/03*.mdx)", - "Bash(ls -la /d/ad-hoc/kei/design_agent/data/runs/20260413_*/)" + "Bash(ls -la /d/ad-hoc/kei/design_agent/data/runs/20260413_*/)", + "Bash(python -c \"from src.config import settings; print\\(f'API configured: {bool\\(settings.anthropic_api_key\\)}'\\)\")", + "Bash(python run_test.py)", + "Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:8000/health)", + "Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:8000/)", + "Read(//d/ad-hoc/kei/**)", + "Bash(curl -s http://localhost:8000/docs)", + "Bash(taskkill //F //IM python.exe)", + "Bash(python assemble_mdx02_test.py)", + "Bash(wc -c data/runs/20260407_*/final.html)", + "Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:8000/docs)", + "Bash(curl -s http://localhost:8080/docs -o /dev/null -w \"%{http_code}\")", + "Bash(curl -s http://localhost:8001/docs -o /dev/null -w \"%{http_code}\")", + "Bash(curl -s http://localhost:3000/ -o /dev/null -w \"%{http_code}\")", + "Bash(python assemble_mdx02_v3.py)", + "Bash(python assemble_mdx02_v4.py)", + "Bash(python assemble_mdx02_v5.py)", + "Bash(python assemble_mdx02_v6.py)", + "Bash(python assemble_mdx02_v7.py)", + "Bash(python assemble_mdx02_v8_3plans.py)", + "Bash(python assemble_mdx02_v9.py)", + "Bash(python build_plan1.py)", + "Bash(python build_plan2.py)", + "Bash(python build_plan3.py)", + "Bash(python build_plan1_v2.py)", + "Bash(python build_4plans_final.py)", + "Bash(curl -s -o /dev/null -w \"%{http_code}\" http://127.0.0.1:8000/docs)", + "Bash(uvicorn backend.main:app --port 8000)", + "Bash(python final_plan1.py)", + "Bash(python final_plan2.py)", + "Bash(python build_all_4plans.py)", + "Bash(python build_plan3_kei.py)", + "Bash(python build_plan4_kei.py)", + "Bash(python make_4plans.py)", + "Bash(ls -la \"d:/ad-hoc/kei/design_agent/figma_to_html_agent/block-tests/html_render_final\"*)", + "Bash(taskkill //PID 48540 //F)", + "Bash(python make_mdx03.py)", + "Bash(python run_mdx03_pipeline.py)", + "Bash(powershell -Command \"Get-Process python -ErrorAction SilentlyContinue | Select-Object Id,StartTime\")", + "Bash(grep \"class FontHierarchy\" src/*.py)", + "Bash(ls -ltr /d/ad-hoc/kei/design_agent/data/runs/*/step_*_context.json)", + "Bash(awk '{print $2}')", + "Bash(stat /d/ad-hoc/kei/design_agent/data/runs/20260414_120225/stage_*_context.json)", + "Bash(ls -la /d/ad-hoc/kei/design_agent/data/runs/20260414_120225/stage_*_context.json)", + "Bash(awk '{print $6, $7, $8, $9}')", + "Bash(ls -lt data/runs/20260414_120225/*_context.json)", + "Bash(awk '{print $6,$7,$8,$9}')", + "Bash(python -c \" import yaml with open\\('catalog.yaml'\\) as f: data = yaml.safe_load\\(f\\) blocks = data.get\\('blocks', []\\) for b in blocks: print\\(f\\\\\"{b['id']} | {b.get\\('category',''\\)} | items:{b.get\\('min_items','?'\\)}-{b.get\\('max_items','?'\\)}\\\\\"\\) \")", + "Bash(python add_tags.py)", + "Bash(python -c \"import src.block_reference; print\\('OK'\\)\")", + "Bash(python -c \"import src.block_assembler; print\\('OK'\\)\")", + "Bash(ls -t d:/ad-hoc/kei/design_agent/docs/history/PHASE-*.md d:/ad-hoc/kei/design_agent/docs/history/IMPROVEMENT-PHASE-*.md)", + "Bash(python -c \"import src.pipeline_context; import src.kei_client; import src.pipeline; print\\('모든 import OK'\\)\")", + "Bash(python -c \"import src.step_visualizer; import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.block_assembler; print\\('OK'\\)\")", + "Bash(python -c \"import src.block_assembler; import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.kei_client; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.block_assembler; import src.pipeline_context; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.validators; print\\('OK'\\)\")", + "Bash(python -c \"import src.validators; print\\('OK'\\)\")", + "Bash(python -c \"import src.validators; import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.section_parser; import src.block_assembler; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.block_assembler; import src.section_parser; print\\('OK'\\)\")", + "Bash(python -c \"import src.pipeline; import src.block_assembler; import src.space_allocator; import src.pipeline_context; print\\('OK'\\)\")", + "Bash(grep -l \"pp2-grid-wrap\\\\|pp2\" templates/blocks/**/*.html)", + "Bash(echo file:///D:/ad-hoc/kei/design_agent/data/runs/20260415_110323/final.html)", + "Bash(python -c \"import src.block_reference; import src.section_parser; import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.block_assembler; import src.section_parser; import src.pipeline; print\\('OK'\\)\")", + "Bash(python -c \"import src.block_reference; import src.pipeline; import src.block_assembler; print\\('OK'\\)\")" ], "additionalDirectories": [ "d:\\ad-hoc\\kei\\design_agent\\templates\\blocks\\new" diff --git a/chromedriver/win64/146.0.7680.165/chromedriver.exe b/chromedriver/win64/146.0.7680.165/chromedriver.exe new file mode 100644 index 0000000..5128999 Binary files /dev/null and b/chromedriver/win64/146.0.7680.165/chromedriver.exe differ diff --git a/figma_to_html_agent/.gitignore b/figma_to_html_agent/.gitignore new file mode 100644 index 0000000..f13d763 --- /dev/null +++ b/figma_to_html_agent/.gitignore @@ -0,0 +1,29 @@ +# Legacy / 임시 파일 +block_index.faiss +block_metadata.json +figma_beps_full.json +figma_center_elements.json +figma_center_full.json +figma_frames.json +figma-analysis/ +figma-assets/ +figma-screenshots/ +figma_ref/ +previews/ +FIGMA-COMPONENT-EXTRACTION-PLAN.md +FIGMA-CONVERSION-REVIEW.md +FIGMA-DESIGN-LANGUAGE.md +FIGMA-EXTRACTION.md +INSIGHT-GRADIENT.md +PHASE-FIGMA-BLOCKS.md +PLAN.md +RESEARCH.md + +# Selenium 렌더 결과 / 비교 스크린샷 +block-tests/_renders/ +block-tests/*.png + +# Python +__pycache__/ +*.pyc +scripts/__pycache__/ diff --git a/figma_to_html_agent/CLAUDE.md b/figma_to_html_agent/CLAUDE.md index a9db12a..b12e1e0 100644 --- a/figma_to_html_agent/CLAUDE.md +++ b/figma_to_html_agent/CLAUDE.md @@ -19,7 +19,7 @@ Figma 프레임을 **수학적으로 정확하게** HTML/CSS로 변환하고, 6. **AI 역할 분담** — AI는 분류(고르기)만, 구성(만들기)은 코드. LLM은 px을 못 본다 7. **컨텍스트 관리는 compact로** — 한 세션에서 여러 프레임을 연속 작업할 수 있다. 컨텍스트가 무거워지면 `/compact` 로 핵심만 요약하고 계속 진행. 이유: 핵심 결정/구조/규칙은 모두 파일(CLAUDE.md, PROCESS.md, RULES.md, blocks_index.md, 산출물)에 박혀있어 compact 후에도 보존됨. 손실되는 건 시행착오/디버깅 과정 뿐이며, 이건 잃어도 OK. 매 프레임마다 새 세션을 강제하면 누적 학습이 silo되어 R13 같은 sub-pattern 발견의 즉시 적용이 불가능해짐. 8. **순수 CSS 우선, SVG는 곡선/필터에만** — 동적 재구성 위해 가능한 한 HTML div + linear-gradient 사용 -9. **프로모션 게이트는 사용자 전용** — 에이전트는 절대 `design_agent/templates/` 에 직접 쓰지 않는다. 모든 작업은 `figma_to_html_agent/` 안에서 끝나며, 본체 라이브러리 이전은 사용자 수동 검수 후 사용자 본인이 수행한다. +9. **프로모션은 사용자 승인 후 진행** — 1:1 HTML 검증 완료 후, 사용자 승인을 받아 `templates/blocks/new/`에 블록을 생성하고 `templates/blocks/svg/`에 이미지를 정리한다. catalog.yaml 등록과 blocks_index.md 업데이트까지 에이전트가 수행한다. 단, 사용자 승인 없이 프로모션하지 않는다. 10. **시맨틱 우선, Figma 평면 레이어 그대로 옮기지 말 것** — Figma의 평면 레이어 구조는 디자인 도구의 한계일 뿐, 의미 구조가 아니다. 마커+텍스트는 list item, 카드 묶음은 column unit, 등 시맨틱하게 재그룹핑하여 작성한다. RULES.md R13 (Custom-marker bullet list) 참조. 새로 발견되는 sub-pattern은 [blocks_index.md](blocks_index.md) "디자인 인사이트" 섹션에 누적한다. 11. **모든 슬롯은 기본 optional** — 1:1 단계에서 모든 슬롯이 채워져 있다고 해서 "이 블록은 필수" 로 해석하지 않는다. 같은 블록이 사진 없는/짧은/긴 mdx에 모두 매칭되어야 한다는 가정으로 설계한다. @@ -60,12 +60,18 @@ Figma 프레임을 **수학적으로 정확하게** HTML/CSS로 변환하고, ## 입출력 **입력:** Figma 파일 + 노드 ID (또는 현재 선택 노드) -**출력:** -- `block-tests/{slug}.html` — 변환 결과 +**출력 (변환):** +- `block-tests/{slug}.html` — 1:1 변환 결과 - `block-tests/{slug}_flat.md` — 플래튼/이상 탐지/변형 축 메모 - `assets/shared/...` — 공유 자산 캐시 - `blocks_index.md` 한 줄 추가 +**출력 (프로모션, 사용자 승인 후):** +- `templates/blocks/new/{pattern}.html` — AI가 재디자인 가능한 블록 (CSS + Jinja2) +- `templates/blocks/svg/{name}.png/svg` — 블록 공용 이미지 +- `templates/catalog.yaml` — 블록 등록 (content_structure, when, not_for) +- `blocks_index.md` 상태 → promoted + ## 폴더 구조 ``` @@ -73,9 +79,9 @@ figma_to_html_agent/ ← 에이전트 작업 영역 (staging) ├── CLAUDE.md ← 이 파일 (에이전트 명세) ├── PROCESS.md ← 10단계 운영 절차 (변환 핸드북) ├── MATH.md ← 수학 공식 레퍼런스 -├── RULES.md ← CSS 보정 규칙 (R1~R12) +├── RULES.md ← CSS 보정 규칙 (R1~R16) ├── PROCESS-CONTROL.md ← "찍어맞추기 금지" 규칙 -├── PLAN.md ← 현재 진행 현황 +├── README.md ← 사용법 가이드 ├── blocks_index.md ← 변환 완료 도서관 │ ├── scripts/ @@ -90,22 +96,22 @@ figma_to_html_agent/ ← 에이전트 작업 영역 (staging) │ ├── shared/ ← 해시 기반 자산 캐시 (재사용) │ └── frame_{id}/ ← 프레임 전용 자산 (legacy) │ -└── templates_staging/ ← Stage 2: Jinja2 추상화 - ├── {pattern_id}.html.j2 - └── {pattern_id}.meta.yaml ← when/slots/min_size_px 초안 +└── templates_staging/ ← Stage 2: Jinja2 추상화 (legacy, 현재 미사용) ──────────────────────────────────────────────────────── -🚧 프로모션 게이트 (사용자 수동 작업) 🚧 +프로모션 (사용자 승인 후 에이전트가 실행) ──────────────────────────────────────────────────────── -design_agent/ ← 본체 라이브러리 (에이전트 접근 금지) -└── templates/ - ├── blocks/{category}/ - │ └── {pattern_id}.html.j2 ← 사용자가 staging에서 이전 - └── catalog.yaml ← 사용자가 when/slots 등록 +design_agent/templates/ +├── blocks/ +│ ├── new/ ← Figma 추출 블록 (에이전트가 작성) +│ ├── svg/ ← 블록 공용 이미지 (에이전트가 정리) +│ ├── slide-base.html ← 고정 슬라이드 배경 +│ └── cards/, emphasis/, ... ← 기존 블록 +└── catalog.yaml ← 블록 등록 (에이전트가 업데이트) ``` -**중요:** 에이전트는 위 구분선 아래(`design_agent/templates/`)를 **절대 수정하지 않는다.** 그 영역은 사용자가 staging 결과물을 검수한 뒤 본인이 직접 프로모션한다. +**중요:** 프로모션(블록 생성, 이미지 정리, catalog 등록)은 사용자가 1:1 HTML을 검증하고 승인한 후에만 진행한다. 사용자 승인 없이 templates/ 를 수정하지 않는다. ## 금지 사항 @@ -116,6 +122,8 @@ design_agent/ ← 본체 라이브러리 (에이전트 접 - 블록 배경을 검정으로 표시 (미리보기는 항상 흰색 배경) - **이미지 해석으로 gradient 방향 판단** (멀티모달 금지, 데이터로만 판단 — PROCESS-CONTROL.md 참조) - **한 번에 여러 값 동시 수정** (gradient 각도와 border-radius 동시 변경 금지) +- **장식 요소를 이미지 슬롯(img src)으로 넣기** — gradient bar, ribbon, pill, badge, 오버레이 등은 CSS로 구현. AI가 색상/크기를 조정할 수 없는 이미지 의존 블록은 쓸 수 없다 +- **사용자 승인 없이 templates/ 수정** — 프로모션은 사용자 승인 후에만 - **여러 프레임을 한 세션에 변환** (1세션 1프레임 원칙) - **plus-darker 블렌드 사용** (Safari 전용 → multiply로 교체, RULES.md R10) - **Figma 인벤토리/지문/군집 같은 사전 분류** (work-creating-work, 패턴은 bottom-up으로 발견) diff --git a/figma_to_html_agent/README.md b/figma_to_html_agent/README.md new file mode 100644 index 0000000..c6ed17d --- /dev/null +++ b/figma_to_html_agent/README.md @@ -0,0 +1,165 @@ +# Figma → HTML Agent + +Figma 디자인 프레임을 **수학적으로 정확하게** HTML/CSS로 변환하고, design_agent의 **블록 라이브러리**로 축적하는 독립 에이전트. + +--- + +## 이 에이전트는 뭘 하는가? + +1. Figma 파일에서 프레임을 선택하면 +2. MCP(Figma Dev Mode)로 구조/스타일/스크린샷을 가져와서 +3. 수학적 계산(scale, gradient 변환, shadow 등)으로 1:1 HTML/CSS를 만들고 +4. AI가 재디자인할 수 있는 블록(순수 CSS + Jinja2 슬롯)으로 변환하여 +5. design_agent의 블록 라이브러리(`templates/blocks/`)에 편입한다 + +**핵심:** AI redesigner가 색상/크기/구조를 조정할 수 있도록, 장식 요소는 **CSS로 구현**하고 이미지는 crop/곡선/일러스트/사진만 남긴다. + +--- + +## 폴더 구조 + +``` +figma_to_html_agent/ +├── README.md ← 이 파일 (사용법) +├── CLAUDE.md ← 에이전트 명세 (11개 원칙) +├── PROCESS.md ← 10단계 변환 절차 핸드북 +├── MATH.md ← 수학 공식 (§1~9) +├── RULES.md ← CSS 보정 규칙 (R1~R16) +├── PROCESS-CONTROL.md ← 작업 규율 (찍어맞추기 금지 등) +├── blocks_index.md ← 변환 완료 도서관 + 디자인 인사이트 +│ +├── scripts/ +│ └── gradient_math.py ← SVG → CSS gradient 수학 변환 도구 +│ +├── block-tests/ ← 1:1 HTML 변환물 (원본 검증용) +│ ├── {slug}.html ← Figma 원본과 100% 동일한 정적 HTML +│ ├── {slug}_flat.md ← 플래튼/이상탐지/변형축 메모 +│ └── assets/ ← 이미지 에셋 +│ ├── shared/ ← 해시 기반 공유 캐시 +│ └── frame_{id}/ ← 프레임 전용 (legacy) +│ +└── templates_staging/ ← Jinja2 템플릿 초안 (legacy, 현재 미사용) +``` + +### 산출물 최종 위치 (design_agent 본체) + +``` +design_agent/ +└── templates/ + └── blocks/ + ├── new/ ← Figma 추출 블록 (8개) + ├── svg/ ← 블록 공용 이미지 (33개) + ├── slide-base.html ← 고정 슬라이드 배경 (16:9) + └── cards/, emphasis/, headers/, media/, visuals/, BEPs/, redesign/ +``` + +--- + +## 사용법 + +### 사전 준비 + +1. **Figma Desktop** 앱에서 대상 파일을 열고 **Dev Mode** 활성화 +2. `.mcp.json`에 Figma Desktop SSE 서버 등록 확인: + ```json + { "url": "http://127.0.0.1:3845/sse" } + ``` +3. Claude Code 세션 시작 + +### 변환 실행 (10단계) + +``` +STEP 0 에이전트가 blocks_index.md 읽기 → 기존 패턴 확인 +STEP 1 get_metadata — 구조 + bbox (XML) +STEP 2 get_design_context — gradient/filter/font (React+Tailwind) +STEP 3 get_screenshot — Figma 원본 PNG (검증용) +STEP 4 자산 다운로드 — block-tests/assets/shared/ 캐시 +STEP 5 flat.md 작성 — bottom-up 플래튼 + 이상탐지 + 변형축 +STEP 6 gradient 수학 변환 — scripts/gradient_math.py +STEP 7 HTML 작성 — 순수 CSS 우선, transform: scale() 균일 축소 +STEP 8 검증 — Figma 스크린샷과 비교 +STEP 9 저장 — block-tests/{slug}.html + flat.md +STEP 10 인덱스 업데이트 — blocks_index.md 1줄 추가 +``` + +**상세:** [PROCESS.md](PROCESS.md) 참조 + +### 블록 프로모션 (block-tests → templates/blocks/) + +1:1 HTML이 검증되면: + +1. **CSS 전환** — SVG/PNG 장식 요소를 CSS gradient/border-radius/shadow로 변환 + - CSS 전환 대상: gradient bar, ribbon, pill, badge, 오버레이 등 + - 이미지 유지 대상: crop/프레임 배치(R16), 곡선 아크, 아이콘, 일러스트, 실사 사진 +2. **블록 작성** — `templates/blocks/new/{pattern}.html` + - flex layout, width: 100%, Jinja2 슬롯 + - 수학적 계산 주석 (Figma px → scale → CSS 값) + - 이미지는 `svg/` 폴더에서 참조 (`{{ slot | default('svg/파일명') }}`) +3. **이미지 정리** — `templates/blocks/svg/`에 의미 있는 이름으로 저장 +4. **catalog.yaml 등록** — content_structure, when, not_for 작성 +5. **blocks_index.md 상태** — `staged` → `promoted` 업데이트 + +--- + +## 핵심 원칙 요약 + +| # | 원칙 | 설명 | +|---|------|------| +| 1 | 수학적 계산만 | Figma 좌표 → scale → CSS. 시행착오 px 조정 금지 | +| 2 | Bottom-up | leaf 노드부터 → 2개씩 묶기 → 계층 쌓기 | +| 3 | 순수 CSS 우선 | AI가 색상/크기 조정할 수 있게. SVG는 곡선/필터만 | +| 4 | 이미지 해석 금지 | gradient 방향은 데이터로. "보니까 ~인 것 같다" 금지 | +| 5 | 하드코딩 금지 | 결과물을 고치지 말고 프로세스를 고친다 | +| 6 | 전면 재작성 금지 | 80점에서 2개 고칠 때 구조를 갈아엎지 말 것 | +| 7 | 모든 슬롯 optional | 블록이 다양한 MDX에 매칭될 수 있게 | + +**상세:** [CLAUDE.md](CLAUDE.md), [PROCESS-CONTROL.md](PROCESS-CONTROL.md), [RULES.md](RULES.md) + +--- + +## 도구 + +| 도구 | 용도 | +|------|------| +| Figma MCP `get_metadata` | 프레임 구조 + 절대 좌표 (XML) | +| Figma MCP `get_design_context` | gradient/filter/font (React+Tailwind 코드) | +| Figma MCP `get_screenshot` | Figma 원본 PNG | +| `scripts/gradient_math.py` | SVG linearGradient → CSS linear-gradient 수학 변환 | +| Pillow | 이미지 픽셀 분석 (gradient 색상 추출, 이미지 해석 아님) | + +--- + +## 수학 공식 요약 + +| 공식 | 용도 | 상세 | +|------|------|------| +| `S = 1280 / W_figma` | 균일 축소 scale | MATH.md §1 | +| `CSS_angle = 90 - Figma_angle` | gradient 각도 변환 | MATH.md §2 | +| SVG `` → CSS | gradient stop % 변환 | gradient_math.py | +| `plus-darker → multiply` | blend mode 호환 | RULES.md R10 | +| bbox 비율 ≠ 텍스트 비율 → 회전 | rotation 감지 | RULES.md R11 | + +--- + +## 현재 상태 (2026-04-13) + +### 프로모션 완료 블록 (8개) + +| 패턴 | 원본 프레임 | 블록 위치 | +|------|-----------|---------| +| statement-pill-highlight | 1171281207 | blocks/new/ | +| stacked-arrow-list | 1171281180 | blocks/new/ | +| split-panel-numbered | 1171281202 | blocks/new/ | +| issues-paired-rows | 1171281194 | blocks/new/ | +| compare-vs-rows | 1171281195 | blocks/new/ | +| quadrant-2x2-issues | 1171281193 | blocks/new/ | +| cards-3col-persona | 1171281191 | blocks/new/ | +| cycle-3way-intersect | 1171281211 | blocks/new/ | + +### 공용 이미지 (templates/blocks/svg/, 33개) + +화살표, 아크, 뱃지, 아이콘, 배경 텍스처, 사진 등. 블록에서 `svg/파일명`으로 참조. + +### 고정 슬라이드 배경 + +`templates/blocks/slide-base.html` — 16:9 (1280×720), 상단 제목 + 구분선 + 본문 영역 + 하단 결론 pill. diff --git a/figma_to_html_agent/blocks_index.md b/figma_to_html_agent/blocks_index.md index 9bcdaae..94bf745 100644 --- a/figma_to_html_agent/blocks_index.md +++ b/figma_to_html_agent/blocks_index.md @@ -111,11 +111,10 @@ Sub-patterns: **bullet-list-with-marker (R13)** — 각 컬럼의 bullet_items --- -## templates_staging 대기열 +## 프로모션 완료 -> 2번째 등장한 패턴이 여기에 들어옴. 사용자 검수 후 design_agent 본체로 프로모션. - -(아직 없음) +> 8개 블록 모두 `templates/blocks/new/`로 프로모션 완료 (2026-04-13). +> 이미지 33개 `templates/blocks/svg/`로 통합. catalog.yaml 등록 완료. --- @@ -252,4 +251,4 @@ Sub-patterns: **bullet-list-with-marker (R13)** — 각 컬럼의 bullet_items | slug | frame | pattern | 위반 사항 | 처리 | |------|-------|---------|--------|------| -| [prerequisites-3col](block-tests/prerequisites-3col.html) | 45:15 / Frame 1171281190 | 3-column-comparison (legacy) | R8 위반 (수동 ×0.60290 곱셈, transform: scale 미사용), R9 미적용 (gradient text만, div 패턴 없음) | 재변환 권장. 동일 패턴 등장 시 신규 변환물 작성 후 이 행은 archive 처리. | +| [prerequisites-3col](block-tests/prerequisites-3col.html) | 45:15 / Frame 1171281190 | prerequisites-3col | **promoted** → [block](../../templates/blocks/new/prerequisites-3col.html) + [catalog](../../templates/catalog.yaml) | 2026-04-13. legacy HTML 기반 블록화. 순수 CSS (이미지 없음). | diff --git a/make_4plans.py b/make_4plans.py new file mode 100644 index 0000000..0e15079 --- /dev/null +++ b/make_4plans.py @@ -0,0 +1,274 @@ +"""MDX 02 최종 4안 — 처음부터 독립, CSS font-size override 금지. + +글씨 크기: 블록 CSS 원래 값 그대로. 절대 변경 금지. +zone 크기: 글씨 크기에 맞게 조정 (글씨가 기준, 레이아웃이 맞춤). + +안 1: 내 판단 + new/ only + 상단: cards-3col-persona 하단좌: stacked-arrow-list 하단우: cards-3col-persona(3주체) +안 2: 내 판단 + new/ + 기존 + 상단: card-compare-3col 하단좌: card-numbered 하단우: table-simple-striped +안 3: Kei 판단 + new/ only (Kei 응답: 상단1 하단좌4 하단우2 결론6) + 상단: cards-3col-persona 하단좌: split-panel-numbered 하단우: compare-vs-rows +안 4: Kei 판단 + new/ + 기존 (Kei 응답: 상단A 하단좌7 하단우H 결론6) + 상단: card-compare-3col 하단좌: issues-paired-rows 하단우: compare-3col-badge +""" +import base64, re +from pathlib import Path +from jinja2 import Environment, FileSystemLoader + +BLOCKS = Path("templates/blocks") +SVG = BLOCKS / "svg" +OUT = Path("data/runs/mdx02_4plans_final") +OUT.mkdir(parents=True, exist_ok=True) +env = Environment(loader=FileSystemLoader(str(BLOCKS)), autoescape=False) + +def b64(f): + p = SVG / f + if not p.exists(): return "" + ext = "svg+xml" if f.endswith(".svg") else "png" + return f"data:image/{ext};base64," + base64.b64encode(p.read_bytes()).decode() + +def clean(h): return re.sub(r'', '', h, flags=re.DOTALL).strip() + +img_uri = open("data/runs/mdx02_v4_test/slide_image.txt").read().strip() +title = "DX의 시행 목표 및 기대효과" +ft = '고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다' + +# slide-body: 1200×590px. 블록 글씨 크기에 맞춰 zone 크기 계산. +# 컨테이너 계산 → 글자수 예산 → overflow 방지 +IW = 500 # 이미지 +GAP = 10 +# zone 높이: 블록 필요 높이 기반 계산 +# new/ 블록(15~22px): 상단 244px, 하단 336px +# 기존 블록(13~15px): 상단 204px, 하단 310px +TH_NEW = 244 +BH_NEW = 336 +TH_OLD = 204 +BH_OLD = 310 + +# 원문 텍스트 +TOP = [ + ("안전과 품질", [ + "시설물의 요구 성능을 설계-시공-운영 전 과정에서 디지털로 검증하여 안전성 확보", + "Copy & Paste로 하향 평준화된 성과물의 하자 최소화고품질 성과물 제공"]), + ("생산성 향상", [ + "Analogue 기반 업무를 Digital 기반 프로세스로 전환하여 업무 속도·정확성·일관성 향상", + "건설 비용 및 유지관리비 절감, 건설 기간 단축, 인력투입 최소화를 통해 부가가치 제고"]), + ("소통과 신뢰", [ + "성과품과 Solution을 통한 협업 강화로 의사소통 효율 및 운영·유지관리편리성 증진", + "3D 모델 및 데이터 기반 검증을 통한 오류 최소화 및 Claim 예방으로 신뢰성 확보"]), +] +BL = [ + ("생산 방식", "수작업 의존의 반복 업무에서 벗어나, SW를 활용한 체계화된 방식으로 전환"), + ("인지·검토", "2D 도면 해석 중심에서 3D 모델 기반의 직관적 인지·검토 체계로 전환"), + ("협업 구조", "개별 문서 중심 협업에서 데이터 통합 기반의 정보 공유·관리 협업 환경으로 전환"), + ("검증·대응", "사후 대응 중심의 문제 처리에서 사전 검증 중심의 예방적 업무 방식으로 전환"), +] +BR = { + "headers": ["구분", "발주자", "시공자", "설계자"], + "rows": [ + ["필요 역량", "실행 의지와 합리적 판단", "기술 투자와 운영 역량", "SW개발 투자 역량"], + ["SW 기반 체계화", "행정 자동화로 생산성 향상", "체계적 공정관리로 신뢰성 확보", "설계 프로세스 체계화"], + ["3D 기반 전환", "직관적 시각화로 품질 향상", "안전성 제고 및 관리 편의", "3D 검증으로 설계 오류 방지"], + ["데이터 통합 협업", "원활한 의사소통으로 오류 감소", "협업 효율 및 서류 감소", "설계 신뢰도로 상호신뢰 증진"], + ["사전 검증 관리", "민원·소송 등 사전 예방", "설계·시공 오류 예방", "설계 책임 리스크 감소"], + ], +} + + +def wrap_slide(body_html, fname): + sb = clean((BLOCKS / "slide-base.html").read_text(encoding="utf-8")) + r = sb.replace('{{ title|default("슬라이드") }}', title) + r = r.replace('{{ title|default("슬라이드 제목") }}', title) + r = r.replace('{% block body %}{% endblock %}', body_html) + pill = b64("pill_scroll.png") + r = r.replace('{% if footer_text %}', '').replace('{% if footer_pill_bg %}', '') + r = r.replace('{{ footer_pill_bg }}', pill).replace('{% else %}', '') + r = r.replace('', '') + li = r.rfind('{% endif %}') + if li > 0: r = r[:li] + r[li + len('{% endif %}'):] + r = r.replace('{% endif %}', '').replace('{{ footer_text|safe }}', ft) + r = r.replace('src="svg/bg_slide_texture.png"', f'src="{b64("bg_slide_texture.png")}"') + r = r.replace('src="svg/line_divider.svg"', f'src="{b64("line_divider.svg")}"') + out = OUT / fname + out.write_text(r, encoding="utf-8") + return out + + +def make_body(top_html, bl_html, br_html, th, bh): + """slide-body 안에 배치. zone 높이는 블록 글씨 크기 기반 계산값.""" + return f""" +
+
DX의 궁극적 목표
+
+
{top_html}
+
+ +
DX의 궁극적 목표
+
+
+
+
+
DX 기반 Process 혁신에 따른 주체별 기대효과
+
+
+
업무 수행 과정(Process)의 변화
+ {bl_html} +
+
+
+
DX 시행 주체별 기대효과
+ {br_html} +
+
+
""" + + +# Jinja2 .items() 충돌 방지용 클래스 +class _Cat: + def __init__(self, name, color, items): self.name=name; self.color=color; self.items=items + + +# ══════════════════════════════════════════ +# 안 1: 내 판단 + new/ only — 글씨 크기 그대로 +# ══════════════════════════════════════════ +print("=== 안 1 ===") +t1 = clean(env.get_template("new/cards-3col-persona.html").render(personas=[ + {"overlay_color":c,"label_line1":t,"label_color":"#1a365d","bullets":[{"text":b} for b in bs]} + for (t,bs),c in zip(TOP,["#dce8d4","#d4dce8","#e8dcd4"]) +])) +# 뱃지/사진만 숨김 — 글씨 크기는 원래 값(15px body, 20px label) +t1 += "" + +b1l = clean(env.get_template("new/stacked-arrow-list.html").render(items=[ + {"text":f"{k}: {v}","border_color":c} + for (k,v),c in zip(BL,["#fb5915","#e79000","#919f00","#0d6361"]) +])) +# 헤더/장식만 숨김 — 글씨 크기(22px)는 원래 값 +b1l += "" + +b1r = clean(env.get_template("new/cards-3col-persona.html").render(personas=[ + {"overlay_color":c,"label_line1":h,"label_color":"#1a365d", + "bullets":[{"text":BR["rows"][ri][ci+1]} for ri in range(5)]} + for ci,(h,c) in enumerate([("발주자","#c8d8e8"),("시공자","#d8e8c8"),("설계자","#e8d8c8")]) +])) +b1r = b1r.replace('block-c3p','block-c3p2').replace('c3p-','c3p2-') +b1r += "" + +p1 = wrap_slide(make_body(t1, b1l, b1r, TH_NEW, BH_NEW), "plan1_new_only.html") +print(f" {p1.stat().st_size:,} bytes") + + +# ══════════════════════════════════════════ +# 안 2: 내 판단 + mixed — 글씨 크기 그대로 +# ══════════════════════════════════════════ +print("=== 안 2 ===") +t2 = clean(env.get_template("cards/card-compare-3col.html").render(cards=[ + {"title":t,"color":c,"bullets":bs} + for (t,bs),c in zip(TOP,["#1a365d","#15803d","#b45309"]) +])) + +b2l = clean(env.get_template("cards/card-numbered.html").render(items=[ + {"title":k,"description":v,"color":c} + for (k,v),c in zip(BL,["#2563eb","#16a34a","#d97706","#7c3aed"]) +])) + +b2r = clean(env.get_template("tables/table-simple-striped.html").render(**BR)) + +p2 = wrap_slide(make_body(t2, b2l, b2r, TH_OLD, BH_OLD), "plan2_mixed.html") +print(f" {p2.stat().st_size:,} bytes") + + +# ══════════════════════════════════════════ +# 안 3: Kei 판단 + new/ only (1,4,2,6) +# ══════════════════════════════════════════ +print("=== 안 3 (Kei: 1,4,2,6) ===") +# 상단: 1. cards-3col-persona (안 1과 동일 블록, 동일 데이터) +t3 = clean(env.get_template("new/cards-3col-persona.html").render(personas=[ + {"overlay_color":c,"label_line1":t,"label_color":"#1a365d","bullets":[{"text":b} for b in bs]} + for (t,bs),c in zip(TOP,["#dce8d4","#d4dce8","#e8dcd4"]) +])) +t3 += "" + +# 하단좌: 4. split-panel-numbered (Kei 선택) +b3l = clean(env.get_template("new/split-panel-numbered.html").render( + categories=[_Cat(k,c,[v]) for (k,v),c in zip(BL,["#417d38","#008e52","#008970","#2563eb"])], + right_items=[], +)) +b3l += "" + +# 하단우: 2. compare-vs-rows (Kei 선택) — 3주체를 좌/우로 +b3r = clean(env.get_template("new/compare-vs-rows.html").render( + main_labels={"left":"발주자","center":"구분","right":"시공자·설계자"}, + rows=[{"category":r[0],"left_text":r[1],"right_text":f"{r[2]} / {r[3]}"} for r in BR["rows"]], +)) +b3r += "" + +p3 = wrap_slide(make_body(t3, b3l, b3r, TH_NEW, BH_NEW), "plan3_kei_new.html") +print(f" {p3.stat().st_size:,} bytes") + + +# ══════════════════════════════════════════ +# 안 4: Kei 판단 + mixed (A,7,H,6) +# ══════════════════════════════════════════ +print("=== 안 4 (Kei: A,7,H,6) ===") +# 상단: A. card-compare-3col (안 2와 동일 블록) +t4 = clean(env.get_template("cards/card-compare-3col.html").render(cards=[ + {"title":t,"color":c,"bullets":bs} + for (t,bs),c in zip(TOP,["#1a365d","#15803d","#b45309"]) +])) + +# 하단좌: 7. issues-paired-rows (Kei 선택) +b4l = clean(env.get_template("new/issues-paired-rows.html").render( + pill_bg=b64("pill_scroll.png"), + rows=[ + {"left":{"label":BL[0][0],"text":BL[0][1]},"right":{"label":BL[1][0],"text":BL[1][1]}}, + {"left":{"label":BL[2][0],"text":BL[2][1]},"right":{"label":BL[3][0],"text":BL[3][1]},"pills_bottom":True}, + ], +)) +b4l += "" + +# 하단우: H. compare-3col-badge (Kei 선택) +b4r = clean(env.get_template("tables/compare-3col-badge.html").render(**BR)) + +p4 = wrap_slide(make_body(t4, b4l, b4r, TH_OLD, BH_OLD), "plan4_kei_mixed.html") +print(f" {p4.stat().st_size:,} bytes") + + +# ══════════════════════════════════════════ +# Selenium 검증 +# ══════════════════════════════════════════ +print("\n=== Selenium 검증 ===") +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +import time + +options = Options() +options.add_argument('--headless') +options.add_argument('--window-size=1400,900') +options.add_argument('--force-device-scale-factor=2') +driver = webdriver.Chrome(options=options) + +for fname in ["plan1_new_only.html","plan2_mixed.html","plan3_kei_new.html","plan4_kei_mixed.html"]: + path = OUT / fname + driver.get(f"file:///{path.resolve()}") + time.sleep(2) + driver.save_screenshot(str(path).replace(".html",".png")) + + html = path.read_text(encoding="utf-8") + c = re.sub(r'data:image/[^;]+;base64,[A-Za-z0-9+/=]+','I',html) + + # font-size override 확인 — !important가 있으면 위반 + overrides = re.findall(r'font-size.*?!important', c) + + j = re.findall(r'\{[%{].*?[%}]\}',c) + ts = ['안전','품질','생산','향상','소통','신뢰','생산 방식','인지','협업','검증', + '발주자','시공자','설계자','안 되면 DX가 아니다','DX의 궁극적 목표','Process 혁신','업무 수행'] + m = [t for t in ts if t not in c] + print(f" [{fname}]") + print(f" Jinja:{len(j)} 텍스트:{len(ts)-len(m)}/{len(ts)} font-size override:{len(overrides)}") + if m: print(f" MISSING: {m}") + if overrides: print(f" OVERRIDE 위반: {overrides[:3]}") + +driver.quit() +print("\n완료!") diff --git a/make_mdx03.py b/make_mdx03.py new file mode 100644 index 0000000..5911f4b --- /dev/null +++ b/make_mdx03.py @@ -0,0 +1,306 @@ +"""MDX 03: slide-base + prerequisites-3col(상단) + process-product-2col(하단) + pill(결론). + +블록 CSS 글씨 크기 그대로. font-size override 금지. +텍스트 원문 그대로. 요약/추론 금지. +""" +import base64, re +from pathlib import Path +from jinja2 import Environment, FileSystemLoader + +BLOCKS = Path("templates/blocks") +SVG = BLOCKS / "svg" +OUT = Path("data/runs/mdx03_final") +OUT.mkdir(parents=True, exist_ok=True) +env = Environment(loader=FileSystemLoader(str(BLOCKS)), autoescape=False) + +def b64(f): + p = SVG / f + if not p.exists(): return "" + ext = "svg+xml" if f.endswith(".svg") else "png" + return f"data:image/{ext};base64," + base64.b64encode(p.read_bytes()).decode() + +def clean(h): return re.sub(r'', '', h, flags=re.DOTALL).strip() + + +# ══════════════════════════════════════════ +# 상단: prerequisites-3col — MDX 원문 그대로 +# ══════════════════════════════════════════ + +class _Item: + def __init__(self, heading, desc): self.heading = heading; self.desc = desc + +class _Col: + def __init__(self, **kw): + for k, v in kw.items(): setattr(self, k, v) + +# 블록 CSS만 가져오고, HTML은 콘텐츠 items 수에 맞게 동적 생성 +# prerequisites-3col의 CSS를 추출 +_p3c_raw = (BLOCKS / "new" / "prerequisites-3col.html").read_text(encoding="utf-8") +_p3c_css = re.search(r'', _p3c_raw, re.DOTALL).group(0) + +# MDX 원문 그대로 — 각 열의 항목 수가 다름 +cols_data = [ + { + "name": "기술", "sub": "디지털", + "bar": "linear-gradient(180deg, #0D78D0 0%, #023056 100%)", + "hgrad": "linear-gradient(180deg, #0D78D0 0%, #134D7F 100%)", + "items": [ + ("Digital 기술(S/W, H/W)과 업무 Process의 통합", [ + "기존 업무 프로세스에 다양한 디지털 기술을 접목하여 업무 수행", + "프로젝트 전반에 걸친 업무 프로세스의 연결 및 조율", + ]), + ("분야별 전문 지식(설계, 시공, 유지관리 등) 보유", [ + "건설 전 단계에 대한 근본적인 이해와 지식 및 경험", + "최신 토목 기술 트랜드 및 표준 기준 등에 대한 높은 지식", + ]), + ], + }, + { + "name": "사람", "sub": "역량", + "bar": "linear-gradient(180deg, #FF9A23 0%, #CC5200 100%)", + "hgrad": "linear-gradient(180deg, #CC5200 0%, #883700 100%)", + "items": [ + ("혁신적 사고방식과 창의적 문제 해결 능력", [ + "기존 수행 방식과 관습적 사고 등에 의한 접근 방식 탈피", + "디지털 기술을 활용한 창의적, 혁신적인 솔루션 제시", + ]), + ("사용자 중심 사고와 DX 수행 경험", [ + "사용자의 요구와 기대를 충족시키는 설계 및 구현", + "시행착오를 포함한 수행 경험과 사용자 경험(UX)을 반영한 해결 방안 제시", + ]), + ], + }, + { + "name": "자연", "sub": "여건", + "bar": "linear-gradient(180deg, #39BE49 0%, #23742C 100%)", + "hgrad": "linear-gradient(180deg, #39BE49 0%, #1E6328 100%)", + "items": [ + ("지속적인 투자 및 실행 의지", [ + "기술 도입 초기 단계에 필요한 인력·기간·비용 등의 대규모 투자", + "기술 고도화를 위한 지속적인 개선 및 투자 체계 구축", + "변화와 혁신을 통해 부가가치를 창출하려는 실행 의지와 추진력", + ]), + ], + }, +] + +# 동적 HTML 생성 — 블록 CSS 클래스 사용, items 수 동적 +cols_html = "" +for col in cols_data: + items_html = "" + n = len(col["items"]) + for i, (heading, bullets) in enumerate(col["items"]): + pct_h = int(95 / n) + pct_top = int(3 + i * (95 / n)) + bul = "".join(f'
• {b}
' for b in bullets) + items_html += f""" +
+
{heading}
+
{bul}
+
""" + if i < n - 1: + line_top = pct_top + pct_h + items_html += f'
' + + cols_html += f""" +
+
+
+
{col['name']}
+
{col['sub']}
+
+ {items_html} +
""" + +top = f'
{cols_html}
\n{_p3c_css}' + + +# ══════════════════════════════════════════ +# 하단: process-product-2col — MDX 원문 그대로 +# ══════════════════════════════════════════ + +# process-product-2col: 블록 CSS 사용 + HTML은 좌우 소제목이 같은 행에 오도록 Grid 재구성 +_pp2_raw = (BLOCKS / "BEPs" / "process-product-2col.html").read_text(encoding="utf-8") +_pp2_css = re.search(r'', _pp2_raw, re.DOTALL).group(0) + +arrow_uri = b64("arrow_asis_tobe.png") + +# 좌우 소제목을 행 단위로 대응시킴 +# 행1: Analogue 기반 업무의 Digital화 (As-is→To-be) | Copy & Paste로 인해... 품질 향상 +# 행2: GIS + BIM의 연계 | Analogue 기반 도서 외 Digital 기반 정보물 추가 +# 행3: 사용자 중심의 Solution 제공 | Solution을 활용한 업무 효율화 + +# 2열 grid + ::before로 열 배경 gradient → 행 높이 동기화 + gradient 유지 +bottom = f""" +
+ +
+ +
+ + +
+ +
+ 과정(Process)의 혁신 +
+
+ 결과(Product)의 변화 +
+ + +
+
Analogue 기반 업무의 Digital화
+
+
+
개념·문서·행정 절차 중심
+
2D 도면, 전문가, 규정
+
업무 구분(단절), 책임
+
+
→
+
+
시각화된 목적물, 소통, 투명성 중심
+
3D 모델, 참여자, 실체
+
협업(융·복합), 창의성
+
+
+
+
+
Copy & Paste로 인해 하향 평준화된 기존 성과물의 품질 향상
+
• 과거 수작업으로 시행하면서 발생하던 오류 등의 최소화
+
• 정확한 Data에 기반한 계획으로 고품질 성과물 도출
+
+ + +
+
GIS + BIM의 연계
+
• 지리·지형·지반 등 위치정보(GIS)와 3D모델(형상, 속성정보) 기반의 건설 정보를 포함하는 BIM의 연계를 통한 업무 프로세스의 혁신
+
+
+
Analogue 기반 도서 외 Digital 기반 정보물 추가
+
• 기존 성과물(도면, 수량, 계산서, 시방서 등)에 3D 모델, Simulation 등의 Digital 기반 정보물 추가
+
+ + +
+
사용자 중심의 Solution 제공
+
• 서로 다른 S/W로 작성되어 분절화된 Analogue 방식의 성과물과 정보물을 연계할 수 있는 설계·시공 Solution 제공
+
+
+
Solution을 활용한 업무 효율화
+
• Engn. Solution을 통해 성과물에 관한 이슈를 함께 검토·논의하는 협업 환경 조성
+
• 건설 단계별 정보를 디지털 데이터로 축적하여, 건설 전 과정을 통합관리
+
+
+
+{_pp2_css} +""" + + +# ══════════════════════════════════════════ +# slide-base 조립 +# ══════════════════════════════════════════ + +title = "DX 실행 체계 구축 방안" +ft = 'DX는 필요한 요건과 체계를 갖춘 후 시행해야만 그 효과를 기대할 수 있다' + +# font_hierarchy: key_msg=14, core=12, bg=12, sidebar=11 +# zone제목=13px, 블록 heading=12px, 블록 desc=11px +font_override = """""" + +body = f""" +{font_override} +
+
DX 시행을 위한 필수 요건
+
{top}
+
+
+
Process의 혁신과 Product의 변화
+
{bottom}
+
+""" + +sb = clean((BLOCKS / "slide-base.html").read_text(encoding="utf-8")) +r = sb.replace('{{ title|default("슬라이드") }}', title) +r = r.replace('{{ title|default("슬라이드 제목") }}', title) +r = r.replace('{% block body %}{% endblock %}', body) +pill = b64("pill_scroll.png") +r = r.replace('{% if footer_text %}', '').replace('{% if footer_pill_bg %}', '') +r = r.replace('{{ footer_pill_bg }}', pill).replace('{% else %}', '') +r = r.replace('', '') +li = r.rfind('{% endif %}') +if li > 0: r = r[:li] + r[li + len('{% endif %}'):] +r = r.replace('{% endif %}', '').replace('{{ footer_text|safe }}', ft) +r = r.replace('src="svg/bg_slide_texture.png"', f'src="{b64("bg_slide_texture.png")}"') +r = r.replace('src="svg/line_divider.svg"', f'src="{b64("line_divider.svg")}"') + +out = OUT / "final.html" +out.write_text(r, encoding="utf-8") +print(f"저장: {out} ({out.stat().st_size:,} bytes)") + + +# ══════════════════════════════════════════ +# Selenium 검증 +# ══════════════════════════════════════════ +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +import time + +options = Options() +options.add_argument('--headless') +options.add_argument('--window-size=1400,900') +options.add_argument('--force-device-scale-factor=2') +driver = webdriver.Chrome(options=options) +driver.get(f"file:///{out.resolve()}") +time.sleep(2) +driver.save_screenshot(str(out).replace(".html", ".png")) +driver.quit() + +# 텍스트 검증 +c = re.sub(r'data:image/[^;]+;base64,[A-Za-z0-9+/=]+', 'I', r) +overrides = re.findall(r'font-size.*?!important', c) +j = re.findall(r'\{[%{].*?[%}]\}', c) +ts = ['기술','사람','자연','디지털','역량','여건', + 'Digital 기술','혁신적 사고방식','지속적인 투자', + 'Process의 혁신','Product의 변화', + 'Analogue','Digital','GIS','BIM','Solution', + '기대할 수 있다'] +m = [t for t in ts if t not in c] +print(f"Jinja:{len(j)} font-override:{len(overrides)} 텍스트:{len(ts)-len(m)}/{len(ts)}") +if m: print(f" MISSING: {m}") +else: print(" ALL OK") diff --git a/run_mdx03_pipeline.py b/run_mdx03_pipeline.py new file mode 100644 index 0000000..8518907 --- /dev/null +++ b/run_mdx03_pipeline.py @@ -0,0 +1,48 @@ +"""MDX 03을 기존 파이프라인으로 Stage 1.7까지 돌린 뒤, 산출물을 저장. + +파이프라인 코드 그대로 사용: +- Stage 0: mdx_normalizer +- Stage 1A: kei_client.classify_content (Kei API) +- Stage 1B: kei_client.refine_concepts + generate_structured_text +- Stage 1.5a: space_allocator (컨테이너 계산 + font_hierarchy) +- Stage 1.7: block_reference (블록 선택) + +Stage 2(조립)는 여기서 하지 않음 — 산출물만 저장. +""" +import asyncio +import json +import sys +import time +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).parent)) + +from src.pipeline import generate_slide + + +async def main(): + mdx_path = Path("samples/mdx/03. DX 시행을 위한 필수 요건 및 혁신 방안.mdx") + content = mdx_path.read_text(encoding="utf-8") + + print(f"MDX 03: {mdx_path.name}") + print(f"내용 길이: {len(content)}자") + print() + + start = time.time() + async for event in generate_slide(content, base_path=str(mdx_path.parent)): + ev_type = event.get("event", "") + data = event.get("data", "") + if ev_type == "progress": + print(f" {data}") + elif ev_type == "result": + elapsed = time.time() - start + print(f"\n완료! ({elapsed:.1f}초)") + if isinstance(data, dict): + run_id = data.get("run_id", "") + print(f"run_id: {run_id}") + print(f"결과: data/runs/{run_id}/") + elif ev_type == "error": + print(f" 에러: {data}") + + +asyncio.run(main()) diff --git a/samples/src/assets/cell_temp.svg b/samples/src/assets/cell_temp.svg new file mode 100644 index 0000000..8740b1a --- /dev/null +++ b/samples/src/assets/cell_temp.svg @@ -0,0 +1,4 @@ + + + + diff --git a/samples/src/assets/images/commands/3dpoly/image1.png b/samples/src/assets/images/commands/3dpoly/image1.png new file mode 100644 index 0000000..cd11550 Binary files /dev/null and b/samples/src/assets/images/commands/3dpoly/image1.png differ diff --git a/samples/src/assets/images/commands/3dpoly/image2.png b/samples/src/assets/images/commands/3dpoly/image2.png new file mode 100644 index 0000000..d898fe7 Binary files /dev/null and b/samples/src/assets/images/commands/3dpoly/image2.png differ diff --git a/samples/src/assets/images/commands/3dv/image1.png b/samples/src/assets/images/commands/3dv/image1.png new file mode 100644 index 0000000..d3b66f3 Binary files /dev/null and b/samples/src/assets/images/commands/3dv/image1.png differ diff --git a/samples/src/assets/images/commands/_operator/divide/image1.png b/samples/src/assets/images/commands/_operator/divide/image1.png new file mode 100644 index 0000000..b998a24 Binary files /dev/null and b/samples/src/assets/images/commands/_operator/divide/image1.png differ diff --git a/samples/src/assets/images/commands/_operator/minus/image1.png b/samples/src/assets/images/commands/_operator/minus/image1.png new file mode 100644 index 0000000..ce68501 Binary files /dev/null and b/samples/src/assets/images/commands/_operator/minus/image1.png differ diff --git a/samples/src/assets/images/commands/_operator/multiply/image1.png b/samples/src/assets/images/commands/_operator/multiply/image1.png new file mode 100644 index 0000000..614408c Binary files /dev/null and b/samples/src/assets/images/commands/_operator/multiply/image1.png differ diff --git a/samples/src/assets/images/commands/_operator/plus/image1.png b/samples/src/assets/images/commands/_operator/plus/image1.png new file mode 100644 index 0000000..c1b84e2 Binary files /dev/null and b/samples/src/assets/images/commands/_operator/plus/image1.png differ diff --git a/samples/src/assets/images/commands/addpve/image1.png b/samples/src/assets/images/commands/addpve/image1.png new file mode 100644 index 0000000..47041c8 Binary files /dev/null and b/samples/src/assets/images/commands/addpve/image1.png differ diff --git a/samples/src/assets/images/commands/addpve/image2.png b/samples/src/assets/images/commands/addpve/image2.png new file mode 100644 index 0000000..cefdd9d Binary files /dev/null and b/samples/src/assets/images/commands/addpve/image2.png differ diff --git a/samples/src/assets/images/commands/addtextvalue/image1.png b/samples/src/assets/images/commands/addtextvalue/image1.png new file mode 100644 index 0000000..e5317b7 Binary files /dev/null and b/samples/src/assets/images/commands/addtextvalue/image1.png differ diff --git a/samples/src/assets/images/commands/addtextvalue/image2.png b/samples/src/assets/images/commands/addtextvalue/image2.png new file mode 100644 index 0000000..6e8864e Binary files /dev/null and b/samples/src/assets/images/commands/addtextvalue/image2.png differ diff --git a/samples/src/assets/images/commands/align/image1.png b/samples/src/assets/images/commands/align/image1.png new file mode 100644 index 0000000..5363bb0 Binary files /dev/null and b/samples/src/assets/images/commands/align/image1.png differ diff --git a/samples/src/assets/images/commands/align/image2.png b/samples/src/assets/images/commands/align/image2.png new file mode 100644 index 0000000..3358449 Binary files /dev/null and b/samples/src/assets/images/commands/align/image2.png differ diff --git a/samples/src/assets/images/commands/allzvaluechange/image1.png b/samples/src/assets/images/commands/allzvaluechange/image1.png new file mode 100644 index 0000000..edd8f92 Binary files /dev/null and b/samples/src/assets/images/commands/allzvaluechange/image1.png differ diff --git a/samples/src/assets/images/commands/angbase/image1.png b/samples/src/assets/images/commands/angbase/image1.png new file mode 100644 index 0000000..8f1128f Binary files /dev/null and b/samples/src/assets/images/commands/angbase/image1.png differ diff --git a/samples/src/assets/images/commands/angdir/image1.png b/samples/src/assets/images/commands/angdir/image1.png new file mode 100644 index 0000000..2b681ac Binary files /dev/null and b/samples/src/assets/images/commands/angdir/image1.png differ diff --git a/samples/src/assets/images/commands/applyeltotext/image1.png b/samples/src/assets/images/commands/applyeltotext/image1.png new file mode 100644 index 0000000..182787f Binary files /dev/null and b/samples/src/assets/images/commands/applyeltotext/image1.png differ diff --git a/samples/src/assets/images/commands/aptext/image1.png b/samples/src/assets/images/commands/aptext/image1.png new file mode 100644 index 0000000..e1d683d Binary files /dev/null and b/samples/src/assets/images/commands/aptext/image1.png differ diff --git a/samples/src/assets/images/commands/aptext/image2.png b/samples/src/assets/images/commands/aptext/image2.png new file mode 100644 index 0000000..ec55933 Binary files /dev/null and b/samples/src/assets/images/commands/aptext/image2.png differ diff --git a/samples/src/assets/images/commands/aptext/image3.png b/samples/src/assets/images/commands/aptext/image3.png new file mode 100644 index 0000000..0226ea0 Binary files /dev/null and b/samples/src/assets/images/commands/aptext/image3.png differ diff --git a/samples/src/assets/images/commands/arc/image1.png b/samples/src/assets/images/commands/arc/image1.png new file mode 100644 index 0000000..a031981 Binary files /dev/null and b/samples/src/assets/images/commands/arc/image1.png differ diff --git a/samples/src/assets/images/commands/arc/image2.png b/samples/src/assets/images/commands/arc/image2.png new file mode 100644 index 0000000..2542a3e Binary files /dev/null and b/samples/src/assets/images/commands/arc/image2.png differ diff --git a/samples/src/assets/images/commands/arcrebar/image1.png b/samples/src/assets/images/commands/arcrebar/image1.png new file mode 100644 index 0000000..43f0eb2 Binary files /dev/null and b/samples/src/assets/images/commands/arcrebar/image1.png differ diff --git a/samples/src/assets/images/commands/area/image1.png b/samples/src/assets/images/commands/area/image1.png new file mode 100644 index 0000000..932a420 Binary files /dev/null and b/samples/src/assets/images/commands/area/image1.png differ diff --git a/samples/src/assets/images/commands/aret/image1.png b/samples/src/assets/images/commands/aret/image1.png new file mode 100644 index 0000000..8a50d8b Binary files /dev/null and b/samples/src/assets/images/commands/aret/image1.png differ diff --git a/samples/src/assets/images/commands/aret/image2.png b/samples/src/assets/images/commands/aret/image2.png new file mode 100644 index 0000000..2bfd2ab Binary files /dev/null and b/samples/src/assets/images/commands/aret/image2.png differ diff --git a/samples/src/assets/images/commands/array/image1.png b/samples/src/assets/images/commands/array/image1.png new file mode 100644 index 0000000..f700f03 Binary files /dev/null and b/samples/src/assets/images/commands/array/image1.png differ diff --git a/samples/src/assets/images/commands/arrayedit/image1.png b/samples/src/assets/images/commands/arrayedit/image1.png new file mode 100644 index 0000000..c8bfe6f Binary files /dev/null and b/samples/src/assets/images/commands/arrayedit/image1.png differ diff --git a/samples/src/assets/images/commands/arraypath/image1.png b/samples/src/assets/images/commands/arraypath/image1.png new file mode 100644 index 0000000..f191387 Binary files /dev/null and b/samples/src/assets/images/commands/arraypath/image1.png differ diff --git a/samples/src/assets/images/commands/arraypolar/image1.png b/samples/src/assets/images/commands/arraypolar/image1.png new file mode 100644 index 0000000..993b550 Binary files /dev/null and b/samples/src/assets/images/commands/arraypolar/image1.png differ diff --git a/samples/src/assets/images/commands/arrayrect/image1.png b/samples/src/assets/images/commands/arrayrect/image1.png new file mode 100644 index 0000000..1056698 Binary files /dev/null and b/samples/src/assets/images/commands/arrayrect/image1.png differ diff --git a/samples/src/assets/images/commands/artext/image1.png b/samples/src/assets/images/commands/artext/image1.png new file mode 100644 index 0000000..023b9db Binary files /dev/null and b/samples/src/assets/images/commands/artext/image1.png differ diff --git a/samples/src/assets/images/commands/artext/image2.png b/samples/src/assets/images/commands/artext/image2.png new file mode 100644 index 0000000..cf91f0b Binary files /dev/null and b/samples/src/assets/images/commands/artext/image2.png differ diff --git a/samples/src/assets/images/commands/artext/image3.png b/samples/src/assets/images/commands/artext/image3.png new file mode 100644 index 0000000..aab309d Binary files /dev/null and b/samples/src/assets/images/commands/artext/image3.png differ diff --git a/samples/src/assets/images/commands/attach/image1.png b/samples/src/assets/images/commands/attach/image1.png new file mode 100644 index 0000000..a822cb7 Binary files /dev/null and b/samples/src/assets/images/commands/attach/image1.png differ diff --git a/samples/src/assets/images/commands/attach/image2.png b/samples/src/assets/images/commands/attach/image2.png new file mode 100644 index 0000000..34ad13a Binary files /dev/null and b/samples/src/assets/images/commands/attach/image2.png differ diff --git a/samples/src/assets/images/commands/aunits/image1.png b/samples/src/assets/images/commands/aunits/image1.png new file mode 100644 index 0000000..fbea2e6 Binary files /dev/null and b/samples/src/assets/images/commands/aunits/image1.png differ diff --git a/samples/src/assets/images/commands/auprec/image1.png b/samples/src/assets/images/commands/auprec/image1.png new file mode 100644 index 0000000..a2a10a3 Binary files /dev/null and b/samples/src/assets/images/commands/auprec/image1.png differ diff --git a/samples/src/assets/images/commands/backgroundcolor/image1.png b/samples/src/assets/images/commands/backgroundcolor/image1.png new file mode 100644 index 0000000..2807e71 Binary files /dev/null and b/samples/src/assets/images/commands/backgroundcolor/image1.png differ diff --git a/samples/src/assets/images/commands/bedit/image1.png b/samples/src/assets/images/commands/bedit/image1.png new file mode 100644 index 0000000..60c5bb7 Binary files /dev/null and b/samples/src/assets/images/commands/bedit/image1.png differ diff --git a/samples/src/assets/images/commands/bedit/image2.png b/samples/src/assets/images/commands/bedit/image2.png new file mode 100644 index 0000000..a5aeebc Binary files /dev/null and b/samples/src/assets/images/commands/bedit/image2.png differ diff --git a/samples/src/assets/images/commands/bedit/image3.png b/samples/src/assets/images/commands/bedit/image3.png new file mode 100644 index 0000000..8f330aa Binary files /dev/null and b/samples/src/assets/images/commands/bedit/image3.png differ diff --git a/samples/src/assets/images/commands/bedit/image4.png b/samples/src/assets/images/commands/bedit/image4.png new file mode 100644 index 0000000..e9b655a Binary files /dev/null and b/samples/src/assets/images/commands/bedit/image4.png differ diff --git a/samples/src/assets/images/commands/binsertionpoint/image1.png b/samples/src/assets/images/commands/binsertionpoint/image1.png new file mode 100644 index 0000000..1e54175 Binary files /dev/null and b/samples/src/assets/images/commands/binsertionpoint/image1.png differ diff --git a/samples/src/assets/images/commands/binsertionpoint/image2.png b/samples/src/assets/images/commands/binsertionpoint/image2.png new file mode 100644 index 0000000..42a381d Binary files /dev/null and b/samples/src/assets/images/commands/binsertionpoint/image2.png differ diff --git a/samples/src/assets/images/commands/blibrary/image1.png b/samples/src/assets/images/commands/blibrary/image1.png new file mode 100644 index 0000000..e320db6 Binary files /dev/null and b/samples/src/assets/images/commands/blibrary/image1.png differ diff --git a/samples/src/assets/images/commands/blibrary/image2.png b/samples/src/assets/images/commands/blibrary/image2.png new file mode 100644 index 0000000..700e424 Binary files /dev/null and b/samples/src/assets/images/commands/blibrary/image2.png differ diff --git a/samples/src/assets/images/commands/block/image1.png b/samples/src/assets/images/commands/block/image1.png new file mode 100644 index 0000000..e9c7bcf Binary files /dev/null and b/samples/src/assets/images/commands/block/image1.png differ diff --git a/samples/src/assets/images/commands/block/image2.png b/samples/src/assets/images/commands/block/image2.png new file mode 100644 index 0000000..8e9f136 Binary files /dev/null and b/samples/src/assets/images/commands/block/image2.png differ diff --git a/samples/src/assets/images/commands/boundary/image1.png b/samples/src/assets/images/commands/boundary/image1.png new file mode 100644 index 0000000..969fc85 Binary files /dev/null and b/samples/src/assets/images/commands/boundary/image1.png differ diff --git a/samples/src/assets/images/commands/break/image1.png b/samples/src/assets/images/commands/break/image1.png new file mode 100644 index 0000000..0228c4d Binary files /dev/null and b/samples/src/assets/images/commands/break/image1.png differ diff --git a/samples/src/assets/images/commands/break/image2.png b/samples/src/assets/images/commands/break/image2.png new file mode 100644 index 0000000..b3bed99 Binary files /dev/null and b/samples/src/assets/images/commands/break/image2.png differ diff --git a/samples/src/assets/images/commands/breakall/image1.png b/samples/src/assets/images/commands/breakall/image1.png new file mode 100644 index 0000000..d8b9d67 Binary files /dev/null and b/samples/src/assets/images/commands/breakall/image1.png differ diff --git a/samples/src/assets/images/commands/breakall/image2.png b/samples/src/assets/images/commands/breakall/image2.png new file mode 100644 index 0000000..fd9da53 Binary files /dev/null and b/samples/src/assets/images/commands/breakall/image2.png differ diff --git a/samples/src/assets/images/commands/breindist/image1.png b/samples/src/assets/images/commands/breindist/image1.png new file mode 100644 index 0000000..a5dcff5 Binary files /dev/null and b/samples/src/assets/images/commands/breindist/image1.png differ diff --git a/samples/src/assets/images/commands/breindist/image2.png b/samples/src/assets/images/commands/breindist/image2.png new file mode 100644 index 0000000..5163c06 Binary files /dev/null and b/samples/src/assets/images/commands/breindist/image2.png differ diff --git a/samples/src/assets/images/commands/breipoint/image1.png b/samples/src/assets/images/commands/breipoint/image1.png new file mode 100644 index 0000000..5c6340d Binary files /dev/null and b/samples/src/assets/images/commands/breipoint/image1.png differ diff --git a/samples/src/assets/images/commands/breonepoint/image1.png b/samples/src/assets/images/commands/breonepoint/image1.png new file mode 100644 index 0000000..bc2f6f0 Binary files /dev/null and b/samples/src/assets/images/commands/breonepoint/image1.png differ diff --git a/samples/src/assets/images/commands/bresdist/image1.png b/samples/src/assets/images/commands/bresdist/image1.png new file mode 100644 index 0000000..70db2c8 Binary files /dev/null and b/samples/src/assets/images/commands/bresdist/image1.png differ diff --git a/samples/src/assets/images/commands/bresdist/image2.png b/samples/src/assets/images/commands/bresdist/image2.png new file mode 100644 index 0000000..0f463fd Binary files /dev/null and b/samples/src/assets/images/commands/bresdist/image2.png differ diff --git a/samples/src/assets/images/commands/brespoint/image1.png b/samples/src/assets/images/commands/brespoint/image1.png new file mode 100644 index 0000000..70db2c8 Binary files /dev/null and b/samples/src/assets/images/commands/brespoint/image1.png differ diff --git a/samples/src/assets/images/commands/brespoint/image2.png b/samples/src/assets/images/commands/brespoint/image2.png new file mode 100644 index 0000000..0f463fd Binary files /dev/null and b/samples/src/assets/images/commands/brespoint/image2.png differ diff --git a/samples/src/assets/images/commands/calculator/image1.png b/samples/src/assets/images/commands/calculator/image1.png new file mode 100644 index 0000000..2eff3e2 Binary files /dev/null and b/samples/src/assets/images/commands/calculator/image1.png differ diff --git a/samples/src/assets/images/commands/calculator/image2.png b/samples/src/assets/images/commands/calculator/image2.png new file mode 100644 index 0000000..0c07cd0 Binary files /dev/null and b/samples/src/assets/images/commands/calculator/image2.png differ diff --git a/samples/src/assets/images/commands/calculator2/image1.png b/samples/src/assets/images/commands/calculator2/image1.png new file mode 100644 index 0000000..04664a6 Binary files /dev/null and b/samples/src/assets/images/commands/calculator2/image1.png differ diff --git a/samples/src/assets/images/commands/calculator2/image2.png b/samples/src/assets/images/commands/calculator2/image2.png new file mode 100644 index 0000000..85e1705 Binary files /dev/null and b/samples/src/assets/images/commands/calculator2/image2.png differ diff --git a/samples/src/assets/images/commands/centerrec/image1.png b/samples/src/assets/images/commands/centerrec/image1.png new file mode 100644 index 0000000..61c90ae Binary files /dev/null and b/samples/src/assets/images/commands/centerrec/image1.png differ diff --git a/samples/src/assets/images/commands/centerrec/image2.png b/samples/src/assets/images/commands/centerrec/image2.png new file mode 100644 index 0000000..cf003e3 Binary files /dev/null and b/samples/src/assets/images/commands/centerrec/image2.png differ diff --git a/samples/src/assets/images/commands/chamfer/image1.png b/samples/src/assets/images/commands/chamfer/image1.png new file mode 100644 index 0000000..a6828b5 Binary files /dev/null and b/samples/src/assets/images/commands/chamfer/image1.png differ diff --git a/samples/src/assets/images/commands/chamfer/image2.png b/samples/src/assets/images/commands/chamfer/image2.png new file mode 100644 index 0000000..6f5200b Binary files /dev/null and b/samples/src/assets/images/commands/chamfer/image2.png differ diff --git a/samples/src/assets/images/commands/changeblockname/image1.png b/samples/src/assets/images/commands/changeblockname/image1.png new file mode 100644 index 0000000..ca22d09 Binary files /dev/null and b/samples/src/assets/images/commands/changeblockname/image1.png differ diff --git a/samples/src/assets/images/commands/changeblockname/image2.png b/samples/src/assets/images/commands/changeblockname/image2.png new file mode 100644 index 0000000..b5604c4 Binary files /dev/null and b/samples/src/assets/images/commands/changeblockname/image2.png differ diff --git a/samples/src/assets/images/commands/character/image1.png b/samples/src/assets/images/commands/character/image1.png new file mode 100644 index 0000000..67203b7 Binary files /dev/null and b/samples/src/assets/images/commands/character/image1.png differ diff --git a/samples/src/assets/images/commands/chcolor/image1.png b/samples/src/assets/images/commands/chcolor/image1.png new file mode 100644 index 0000000..6fe05e0 Binary files /dev/null and b/samples/src/assets/images/commands/chcolor/image1.png differ diff --git a/samples/src/assets/images/commands/chcolor/image2.png b/samples/src/assets/images/commands/chcolor/image2.png new file mode 100644 index 0000000..39eb773 Binary files /dev/null and b/samples/src/assets/images/commands/chcolor/image2.png differ diff --git a/samples/src/assets/images/commands/chdimscale/image1.png b/samples/src/assets/images/commands/chdimscale/image1.png new file mode 100644 index 0000000..018a163 Binary files /dev/null and b/samples/src/assets/images/commands/chdimscale/image1.png differ diff --git a/samples/src/assets/images/commands/checkdirection/image1.png b/samples/src/assets/images/commands/checkdirection/image1.png new file mode 100644 index 0000000..5ff9058 Binary files /dev/null and b/samples/src/assets/images/commands/checkdirection/image1.png differ diff --git a/samples/src/assets/images/commands/checkdirection/image2.png b/samples/src/assets/images/commands/checkdirection/image2.png new file mode 100644 index 0000000..67add97 Binary files /dev/null and b/samples/src/assets/images/commands/checkdirection/image2.png differ diff --git a/samples/src/assets/images/commands/chltype/image1.png b/samples/src/assets/images/commands/chltype/image1.png new file mode 100644 index 0000000..20cad5d Binary files /dev/null and b/samples/src/assets/images/commands/chltype/image1.png differ diff --git a/samples/src/assets/images/commands/chltype/image2.png b/samples/src/assets/images/commands/chltype/image2.png new file mode 100644 index 0000000..2349839 Binary files /dev/null and b/samples/src/assets/images/commands/chltype/image2.png differ diff --git a/samples/src/assets/images/commands/chltype/image3.png b/samples/src/assets/images/commands/chltype/image3.png new file mode 100644 index 0000000..b42e943 Binary files /dev/null and b/samples/src/assets/images/commands/chltype/image3.png differ diff --git a/samples/src/assets/images/commands/chltype/image4.png b/samples/src/assets/images/commands/chltype/image4.png new file mode 100644 index 0000000..97a8bbc Binary files /dev/null and b/samples/src/assets/images/commands/chltype/image4.png differ diff --git a/samples/src/assets/images/commands/chspace/image1.png b/samples/src/assets/images/commands/chspace/image1.png new file mode 100644 index 0000000..335dc2e Binary files /dev/null and b/samples/src/assets/images/commands/chspace/image1.png differ diff --git a/samples/src/assets/images/commands/chthousand/image1.png b/samples/src/assets/images/commands/chthousand/image1.png new file mode 100644 index 0000000..6d33394 Binary files /dev/null and b/samples/src/assets/images/commands/chthousand/image1.png differ diff --git a/samples/src/assets/images/commands/chxrefxolor/image1.png b/samples/src/assets/images/commands/chxrefxolor/image1.png new file mode 100644 index 0000000..dac7bcc Binary files /dev/null and b/samples/src/assets/images/commands/chxrefxolor/image1.png differ diff --git a/samples/src/assets/images/commands/circle/image1.png b/samples/src/assets/images/commands/circle/image1.png new file mode 100644 index 0000000..9a523fb Binary files /dev/null and b/samples/src/assets/images/commands/circle/image1.png differ diff --git a/samples/src/assets/images/commands/classicgroup/image1.png b/samples/src/assets/images/commands/classicgroup/image1.png new file mode 100644 index 0000000..a9b3889 Binary files /dev/null and b/samples/src/assets/images/commands/classicgroup/image1.png differ diff --git a/samples/src/assets/images/commands/classicgroup/image2.png b/samples/src/assets/images/commands/classicgroup/image2.png new file mode 100644 index 0000000..7daba51 Binary files /dev/null and b/samples/src/assets/images/commands/classicgroup/image2.png differ diff --git a/samples/src/assets/images/commands/clothoid/image1.png b/samples/src/assets/images/commands/clothoid/image1.png new file mode 100644 index 0000000..b0ebce9 Binary files /dev/null and b/samples/src/assets/images/commands/clothoid/image1.png differ diff --git a/samples/src/assets/images/commands/clothoid/image2.png b/samples/src/assets/images/commands/clothoid/image2.png new file mode 100644 index 0000000..c9942b0 Binary files /dev/null and b/samples/src/assets/images/commands/clothoid/image2.png differ diff --git a/samples/src/assets/images/commands/clothoid/image3.png b/samples/src/assets/images/commands/clothoid/image3.png new file mode 100644 index 0000000..b08bb64 Binary files /dev/null and b/samples/src/assets/images/commands/clothoid/image3.png differ diff --git a/samples/src/assets/images/commands/cone/image1.png b/samples/src/assets/images/commands/cone/image1.png new file mode 100644 index 0000000..b331b55 Binary files /dev/null and b/samples/src/assets/images/commands/cone/image1.png differ diff --git a/samples/src/assets/images/commands/converttc/image1.png b/samples/src/assets/images/commands/converttc/image1.png new file mode 100644 index 0000000..9a1ffd3 Binary files /dev/null and b/samples/src/assets/images/commands/converttc/image1.png differ diff --git a/samples/src/assets/images/commands/converttc/image2.png b/samples/src/assets/images/commands/converttc/image2.png new file mode 100644 index 0000000..bd1591d Binary files /dev/null and b/samples/src/assets/images/commands/converttc/image2.png differ diff --git a/samples/src/assets/images/commands/converttc/image3.png b/samples/src/assets/images/commands/converttc/image3.png new file mode 100644 index 0000000..093468f Binary files /dev/null and b/samples/src/assets/images/commands/converttc/image3.png differ diff --git a/samples/src/assets/images/commands/coordinatesexport/image1.png b/samples/src/assets/images/commands/coordinatesexport/image1.png new file mode 100644 index 0000000..97caed5 Binary files /dev/null and b/samples/src/assets/images/commands/coordinatesexport/image1.png differ diff --git a/samples/src/assets/images/commands/coordinatesexport/image2.png b/samples/src/assets/images/commands/coordinatesexport/image2.png new file mode 100644 index 0000000..c690172 Binary files /dev/null and b/samples/src/assets/images/commands/coordinatesexport/image2.png differ diff --git a/samples/src/assets/images/commands/coordinatesexport/image3.png b/samples/src/assets/images/commands/coordinatesexport/image3.png new file mode 100644 index 0000000..d733bb7 Binary files /dev/null and b/samples/src/assets/images/commands/coordinatesexport/image3.png differ diff --git a/samples/src/assets/images/commands/copy/image1.png b/samples/src/assets/images/commands/copy/image1.png new file mode 100644 index 0000000..602e6ce Binary files /dev/null and b/samples/src/assets/images/commands/copy/image1.png differ diff --git a/samples/src/assets/images/commands/copy/image2.png b/samples/src/assets/images/commands/copy/image2.png new file mode 100644 index 0000000..b85cab0 Binary files /dev/null and b/samples/src/assets/images/commands/copy/image2.png differ diff --git a/samples/src/assets/images/commands/copybase/image1.png b/samples/src/assets/images/commands/copybase/image1.png new file mode 100644 index 0000000..7867654 Binary files /dev/null and b/samples/src/assets/images/commands/copybase/image1.png differ diff --git a/samples/src/assets/images/commands/copybase/image2.png b/samples/src/assets/images/commands/copybase/image2.png new file mode 100644 index 0000000..de618cd Binary files /dev/null and b/samples/src/assets/images/commands/copybase/image2.png differ diff --git a/samples/src/assets/images/commands/copycapturedimage/image1.png b/samples/src/assets/images/commands/copycapturedimage/image1.png new file mode 100644 index 0000000..1255687 Binary files /dev/null and b/samples/src/assets/images/commands/copycapturedimage/image1.png differ diff --git a/samples/src/assets/images/commands/copynested/image1.png b/samples/src/assets/images/commands/copynested/image1.png new file mode 100644 index 0000000..75c9bbf Binary files /dev/null and b/samples/src/assets/images/commands/copynested/image1.png differ diff --git a/samples/src/assets/images/commands/copynested/image2.png b/samples/src/assets/images/commands/copynested/image2.png new file mode 100644 index 0000000..04809f0 Binary files /dev/null and b/samples/src/assets/images/commands/copynested/image2.png differ diff --git a/samples/src/assets/images/commands/copytocurl/image1.png b/samples/src/assets/images/commands/copytocurl/image1.png new file mode 100644 index 0000000..e0c08ab Binary files /dev/null and b/samples/src/assets/images/commands/copytocurl/image1.png differ diff --git a/samples/src/assets/images/commands/copytocurl/image2.png b/samples/src/assets/images/commands/copytocurl/image2.png new file mode 100644 index 0000000..64c3714 Binary files /dev/null and b/samples/src/assets/images/commands/copytocurl/image2.png differ diff --git a/samples/src/assets/images/commands/copytolayer/image1.png b/samples/src/assets/images/commands/copytolayer/image1.png new file mode 100644 index 0000000..9461fbc Binary files /dev/null and b/samples/src/assets/images/commands/copytolayer/image1.png differ diff --git a/samples/src/assets/images/commands/copytolayer/image2.png b/samples/src/assets/images/commands/copytolayer/image2.png new file mode 100644 index 0000000..d64b35e Binary files /dev/null and b/samples/src/assets/images/commands/copytolayer/image2.png differ diff --git a/samples/src/assets/images/commands/copytolayer/image3.png b/samples/src/assets/images/commands/copytolayer/image3.png new file mode 100644 index 0000000..267c1a0 Binary files /dev/null and b/samples/src/assets/images/commands/copytolayer/image3.png differ diff --git a/samples/src/assets/images/commands/corner/image1.png b/samples/src/assets/images/commands/corner/image1.png new file mode 100644 index 0000000..c4e5242 Binary files /dev/null and b/samples/src/assets/images/commands/corner/image1.png differ diff --git a/samples/src/assets/images/commands/cpline/image1.png b/samples/src/assets/images/commands/cpline/image1.png new file mode 100644 index 0000000..b026c02 Binary files /dev/null and b/samples/src/assets/images/commands/cpline/image1.png differ diff --git a/samples/src/assets/images/commands/createtextshadow/image1.png b/samples/src/assets/images/commands/createtextshadow/image1.png new file mode 100644 index 0000000..9ae0a07 Binary files /dev/null and b/samples/src/assets/images/commands/createtextshadow/image1.png differ diff --git a/samples/src/assets/images/commands/createtextshadow/image2.png b/samples/src/assets/images/commands/createtextshadow/image2.png new file mode 100644 index 0000000..3fd7f27 Binary files /dev/null and b/samples/src/assets/images/commands/createtextshadow/image2.png differ diff --git a/samples/src/assets/images/commands/createtextshadow/image3.png b/samples/src/assets/images/commands/createtextshadow/image3.png new file mode 100644 index 0000000..4191369 Binary files /dev/null and b/samples/src/assets/images/commands/createtextshadow/image3.png differ diff --git a/samples/src/assets/images/commands/crosswalk/image1.png b/samples/src/assets/images/commands/crosswalk/image1.png new file mode 100644 index 0000000..89ec6e4 Binary files /dev/null and b/samples/src/assets/images/commands/crosswalk/image1.png differ diff --git a/samples/src/assets/images/commands/crosswalk/image2.png b/samples/src/assets/images/commands/crosswalk/image2.png new file mode 100644 index 0000000..fc05053 Binary files /dev/null and b/samples/src/assets/images/commands/crosswalk/image2.png differ diff --git a/samples/src/assets/images/commands/ctcmark/image1.png b/samples/src/assets/images/commands/ctcmark/image1.png new file mode 100644 index 0000000..975f7af Binary files /dev/null and b/samples/src/assets/images/commands/ctcmark/image1.png differ diff --git a/samples/src/assets/images/commands/cutclip/image1.png b/samples/src/assets/images/commands/cutclip/image1.png new file mode 100644 index 0000000..ff669f5 Binary files /dev/null and b/samples/src/assets/images/commands/cutclip/image1.png differ diff --git a/samples/src/assets/images/commands/cutclip/image2.png b/samples/src/assets/images/commands/cutclip/image2.png new file mode 100644 index 0000000..a78436d Binary files /dev/null and b/samples/src/assets/images/commands/cutclip/image2.png differ diff --git a/samples/src/assets/images/commands/cutcse/image1.png b/samples/src/assets/images/commands/cutcse/image1.png new file mode 100644 index 0000000..b651820 Binary files /dev/null and b/samples/src/assets/images/commands/cutcse/image1.png differ diff --git a/samples/src/assets/images/commands/cutcse/image2.png b/samples/src/assets/images/commands/cutcse/image2.png new file mode 100644 index 0000000..bc46cc9 Binary files /dev/null and b/samples/src/assets/images/commands/cutcse/image2.png differ diff --git a/samples/src/assets/images/commands/cutcse/image3.png b/samples/src/assets/images/commands/cutcse/image3.png new file mode 100644 index 0000000..06de20c Binary files /dev/null and b/samples/src/assets/images/commands/cutcse/image3.png differ diff --git a/samples/src/assets/images/commands/cutcyl/image1.png b/samples/src/assets/images/commands/cutcyl/image1.png new file mode 100644 index 0000000..ff36d83 Binary files /dev/null and b/samples/src/assets/images/commands/cutcyl/image1.png differ diff --git a/samples/src/assets/images/commands/cutcyl/image2.png b/samples/src/assets/images/commands/cutcyl/image2.png new file mode 100644 index 0000000..2e6deee Binary files /dev/null and b/samples/src/assets/images/commands/cutcyl/image2.png differ diff --git a/samples/src/assets/images/commands/deleteduplicateentities/image1.png b/samples/src/assets/images/commands/deleteduplicateentities/image1.png new file mode 100644 index 0000000..45943d4 Binary files /dev/null and b/samples/src/assets/images/commands/deleteduplicateentities/image1.png differ diff --git a/samples/src/assets/images/commands/deleteduplicateentities/image2.png b/samples/src/assets/images/commands/deleteduplicateentities/image2.png new file mode 100644 index 0000000..fcb1d4e Binary files /dev/null and b/samples/src/assets/images/commands/deleteduplicateentities/image2.png differ diff --git a/samples/src/assets/images/commands/delfo/image1.png b/samples/src/assets/images/commands/delfo/image1.png new file mode 100644 index 0000000..773a7ad Binary files /dev/null and b/samples/src/assets/images/commands/delfo/image1.png differ diff --git a/samples/src/assets/images/commands/delfo/image2.png b/samples/src/assets/images/commands/delfo/image2.png new file mode 100644 index 0000000..d94d0a6 Binary files /dev/null and b/samples/src/assets/images/commands/delfo/image2.png differ diff --git a/samples/src/assets/images/commands/delobj/image1.png b/samples/src/assets/images/commands/delobj/image1.png new file mode 100644 index 0000000..0a8c83d Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image1.png differ diff --git a/samples/src/assets/images/commands/delobj/image2.png b/samples/src/assets/images/commands/delobj/image2.png new file mode 100644 index 0000000..cb22e9e Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image2.png differ diff --git a/samples/src/assets/images/commands/delobj/image3.png b/samples/src/assets/images/commands/delobj/image3.png new file mode 100644 index 0000000..361d76d Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image3.png differ diff --git a/samples/src/assets/images/commands/delobj/image4.png b/samples/src/assets/images/commands/delobj/image4.png new file mode 100644 index 0000000..d654b08 Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image4.png differ diff --git a/samples/src/assets/images/commands/delobj/image5.png b/samples/src/assets/images/commands/delobj/image5.png new file mode 100644 index 0000000..c9e5b37 Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image5.png differ diff --git a/samples/src/assets/images/commands/delobj/image6.png b/samples/src/assets/images/commands/delobj/image6.png new file mode 100644 index 0000000..dcab9e8 Binary files /dev/null and b/samples/src/assets/images/commands/delobj/image6.png differ diff --git a/samples/src/assets/images/commands/delpve/image1.png b/samples/src/assets/images/commands/delpve/image1.png new file mode 100644 index 0000000..c51aea9 Binary files /dev/null and b/samples/src/assets/images/commands/delpve/image1.png differ diff --git a/samples/src/assets/images/commands/delpve/image2.png b/samples/src/assets/images/commands/delpve/image2.png new file mode 100644 index 0000000..fb071b4 Binary files /dev/null and b/samples/src/assets/images/commands/delpve/image2.png differ diff --git a/samples/src/assets/images/commands/delpve/image3.png b/samples/src/assets/images/commands/delpve/image3.png new file mode 100644 index 0000000..5faf9e0 Binary files /dev/null and b/samples/src/assets/images/commands/delpve/image3.png differ diff --git a/samples/src/assets/images/commands/detachurl/image1.png b/samples/src/assets/images/commands/detachurl/image1.png new file mode 100644 index 0000000..e00e73c Binary files /dev/null and b/samples/src/assets/images/commands/detachurl/image1.png differ diff --git a/samples/src/assets/images/commands/detachurl/image2.png b/samples/src/assets/images/commands/detachurl/image2.png new file mode 100644 index 0000000..e58bd4b Binary files /dev/null and b/samples/src/assets/images/commands/detachurl/image2.png differ diff --git a/samples/src/assets/images/commands/dgnframe/image1.png b/samples/src/assets/images/commands/dgnframe/image1.png new file mode 100644 index 0000000..eb9cb3f Binary files /dev/null and b/samples/src/assets/images/commands/dgnframe/image1.png differ diff --git a/samples/src/assets/images/commands/didequalpart/image1.png b/samples/src/assets/images/commands/didequalpart/image1.png new file mode 100644 index 0000000..5b642ff Binary files /dev/null and b/samples/src/assets/images/commands/didequalpart/image1.png differ diff --git a/samples/src/assets/images/commands/dimaligned/image1.png b/samples/src/assets/images/commands/dimaligned/image1.png new file mode 100644 index 0000000..bc241bc Binary files /dev/null and b/samples/src/assets/images/commands/dimaligned/image1.png differ diff --git a/samples/src/assets/images/commands/dimangular/image1.png b/samples/src/assets/images/commands/dimangular/image1.png new file mode 100644 index 0000000..b294cfa Binary files /dev/null and b/samples/src/assets/images/commands/dimangular/image1.png differ diff --git a/samples/src/assets/images/commands/dimarc/image1.png b/samples/src/assets/images/commands/dimarc/image1.png new file mode 100644 index 0000000..e369933 Binary files /dev/null and b/samples/src/assets/images/commands/dimarc/image1.png differ diff --git a/samples/src/assets/images/commands/dimassoc/image1.png b/samples/src/assets/images/commands/dimassoc/image1.png new file mode 100644 index 0000000..25ecfff Binary files /dev/null and b/samples/src/assets/images/commands/dimassoc/image1.png differ diff --git a/samples/src/assets/images/commands/dimbreak/image1.png b/samples/src/assets/images/commands/dimbreak/image1.png new file mode 100644 index 0000000..b57118e Binary files /dev/null and b/samples/src/assets/images/commands/dimbreak/image1.png differ diff --git a/samples/src/assets/images/commands/dimcenter/image1.png b/samples/src/assets/images/commands/dimcenter/image1.png new file mode 100644 index 0000000..8605812 Binary files /dev/null and b/samples/src/assets/images/commands/dimcenter/image1.png differ diff --git a/samples/src/assets/images/commands/dimcenter/image2.png b/samples/src/assets/images/commands/dimcenter/image2.png new file mode 100644 index 0000000..9ab0e93 Binary files /dev/null and b/samples/src/assets/images/commands/dimcenter/image2.png differ diff --git a/samples/src/assets/images/commands/dimcenter/image3.png b/samples/src/assets/images/commands/dimcenter/image3.png new file mode 100644 index 0000000..3b8789c Binary files /dev/null and b/samples/src/assets/images/commands/dimcenter/image3.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image1.png b/samples/src/assets/images/commands/dimdiameter/image1.png new file mode 100644 index 0000000..231d3a0 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image1.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image10.png b/samples/src/assets/images/commands/dimdiameter/image10.png new file mode 100644 index 0000000..c7a5011 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image10.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image11.png b/samples/src/assets/images/commands/dimdiameter/image11.png new file mode 100644 index 0000000..f82d6b2 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image11.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image2.png b/samples/src/assets/images/commands/dimdiameter/image2.png new file mode 100644 index 0000000..9bc3822 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image2.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image3.png b/samples/src/assets/images/commands/dimdiameter/image3.png new file mode 100644 index 0000000..5b190c7 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image3.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image4.png b/samples/src/assets/images/commands/dimdiameter/image4.png new file mode 100644 index 0000000..b3f6848 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image4.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image5.png b/samples/src/assets/images/commands/dimdiameter/image5.png new file mode 100644 index 0000000..8513c4b Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image5.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image6.png b/samples/src/assets/images/commands/dimdiameter/image6.png new file mode 100644 index 0000000..8309545 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image6.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image7.png b/samples/src/assets/images/commands/dimdiameter/image7.png new file mode 100644 index 0000000..df8d9cf Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image7.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image8.png b/samples/src/assets/images/commands/dimdiameter/image8.png new file mode 100644 index 0000000..5d4ab1b Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image8.png differ diff --git a/samples/src/assets/images/commands/dimdiameter/image9.png b/samples/src/assets/images/commands/dimdiameter/image9.png new file mode 100644 index 0000000..f45bf50 Binary files /dev/null and b/samples/src/assets/images/commands/dimdiameter/image9.png differ diff --git a/samples/src/assets/images/commands/dimdisassociate/image1.png b/samples/src/assets/images/commands/dimdisassociate/image1.png new file mode 100644 index 0000000..f24a9fa Binary files /dev/null and b/samples/src/assets/images/commands/dimdisassociate/image1.png differ diff --git a/samples/src/assets/images/commands/dimdivide/image1.png b/samples/src/assets/images/commands/dimdivide/image1.png new file mode 100644 index 0000000..2793fae Binary files /dev/null and b/samples/src/assets/images/commands/dimdivide/image1.png differ diff --git a/samples/src/assets/images/commands/dimdivmark/image1.png b/samples/src/assets/images/commands/dimdivmark/image1.png new file mode 100644 index 0000000..d6ceedb Binary files /dev/null and b/samples/src/assets/images/commands/dimdivmark/image1.png differ diff --git a/samples/src/assets/images/commands/dimedit/image1.png b/samples/src/assets/images/commands/dimedit/image1.png new file mode 100644 index 0000000..b8d23cc Binary files /dev/null and b/samples/src/assets/images/commands/dimedit/image1.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image1.png b/samples/src/assets/images/commands/dimjogged/image1.png new file mode 100644 index 0000000..03465d8 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image1.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image10.png b/samples/src/assets/images/commands/dimjogged/image10.png new file mode 100644 index 0000000..989ae6a Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image10.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image11.png b/samples/src/assets/images/commands/dimjogged/image11.png new file mode 100644 index 0000000..6fd4676 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image11.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image2.png b/samples/src/assets/images/commands/dimjogged/image2.png new file mode 100644 index 0000000..8227c88 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image2.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image3.png b/samples/src/assets/images/commands/dimjogged/image3.png new file mode 100644 index 0000000..01a03cb Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image3.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image4.png b/samples/src/assets/images/commands/dimjogged/image4.png new file mode 100644 index 0000000..93b2b0e Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image4.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image5.png b/samples/src/assets/images/commands/dimjogged/image5.png new file mode 100644 index 0000000..2dacca0 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image5.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image6.png b/samples/src/assets/images/commands/dimjogged/image6.png new file mode 100644 index 0000000..24d2e35 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image6.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image7.png b/samples/src/assets/images/commands/dimjogged/image7.png new file mode 100644 index 0000000..3128a3e Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image7.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image8.png b/samples/src/assets/images/commands/dimjogged/image8.png new file mode 100644 index 0000000..e49296e Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image8.png differ diff --git a/samples/src/assets/images/commands/dimjogged/image9.png b/samples/src/assets/images/commands/dimjogged/image9.png new file mode 100644 index 0000000..49fc19f Binary files /dev/null and b/samples/src/assets/images/commands/dimjogged/image9.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image1.png b/samples/src/assets/images/commands/dimjogline/image1.png new file mode 100644 index 0000000..fffb623 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image1.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image2.png b/samples/src/assets/images/commands/dimjogline/image2.png new file mode 100644 index 0000000..a1aa287 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image2.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image3.png b/samples/src/assets/images/commands/dimjogline/image3.png new file mode 100644 index 0000000..e6b8321 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image3.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image4.png b/samples/src/assets/images/commands/dimjogline/image4.png new file mode 100644 index 0000000..bc2813d Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image4.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image5.png b/samples/src/assets/images/commands/dimjogline/image5.png new file mode 100644 index 0000000..5144c3b Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image5.png differ diff --git a/samples/src/assets/images/commands/dimjogline/image6.png b/samples/src/assets/images/commands/dimjogline/image6.png new file mode 100644 index 0000000..ebd7b03 Binary files /dev/null and b/samples/src/assets/images/commands/dimjogline/image6.png differ diff --git a/samples/src/assets/images/commands/dimjoin/image1.png b/samples/src/assets/images/commands/dimjoin/image1.png new file mode 100644 index 0000000..4a207cc Binary files /dev/null and b/samples/src/assets/images/commands/dimjoin/image1.png differ diff --git a/samples/src/assets/images/commands/dimlinear/image1.png b/samples/src/assets/images/commands/dimlinear/image1.png new file mode 100644 index 0000000..2563acf Binary files /dev/null and b/samples/src/assets/images/commands/dimlinear/image1.png differ diff --git a/samples/src/assets/images/commands/dimlineposition/image1.png b/samples/src/assets/images/commands/dimlineposition/image1.png new file mode 100644 index 0000000..3143c51 Binary files /dev/null and b/samples/src/assets/images/commands/dimlineposition/image1.png differ diff --git a/samples/src/assets/images/commands/dimordinate/image1.png b/samples/src/assets/images/commands/dimordinate/image1.png new file mode 100644 index 0000000..045edda Binary files /dev/null and b/samples/src/assets/images/commands/dimordinate/image1.png differ diff --git a/samples/src/assets/images/commands/dimradius/image1.png b/samples/src/assets/images/commands/dimradius/image1.png new file mode 100644 index 0000000..0805bc2 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image1.png differ diff --git a/samples/src/assets/images/commands/dimradius/image10.png b/samples/src/assets/images/commands/dimradius/image10.png new file mode 100644 index 0000000..f04a111 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image10.png differ diff --git a/samples/src/assets/images/commands/dimradius/image11.png b/samples/src/assets/images/commands/dimradius/image11.png new file mode 100644 index 0000000..fa5f911 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image11.png differ diff --git a/samples/src/assets/images/commands/dimradius/image2.png b/samples/src/assets/images/commands/dimradius/image2.png new file mode 100644 index 0000000..f13b268 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image2.png differ diff --git a/samples/src/assets/images/commands/dimradius/image3.png b/samples/src/assets/images/commands/dimradius/image3.png new file mode 100644 index 0000000..70df85b Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image3.png differ diff --git a/samples/src/assets/images/commands/dimradius/image4.png b/samples/src/assets/images/commands/dimradius/image4.png new file mode 100644 index 0000000..d6604a9 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image4.png differ diff --git a/samples/src/assets/images/commands/dimradius/image5.png b/samples/src/assets/images/commands/dimradius/image5.png new file mode 100644 index 0000000..ba7d4ce Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image5.png differ diff --git a/samples/src/assets/images/commands/dimradius/image6.png b/samples/src/assets/images/commands/dimradius/image6.png new file mode 100644 index 0000000..2d70241 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image6.png differ diff --git a/samples/src/assets/images/commands/dimradius/image7.png b/samples/src/assets/images/commands/dimradius/image7.png new file mode 100644 index 0000000..4fa5c37 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image7.png differ diff --git a/samples/src/assets/images/commands/dimradius/image8.png b/samples/src/assets/images/commands/dimradius/image8.png new file mode 100644 index 0000000..de70b89 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image8.png differ diff --git a/samples/src/assets/images/commands/dimradius/image9.png b/samples/src/assets/images/commands/dimradius/image9.png new file mode 100644 index 0000000..a348ae6 Binary files /dev/null and b/samples/src/assets/images/commands/dimradius/image9.png differ diff --git a/samples/src/assets/images/commands/dimreassociate/image1.png b/samples/src/assets/images/commands/dimreassociate/image1.png new file mode 100644 index 0000000..005d57c Binary files /dev/null and b/samples/src/assets/images/commands/dimreassociate/image1.png differ diff --git a/samples/src/assets/images/commands/dimtedit/image1.png b/samples/src/assets/images/commands/dimtedit/image1.png new file mode 100644 index 0000000..2ee8b0c Binary files /dev/null and b/samples/src/assets/images/commands/dimtedit/image1.png differ diff --git a/samples/src/assets/images/commands/dimxline/image1.png b/samples/src/assets/images/commands/dimxline/image1.png new file mode 100644 index 0000000..c3b39ae Binary files /dev/null and b/samples/src/assets/images/commands/dimxline/image1.png differ diff --git a/samples/src/assets/images/commands/dimxlinelength/image1.png b/samples/src/assets/images/commands/dimxlinelength/image1.png new file mode 100644 index 0000000..7a106b6 Binary files /dev/null and b/samples/src/assets/images/commands/dimxlinelength/image1.png differ diff --git a/samples/src/assets/images/commands/dimxlinelength/image2.png b/samples/src/assets/images/commands/dimxlinelength/image2.png new file mode 100644 index 0000000..0774265 Binary files /dev/null and b/samples/src/assets/images/commands/dimxlinelength/image2.png differ diff --git a/samples/src/assets/images/commands/directionreverse/image1.png b/samples/src/assets/images/commands/directionreverse/image1.png new file mode 100644 index 0000000..9828c8e Binary files /dev/null and b/samples/src/assets/images/commands/directionreverse/image1.png differ diff --git a/samples/src/assets/images/commands/directionreverse/image2.png b/samples/src/assets/images/commands/directionreverse/image2.png new file mode 100644 index 0000000..194079f Binary files /dev/null and b/samples/src/assets/images/commands/directionreverse/image2.png differ diff --git a/samples/src/assets/images/commands/directionreverse/image3.png b/samples/src/assets/images/commands/directionreverse/image3.png new file mode 100644 index 0000000..e236c20 Binary files /dev/null and b/samples/src/assets/images/commands/directionreverse/image3.png differ diff --git a/samples/src/assets/images/commands/distancemark/image1.png b/samples/src/assets/images/commands/distancemark/image1.png new file mode 100644 index 0000000..09bf275 Binary files /dev/null and b/samples/src/assets/images/commands/distancemark/image1.png differ diff --git a/samples/src/assets/images/commands/distancemark/image2.png b/samples/src/assets/images/commands/distancemark/image2.png new file mode 100644 index 0000000..2897ad1 Binary files /dev/null and b/samples/src/assets/images/commands/distancemark/image2.png differ diff --git a/samples/src/assets/images/commands/distancetext/image1.png b/samples/src/assets/images/commands/distancetext/image1.png new file mode 100644 index 0000000..9a0c49c Binary files /dev/null and b/samples/src/assets/images/commands/distancetext/image1.png differ diff --git a/samples/src/assets/images/commands/distancetext/image2.png b/samples/src/assets/images/commands/distancetext/image2.png new file mode 100644 index 0000000..57112c8 Binary files /dev/null and b/samples/src/assets/images/commands/distancetext/image2.png differ diff --git a/samples/src/assets/images/commands/distancetopoint/image1.png b/samples/src/assets/images/commands/distancetopoint/image1.png new file mode 100644 index 0000000..b38f1db Binary files /dev/null and b/samples/src/assets/images/commands/distancetopoint/image1.png differ diff --git a/samples/src/assets/images/commands/distancetopoint/image2.png b/samples/src/assets/images/commands/distancetopoint/image2.png new file mode 100644 index 0000000..1426c49 Binary files /dev/null and b/samples/src/assets/images/commands/distancetopoint/image2.png differ diff --git a/samples/src/assets/images/commands/divide/image1.png b/samples/src/assets/images/commands/divide/image1.png new file mode 100644 index 0000000..b569b1b Binary files /dev/null and b/samples/src/assets/images/commands/divide/image1.png differ diff --git a/samples/src/assets/images/commands/divide/image2.png b/samples/src/assets/images/commands/divide/image2.png new file mode 100644 index 0000000..6f278aa Binary files /dev/null and b/samples/src/assets/images/commands/divide/image2.png differ diff --git a/samples/src/assets/images/commands/donut/image1.png b/samples/src/assets/images/commands/donut/image1.png new file mode 100644 index 0000000..3e0f510 Binary files /dev/null and b/samples/src/assets/images/commands/donut/image1.png differ diff --git a/samples/src/assets/images/commands/drawarrow/image1.png b/samples/src/assets/images/commands/drawarrow/image1.png new file mode 100644 index 0000000..09fc8bf Binary files /dev/null and b/samples/src/assets/images/commands/drawarrow/image1.png differ diff --git a/samples/src/assets/images/commands/drawcurveusingtangent/image1.png b/samples/src/assets/images/commands/drawcurveusingtangent/image1.png new file mode 100644 index 0000000..8d410bf Binary files /dev/null and b/samples/src/assets/images/commands/drawcurveusingtangent/image1.png differ diff --git a/samples/src/assets/images/commands/draworder/image1.png b/samples/src/assets/images/commands/draworder/image1.png new file mode 100644 index 0000000..86982d2 Binary files /dev/null and b/samples/src/assets/images/commands/draworder/image1.png differ diff --git a/samples/src/assets/images/commands/draworder/image2.png b/samples/src/assets/images/commands/draworder/image2.png new file mode 100644 index 0000000..079f35f Binary files /dev/null and b/samples/src/assets/images/commands/draworder/image2.png differ diff --git a/samples/src/assets/images/commands/dtext/image1.png b/samples/src/assets/images/commands/dtext/image1.png new file mode 100644 index 0000000..ed2c2f7 Binary files /dev/null and b/samples/src/assets/images/commands/dtext/image1.png differ diff --git a/samples/src/assets/images/commands/dtext/image2.png b/samples/src/assets/images/commands/dtext/image2.png new file mode 100644 index 0000000..d7cc5cb Binary files /dev/null and b/samples/src/assets/images/commands/dtext/image2.png differ diff --git a/samples/src/assets/images/commands/dttmtext/image1.png b/samples/src/assets/images/commands/dttmtext/image1.png new file mode 100644 index 0000000..8206e49 Binary files /dev/null and b/samples/src/assets/images/commands/dttmtext/image1.png differ diff --git a/samples/src/assets/images/commands/dttmtext/image2.png b/samples/src/assets/images/commands/dttmtext/image2.png new file mode 100644 index 0000000..a3aea94 Binary files /dev/null and b/samples/src/assets/images/commands/dttmtext/image2.png differ diff --git a/samples/src/assets/images/commands/dwfframe/image1.png b/samples/src/assets/images/commands/dwfframe/image1.png new file mode 100644 index 0000000..9bded71 Binary files /dev/null and b/samples/src/assets/images/commands/dwfframe/image1.png differ diff --git a/samples/src/assets/images/commands/ebboundary/image1.png b/samples/src/assets/images/commands/ebboundary/image1.png new file mode 100644 index 0000000..e7f373a Binary files /dev/null and b/samples/src/assets/images/commands/ebboundary/image1.png differ diff --git a/samples/src/assets/images/commands/ebboundary/image2.png b/samples/src/assets/images/commands/ebboundary/image2.png new file mode 100644 index 0000000..bada3d7 Binary files /dev/null and b/samples/src/assets/images/commands/ebboundary/image2.png differ diff --git a/samples/src/assets/images/commands/edviewhor/image1.png b/samples/src/assets/images/commands/edviewhor/image1.png new file mode 100644 index 0000000..f19ae80 Binary files /dev/null and b/samples/src/assets/images/commands/edviewhor/image1.png differ diff --git a/samples/src/assets/images/commands/edviewhor/image2.png b/samples/src/assets/images/commands/edviewhor/image2.png new file mode 100644 index 0000000..3f3d385 Binary files /dev/null and b/samples/src/assets/images/commands/edviewhor/image2.png differ diff --git a/samples/src/assets/images/commands/edviewver/image1.png b/samples/src/assets/images/commands/edviewver/image1.png new file mode 100644 index 0000000..95c0f6b Binary files /dev/null and b/samples/src/assets/images/commands/edviewver/image1.png differ diff --git a/samples/src/assets/images/commands/edviewver/image2.png b/samples/src/assets/images/commands/edviewver/image2.png new file mode 100644 index 0000000..353d169 Binary files /dev/null and b/samples/src/assets/images/commands/edviewver/image2.png differ diff --git a/samples/src/assets/images/commands/ellipse/image1.png b/samples/src/assets/images/commands/ellipse/image1.png new file mode 100644 index 0000000..9ccaf58 Binary files /dev/null and b/samples/src/assets/images/commands/ellipse/image1.png differ diff --git a/samples/src/assets/images/commands/elvaluetotext/image1.png b/samples/src/assets/images/commands/elvaluetotext/image1.png new file mode 100644 index 0000000..28e52d2 Binary files /dev/null and b/samples/src/assets/images/commands/elvaluetotext/image1.png differ diff --git a/samples/src/assets/images/commands/elvaluetotext/image2.png b/samples/src/assets/images/commands/elvaluetotext/image2.png new file mode 100644 index 0000000..fd007bb Binary files /dev/null and b/samples/src/assets/images/commands/elvaluetotext/image2.png differ diff --git a/samples/src/assets/images/commands/erase/image1.png b/samples/src/assets/images/commands/erase/image1.png new file mode 100644 index 0000000..c83aaa6 Binary files /dev/null and b/samples/src/assets/images/commands/erase/image1.png differ diff --git a/samples/src/assets/images/commands/erase/image2.png b/samples/src/assets/images/commands/erase/image2.png new file mode 100644 index 0000000..41d3a40 Binary files /dev/null and b/samples/src/assets/images/commands/erase/image2.png differ diff --git a/samples/src/assets/images/commands/exleaders/image1.png b/samples/src/assets/images/commands/exleaders/image1.png new file mode 100644 index 0000000..5098271 Binary files /dev/null and b/samples/src/assets/images/commands/exleaders/image1.png differ diff --git a/samples/src/assets/images/commands/exltocad/image1.png b/samples/src/assets/images/commands/exltocad/image1.png new file mode 100644 index 0000000..92f0c67 Binary files /dev/null and b/samples/src/assets/images/commands/exltocad/image1.png differ diff --git a/samples/src/assets/images/commands/exltocad/image2.png b/samples/src/assets/images/commands/exltocad/image2.png new file mode 100644 index 0000000..cdd7468 Binary files /dev/null and b/samples/src/assets/images/commands/exltocad/image2.png differ diff --git a/samples/src/assets/images/commands/explode/image1.png b/samples/src/assets/images/commands/explode/image1.png new file mode 100644 index 0000000..a3aa84e Binary files /dev/null and b/samples/src/assets/images/commands/explode/image1.png differ diff --git a/samples/src/assets/images/commands/explode/image2.png b/samples/src/assets/images/commands/explode/image2.png new file mode 100644 index 0000000..95bb038 Binary files /dev/null and b/samples/src/assets/images/commands/explode/image2.png differ diff --git a/samples/src/assets/images/commands/explodebeammark/image1.png b/samples/src/assets/images/commands/explodebeammark/image1.png new file mode 100644 index 0000000..136a259 Binary files /dev/null and b/samples/src/assets/images/commands/explodebeammark/image1.png differ diff --git a/samples/src/assets/images/commands/exportcte/image1.png b/samples/src/assets/images/commands/exportcte/image1.png new file mode 100644 index 0000000..c2b786b Binary files /dev/null and b/samples/src/assets/images/commands/exportcte/image1.png differ diff --git a/samples/src/assets/images/commands/exportcte/image2.png b/samples/src/assets/images/commands/exportcte/image2.png new file mode 100644 index 0000000..cb9ff24 Binary files /dev/null and b/samples/src/assets/images/commands/exportcte/image2.png differ diff --git a/samples/src/assets/images/commands/exportcte/image3.png b/samples/src/assets/images/commands/exportcte/image3.png new file mode 100644 index 0000000..9a6018e Binary files /dev/null and b/samples/src/assets/images/commands/exportcte/image3.png differ diff --git a/samples/src/assets/images/commands/extend/image1.png b/samples/src/assets/images/commands/extend/image1.png new file mode 100644 index 0000000..eca9716 Binary files /dev/null and b/samples/src/assets/images/commands/extend/image1.png differ diff --git a/samples/src/assets/images/commands/extend/image2.png b/samples/src/assets/images/commands/extend/image2.png new file mode 100644 index 0000000..a00fb55 Binary files /dev/null and b/samples/src/assets/images/commands/extend/image2.png differ diff --git a/samples/src/assets/images/commands/extendtrim/image1.png b/samples/src/assets/images/commands/extendtrim/image1.png new file mode 100644 index 0000000..7f01341 Binary files /dev/null and b/samples/src/assets/images/commands/extendtrim/image1.png differ diff --git a/samples/src/assets/images/commands/extendtrim/image2.png b/samples/src/assets/images/commands/extendtrim/image2.png new file mode 100644 index 0000000..5417013 Binary files /dev/null and b/samples/src/assets/images/commands/extendtrim/image2.png differ diff --git a/samples/src/assets/images/commands/field/image1.png b/samples/src/assets/images/commands/field/image1.png new file mode 100644 index 0000000..e3f365b Binary files /dev/null and b/samples/src/assets/images/commands/field/image1.png differ diff --git a/samples/src/assets/images/commands/field/image2.png b/samples/src/assets/images/commands/field/image2.png new file mode 100644 index 0000000..1d0f433 Binary files /dev/null and b/samples/src/assets/images/commands/field/image2.png differ diff --git a/samples/src/assets/images/commands/field/image3.png b/samples/src/assets/images/commands/field/image3.png new file mode 100644 index 0000000..9c0a898 Binary files /dev/null and b/samples/src/assets/images/commands/field/image3.png differ diff --git a/samples/src/assets/images/commands/fielddisplay/image1.png b/samples/src/assets/images/commands/fielddisplay/image1.png new file mode 100644 index 0000000..a00f4fb Binary files /dev/null and b/samples/src/assets/images/commands/fielddisplay/image1.png differ diff --git a/samples/src/assets/images/commands/fielddisplay/image2.png b/samples/src/assets/images/commands/fielddisplay/image2.png new file mode 100644 index 0000000..1d3c17b Binary files /dev/null and b/samples/src/assets/images/commands/fielddisplay/image2.png differ diff --git a/samples/src/assets/images/commands/fieldeval/image1.png b/samples/src/assets/images/commands/fieldeval/image1.png new file mode 100644 index 0000000..228f9e4 Binary files /dev/null and b/samples/src/assets/images/commands/fieldeval/image1.png differ diff --git a/samples/src/assets/images/commands/fieldeval/image2.png b/samples/src/assets/images/commands/fieldeval/image2.png new file mode 100644 index 0000000..e8c2e80 Binary files /dev/null and b/samples/src/assets/images/commands/fieldeval/image2.png differ diff --git a/samples/src/assets/images/commands/fillet/image1.png b/samples/src/assets/images/commands/fillet/image1.png new file mode 100644 index 0000000..2b83ec8 Binary files /dev/null and b/samples/src/assets/images/commands/fillet/image1.png differ diff --git a/samples/src/assets/images/commands/fillmode/image1.png b/samples/src/assets/images/commands/fillmode/image1.png new file mode 100644 index 0000000..d161639 Binary files /dev/null and b/samples/src/assets/images/commands/fillmode/image1.png differ diff --git a/samples/src/assets/images/commands/fillmode/image2.png b/samples/src/assets/images/commands/fillmode/image2.png new file mode 100644 index 0000000..fdb0420 Binary files /dev/null and b/samples/src/assets/images/commands/fillmode/image2.png differ diff --git a/samples/src/assets/images/commands/fillmode/image3.png b/samples/src/assets/images/commands/fillmode/image3.png new file mode 100644 index 0000000..4cd4afc Binary files /dev/null and b/samples/src/assets/images/commands/fillmode/image3.png differ diff --git a/samples/src/assets/images/commands/find/image1.png b/samples/src/assets/images/commands/find/image1.png new file mode 100644 index 0000000..d411032 Binary files /dev/null and b/samples/src/assets/images/commands/find/image1.png differ diff --git a/samples/src/assets/images/commands/find/image2.png b/samples/src/assets/images/commands/find/image2.png new file mode 100644 index 0000000..73547d0 Binary files /dev/null and b/samples/src/assets/images/commands/find/image2.png differ diff --git a/samples/src/assets/images/commands/findandreplacetext/image1.png b/samples/src/assets/images/commands/findandreplacetext/image1.png new file mode 100644 index 0000000..61c90ae Binary files /dev/null and b/samples/src/assets/images/commands/findandreplacetext/image1.png differ diff --git a/samples/src/assets/images/commands/findandreplacetext/image2.png b/samples/src/assets/images/commands/findandreplacetext/image2.png new file mode 100644 index 0000000..d0b11e1 Binary files /dev/null and b/samples/src/assets/images/commands/findandreplacetext/image2.png differ diff --git a/samples/src/assets/images/commands/findblock/image1.png b/samples/src/assets/images/commands/findblock/image1.png new file mode 100644 index 0000000..6abb584 Binary files /dev/null and b/samples/src/assets/images/commands/findblock/image1.png differ diff --git a/samples/src/assets/images/commands/findblock/image2.png b/samples/src/assets/images/commands/findblock/image2.png new file mode 100644 index 0000000..fc0b429 Binary files /dev/null and b/samples/src/assets/images/commands/findblock/image2.png differ diff --git a/samples/src/assets/images/commands/findradius/image1.png b/samples/src/assets/images/commands/findradius/image1.png new file mode 100644 index 0000000..7082f20 Binary files /dev/null and b/samples/src/assets/images/commands/findradius/image1.png differ diff --git a/samples/src/assets/images/commands/findradius/image2.png b/samples/src/assets/images/commands/findradius/image2.png new file mode 100644 index 0000000..8ac0c6e Binary files /dev/null and b/samples/src/assets/images/commands/findradius/image2.png differ diff --git a/samples/src/assets/images/commands/frame/image1.png b/samples/src/assets/images/commands/frame/image1.png new file mode 100644 index 0000000..33704e1 Binary files /dev/null and b/samples/src/assets/images/commands/frame/image1.png differ diff --git a/samples/src/assets/images/commands/freezelayon/image1.png b/samples/src/assets/images/commands/freezelayon/image1.png new file mode 100644 index 0000000..ebecb59 Binary files /dev/null and b/samples/src/assets/images/commands/freezelayon/image1.png differ diff --git a/samples/src/assets/images/commands/freezeofflayon/image1.png b/samples/src/assets/images/commands/freezeofflayon/image1.png new file mode 100644 index 0000000..642e876 Binary files /dev/null and b/samples/src/assets/images/commands/freezeofflayon/image1.png differ diff --git a/samples/src/assets/images/commands/gotourl/image1.png b/samples/src/assets/images/commands/gotourl/image1.png new file mode 100644 index 0000000..6e9a166 Binary files /dev/null and b/samples/src/assets/images/commands/gotourl/image1.png differ diff --git a/samples/src/assets/images/commands/gotourl/image2.png b/samples/src/assets/images/commands/gotourl/image2.png new file mode 100644 index 0000000..2847c5f Binary files /dev/null and b/samples/src/assets/images/commands/gotourl/image2.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image1.png b/samples/src/assets/images/commands/graphicsconfig/image1.png new file mode 100644 index 0000000..d9c1b0a Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image1.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image2.png b/samples/src/assets/images/commands/graphicsconfig/image2.png new file mode 100644 index 0000000..2749976 Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image2.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image3.png b/samples/src/assets/images/commands/graphicsconfig/image3.png new file mode 100644 index 0000000..24edd98 Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image3.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image4.png b/samples/src/assets/images/commands/graphicsconfig/image4.png new file mode 100644 index 0000000..c21fa08 Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image4.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image5.png b/samples/src/assets/images/commands/graphicsconfig/image5.png new file mode 100644 index 0000000..af5f6c7 Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image5.png differ diff --git a/samples/src/assets/images/commands/graphicsconfig/image6.png b/samples/src/assets/images/commands/graphicsconfig/image6.png new file mode 100644 index 0000000..0478079 Binary files /dev/null and b/samples/src/assets/images/commands/graphicsconfig/image6.png differ diff --git a/samples/src/assets/images/commands/group/image1.png b/samples/src/assets/images/commands/group/image1.png new file mode 100644 index 0000000..e9c7bcf Binary files /dev/null and b/samples/src/assets/images/commands/group/image1.png differ diff --git a/samples/src/assets/images/commands/group/image2.png b/samples/src/assets/images/commands/group/image2.png new file mode 100644 index 0000000..537dab2 Binary files /dev/null and b/samples/src/assets/images/commands/group/image2.png differ diff --git a/samples/src/assets/images/commands/groupdisplaymode/image1.png b/samples/src/assets/images/commands/groupdisplaymode/image1.png new file mode 100644 index 0000000..60c5bb7 Binary files /dev/null and b/samples/src/assets/images/commands/groupdisplaymode/image1.png differ diff --git a/samples/src/assets/images/commands/groupdisplaymode/image2.png b/samples/src/assets/images/commands/groupdisplaymode/image2.png new file mode 100644 index 0000000..bf3458e Binary files /dev/null and b/samples/src/assets/images/commands/groupdisplaymode/image2.png differ diff --git a/samples/src/assets/images/commands/groupedit/image1.png b/samples/src/assets/images/commands/groupedit/image1.png new file mode 100644 index 0000000..09930c2 Binary files /dev/null and b/samples/src/assets/images/commands/groupedit/image1.png differ diff --git a/samples/src/assets/images/commands/hatch/image1.png b/samples/src/assets/images/commands/hatch/image1.png new file mode 100644 index 0000000..d252f5f Binary files /dev/null and b/samples/src/assets/images/commands/hatch/image1.png differ diff --git a/samples/src/assets/images/commands/hatch/image2.png b/samples/src/assets/images/commands/hatch/image2.png new file mode 100644 index 0000000..170413e Binary files /dev/null and b/samples/src/assets/images/commands/hatch/image2.png differ diff --git a/samples/src/assets/images/commands/hatch/image3.png b/samples/src/assets/images/commands/hatch/image3.png new file mode 100644 index 0000000..d8e2e46 Binary files /dev/null and b/samples/src/assets/images/commands/hatch/image3.png differ diff --git a/samples/src/assets/images/commands/hatcharea/image1.png b/samples/src/assets/images/commands/hatcharea/image1.png new file mode 100644 index 0000000..6a494fe Binary files /dev/null and b/samples/src/assets/images/commands/hatcharea/image1.png differ diff --git a/samples/src/assets/images/commands/hatcharea/image2.png b/samples/src/assets/images/commands/hatcharea/image2.png new file mode 100644 index 0000000..1a31f7b Binary files /dev/null and b/samples/src/assets/images/commands/hatcharea/image2.png differ diff --git a/samples/src/assets/images/commands/hatcharea/image3.png b/samples/src/assets/images/commands/hatcharea/image3.png new file mode 100644 index 0000000..c6c0351 Binary files /dev/null and b/samples/src/assets/images/commands/hatcharea/image3.png differ diff --git a/samples/src/assets/images/commands/hatchgenerateboundary/image1.png b/samples/src/assets/images/commands/hatchgenerateboundary/image1.png new file mode 100644 index 0000000..364f5bb Binary files /dev/null and b/samples/src/assets/images/commands/hatchgenerateboundary/image1.png differ diff --git a/samples/src/assets/images/commands/hatchsetboundary/image1.png b/samples/src/assets/images/commands/hatchsetboundary/image1.png new file mode 100644 index 0000000..364f5bb Binary files /dev/null and b/samples/src/assets/images/commands/hatchsetboundary/image1.png differ diff --git a/samples/src/assets/images/commands/hatchsetorigin/image1.png b/samples/src/assets/images/commands/hatchsetorigin/image1.png new file mode 100644 index 0000000..62c10e0 Binary files /dev/null and b/samples/src/assets/images/commands/hatchsetorigin/image1.png differ diff --git a/samples/src/assets/images/commands/hatchtoback/image1.png b/samples/src/assets/images/commands/hatchtoback/image1.png new file mode 100644 index 0000000..cbfe572 Binary files /dev/null and b/samples/src/assets/images/commands/hatchtoback/image1.png differ diff --git a/samples/src/assets/images/commands/helix/image1.png b/samples/src/assets/images/commands/helix/image1.png new file mode 100644 index 0000000..ecb9c4c Binary files /dev/null and b/samples/src/assets/images/commands/helix/image1.png differ diff --git a/samples/src/assets/images/commands/helix/image2.png b/samples/src/assets/images/commands/helix/image2.png new file mode 100644 index 0000000..33c20bd Binary files /dev/null and b/samples/src/assets/images/commands/helix/image2.png differ diff --git a/samples/src/assets/images/commands/helix/image3.png b/samples/src/assets/images/commands/helix/image3.png new file mode 100644 index 0000000..f8c41d6 Binary files /dev/null and b/samples/src/assets/images/commands/helix/image3.png differ diff --git a/samples/src/assets/images/commands/helix/image4.png b/samples/src/assets/images/commands/helix/image4.png new file mode 100644 index 0000000..3971217 Binary files /dev/null and b/samples/src/assets/images/commands/helix/image4.png differ diff --git a/samples/src/assets/images/commands/hideobjects/image1.png b/samples/src/assets/images/commands/hideobjects/image1.png new file mode 100644 index 0000000..be322ad Binary files /dev/null and b/samples/src/assets/images/commands/hideobjects/image1.png differ diff --git a/samples/src/assets/images/commands/hideobjects/image2.png b/samples/src/assets/images/commands/hideobjects/image2.png new file mode 100644 index 0000000..401f6ca Binary files /dev/null and b/samples/src/assets/images/commands/hideobjects/image2.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image1.png b/samples/src/assets/images/commands/hpinherit/image1.png new file mode 100644 index 0000000..db80cb5 Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image1.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image2.png b/samples/src/assets/images/commands/hpinherit/image2.png new file mode 100644 index 0000000..ab968b9 Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image2.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image3.png b/samples/src/assets/images/commands/hpinherit/image3.png new file mode 100644 index 0000000..97d07a8 Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image3.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image4.png b/samples/src/assets/images/commands/hpinherit/image4.png new file mode 100644 index 0000000..e53022d Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image4.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image5.png b/samples/src/assets/images/commands/hpinherit/image5.png new file mode 100644 index 0000000..ab968b9 Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image5.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image6.png b/samples/src/assets/images/commands/hpinherit/image6.png new file mode 100644 index 0000000..5ad3fbf Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image6.png differ diff --git a/samples/src/assets/images/commands/hpinherit/image7.png b/samples/src/assets/images/commands/hpinherit/image7.png new file mode 100644 index 0000000..5ad3fbf Binary files /dev/null and b/samples/src/assets/images/commands/hpinherit/image7.png differ diff --git a/samples/src/assets/images/commands/hyperlink/image1.png b/samples/src/assets/images/commands/hyperlink/image1.png new file mode 100644 index 0000000..f04fd29 Binary files /dev/null and b/samples/src/assets/images/commands/hyperlink/image1.png differ diff --git a/samples/src/assets/images/commands/hyperlink/image2.png b/samples/src/assets/images/commands/hyperlink/image2.png new file mode 100644 index 0000000..76b95d0 Binary files /dev/null and b/samples/src/assets/images/commands/hyperlink/image2.png differ diff --git a/samples/src/assets/images/commands/hyperlink/image3.png b/samples/src/assets/images/commands/hyperlink/image3.png new file mode 100644 index 0000000..5ef0470 Binary files /dev/null and b/samples/src/assets/images/commands/hyperlink/image3.png differ diff --git a/samples/src/assets/images/commands/hyperlinkoptions/image1.png b/samples/src/assets/images/commands/hyperlinkoptions/image1.png new file mode 100644 index 0000000..c96f877 Binary files /dev/null and b/samples/src/assets/images/commands/hyperlinkoptions/image1.png differ diff --git a/samples/src/assets/images/commands/icocopy/image1.png b/samples/src/assets/images/commands/icocopy/image1.png new file mode 100644 index 0000000..545506b Binary files /dev/null and b/samples/src/assets/images/commands/icocopy/image1.png differ diff --git a/samples/src/assets/images/commands/id/image1.png b/samples/src/assets/images/commands/id/image1.png new file mode 100644 index 0000000..4fc8cd6 Binary files /dev/null and b/samples/src/assets/images/commands/id/image1.png differ diff --git a/samples/src/assets/images/commands/id/image2.png b/samples/src/assets/images/commands/id/image2.png new file mode 100644 index 0000000..85c58cc Binary files /dev/null and b/samples/src/assets/images/commands/id/image2.png differ diff --git a/samples/src/assets/images/commands/imageframe/image1.png b/samples/src/assets/images/commands/imageframe/image1.png new file mode 100644 index 0000000..0779e62 Binary files /dev/null and b/samples/src/assets/images/commands/imageframe/image1.png differ diff --git a/samples/src/assets/images/commands/imagequality/image1.png b/samples/src/assets/images/commands/imagequality/image1.png new file mode 100644 index 0000000..cd4a2be Binary files /dev/null and b/samples/src/assets/images/commands/imagequality/image1.png differ diff --git a/samples/src/assets/images/commands/imagequality/image2.png b/samples/src/assets/images/commands/imagequality/image2.png new file mode 100644 index 0000000..24cb11e Binary files /dev/null and b/samples/src/assets/images/commands/imagequality/image2.png differ diff --git a/samples/src/assets/images/commands/importcoordinates/image1.png b/samples/src/assets/images/commands/importcoordinates/image1.png new file mode 100644 index 0000000..8f78170 Binary files /dev/null and b/samples/src/assets/images/commands/importcoordinates/image1.png differ diff --git a/samples/src/assets/images/commands/importcoordinates/image2.png b/samples/src/assets/images/commands/importcoordinates/image2.png new file mode 100644 index 0000000..b3e2381 Binary files /dev/null and b/samples/src/assets/images/commands/importcoordinates/image2.png differ diff --git a/samples/src/assets/images/commands/incrementmodify/image1.png b/samples/src/assets/images/commands/incrementmodify/image1.png new file mode 100644 index 0000000..decf386 Binary files /dev/null and b/samples/src/assets/images/commands/incrementmodify/image1.png differ diff --git a/samples/src/assets/images/commands/inoffset/image1.png b/samples/src/assets/images/commands/inoffset/image1.png new file mode 100644 index 0000000..9b37274 Binary files /dev/null and b/samples/src/assets/images/commands/inoffset/image1.png differ diff --git a/samples/src/assets/images/commands/inquirecolor/image1.png b/samples/src/assets/images/commands/inquirecolor/image1.png new file mode 100644 index 0000000..e9c0090 Binary files /dev/null and b/samples/src/assets/images/commands/inquirecolor/image1.png differ diff --git a/samples/src/assets/images/commands/inquirecolor/image2.png b/samples/src/assets/images/commands/inquirecolor/image2.png new file mode 100644 index 0000000..4801261 Binary files /dev/null and b/samples/src/assets/images/commands/inquirecolor/image2.png differ diff --git a/samples/src/assets/images/commands/insertobj/image1.png b/samples/src/assets/images/commands/insertobj/image1.png new file mode 100644 index 0000000..99f47d1 Binary files /dev/null and b/samples/src/assets/images/commands/insertobj/image1.png differ diff --git a/samples/src/assets/images/commands/insertobj/image2.png b/samples/src/assets/images/commands/insertobj/image2.png new file mode 100644 index 0000000..0e5723a Binary files /dev/null and b/samples/src/assets/images/commands/insertobj/image2.png differ diff --git a/samples/src/assets/images/commands/intrebar/image1.png b/samples/src/assets/images/commands/intrebar/image1.png new file mode 100644 index 0000000..8605cec Binary files /dev/null and b/samples/src/assets/images/commands/intrebar/image1.png differ diff --git a/samples/src/assets/images/commands/intrebar/image2.png b/samples/src/assets/images/commands/intrebar/image2.png new file mode 100644 index 0000000..9c49f3b Binary files /dev/null and b/samples/src/assets/images/commands/intrebar/image2.png differ diff --git a/samples/src/assets/images/commands/isolateobjects/image1.png b/samples/src/assets/images/commands/isolateobjects/image1.png new file mode 100644 index 0000000..153b686 Binary files /dev/null and b/samples/src/assets/images/commands/isolateobjects/image1.png differ diff --git a/samples/src/assets/images/commands/isolateobjects/image2.png b/samples/src/assets/images/commands/isolateobjects/image2.png new file mode 100644 index 0000000..43a288e Binary files /dev/null and b/samples/src/assets/images/commands/isolateobjects/image2.png differ diff --git a/samples/src/assets/images/commands/jmp/image1.png b/samples/src/assets/images/commands/jmp/image1.png new file mode 100644 index 0000000..f00da09 Binary files /dev/null and b/samples/src/assets/images/commands/jmp/image1.png differ diff --git a/samples/src/assets/images/commands/jmp/image2.png b/samples/src/assets/images/commands/jmp/image2.png new file mode 100644 index 0000000..bdabd2f Binary files /dev/null and b/samples/src/assets/images/commands/jmp/image2.png differ diff --git a/samples/src/assets/images/commands/join/image1.png b/samples/src/assets/images/commands/join/image1.png new file mode 100644 index 0000000..235ec54 Binary files /dev/null and b/samples/src/assets/images/commands/join/image1.png differ diff --git a/samples/src/assets/images/commands/join/image2.png b/samples/src/assets/images/commands/join/image2.png new file mode 100644 index 0000000..9c19570 Binary files /dev/null and b/samples/src/assets/images/commands/join/image2.png differ diff --git a/samples/src/assets/images/commands/join/image3.png b/samples/src/assets/images/commands/join/image3.png new file mode 100644 index 0000000..ed90bf4 Binary files /dev/null and b/samples/src/assets/images/commands/join/image3.png differ diff --git a/samples/src/assets/images/commands/join/image4.png b/samples/src/assets/images/commands/join/image4.png new file mode 100644 index 0000000..5ee1422 Binary files /dev/null and b/samples/src/assets/images/commands/join/image4.png differ diff --git a/samples/src/assets/images/commands/join/image5.png b/samples/src/assets/images/commands/join/image5.png new file mode 100644 index 0000000..3288223 Binary files /dev/null and b/samples/src/assets/images/commands/join/image5.png differ diff --git a/samples/src/assets/images/commands/justifytext/image1.png b/samples/src/assets/images/commands/justifytext/image1.png new file mode 100644 index 0000000..1a44ef2 Binary files /dev/null and b/samples/src/assets/images/commands/justifytext/image1.png differ diff --git a/samples/src/assets/images/commands/justifytext/image2.png b/samples/src/assets/images/commands/justifytext/image2.png new file mode 100644 index 0000000..dd57eb3 Binary files /dev/null and b/samples/src/assets/images/commands/justifytext/image2.png differ diff --git a/samples/src/assets/images/commands/laycur/image1.png b/samples/src/assets/images/commands/laycur/image1.png new file mode 100644 index 0000000..e2db074 Binary files /dev/null and b/samples/src/assets/images/commands/laycur/image1.png differ diff --git a/samples/src/assets/images/commands/laycur/image2.png b/samples/src/assets/images/commands/laycur/image2.png new file mode 100644 index 0000000..a9ffe89 Binary files /dev/null and b/samples/src/assets/images/commands/laycur/image2.png differ diff --git a/samples/src/assets/images/commands/laydel/image1.png b/samples/src/assets/images/commands/laydel/image1.png new file mode 100644 index 0000000..7c94b5d Binary files /dev/null and b/samples/src/assets/images/commands/laydel/image1.png differ diff --git a/samples/src/assets/images/commands/laydel/image2.png b/samples/src/assets/images/commands/laydel/image2.png new file mode 100644 index 0000000..a47c59d Binary files /dev/null and b/samples/src/assets/images/commands/laydel/image2.png differ diff --git a/samples/src/assets/images/commands/layer/image1.png b/samples/src/assets/images/commands/layer/image1.png new file mode 100644 index 0000000..1fcae24 Binary files /dev/null and b/samples/src/assets/images/commands/layer/image1.png differ diff --git a/samples/src/assets/images/commands/layer/image2.png b/samples/src/assets/images/commands/layer/image2.png new file mode 100644 index 0000000..fae9798 Binary files /dev/null and b/samples/src/assets/images/commands/layer/image2.png differ diff --git a/samples/src/assets/images/commands/layerp/image1.png b/samples/src/assets/images/commands/layerp/image1.png new file mode 100644 index 0000000..4c08859 Binary files /dev/null and b/samples/src/assets/images/commands/layerp/image1.png differ diff --git a/samples/src/assets/images/commands/layfrz/image1.png b/samples/src/assets/images/commands/layfrz/image1.png new file mode 100644 index 0000000..5535269 Binary files /dev/null and b/samples/src/assets/images/commands/layfrz/image1.png differ diff --git a/samples/src/assets/images/commands/layiso/image1.png b/samples/src/assets/images/commands/layiso/image1.png new file mode 100644 index 0000000..1b36835 Binary files /dev/null and b/samples/src/assets/images/commands/layiso/image1.png differ diff --git a/samples/src/assets/images/commands/layiso/image2.png b/samples/src/assets/images/commands/layiso/image2.png new file mode 100644 index 0000000..2ba2103 Binary files /dev/null and b/samples/src/assets/images/commands/layiso/image2.png differ diff --git a/samples/src/assets/images/commands/laylck/image1.png b/samples/src/assets/images/commands/laylck/image1.png new file mode 100644 index 0000000..bf2c0c9 Binary files /dev/null and b/samples/src/assets/images/commands/laylck/image1.png differ diff --git a/samples/src/assets/images/commands/laylck/image2.png b/samples/src/assets/images/commands/laylck/image2.png new file mode 100644 index 0000000..ebdd1a4 Binary files /dev/null and b/samples/src/assets/images/commands/laylck/image2.png differ diff --git a/samples/src/assets/images/commands/laylockfadectl/image1.png b/samples/src/assets/images/commands/laylockfadectl/image1.png new file mode 100644 index 0000000..68ca930 Binary files /dev/null and b/samples/src/assets/images/commands/laylockfadectl/image1.png differ diff --git a/samples/src/assets/images/commands/laylockfadectl/image2.png b/samples/src/assets/images/commands/laylockfadectl/image2.png new file mode 100644 index 0000000..76b8f15 Binary files /dev/null and b/samples/src/assets/images/commands/laylockfadectl/image2.png differ diff --git a/samples/src/assets/images/commands/laymch/image1.png b/samples/src/assets/images/commands/laymch/image1.png new file mode 100644 index 0000000..20f88d8 Binary files /dev/null and b/samples/src/assets/images/commands/laymch/image1.png differ diff --git a/samples/src/assets/images/commands/laymch/image2.png b/samples/src/assets/images/commands/laymch/image2.png new file mode 100644 index 0000000..35c9558 Binary files /dev/null and b/samples/src/assets/images/commands/laymch/image2.png differ diff --git a/samples/src/assets/images/commands/laymcur/image1.png b/samples/src/assets/images/commands/laymcur/image1.png new file mode 100644 index 0000000..5065e98 Binary files /dev/null and b/samples/src/assets/images/commands/laymcur/image1.png differ diff --git a/samples/src/assets/images/commands/laymcur/image2.png b/samples/src/assets/images/commands/laymcur/image2.png new file mode 100644 index 0000000..cb28a95 Binary files /dev/null and b/samples/src/assets/images/commands/laymcur/image2.png differ diff --git a/samples/src/assets/images/commands/laymgr/image1.png b/samples/src/assets/images/commands/laymgr/image1.png new file mode 100644 index 0000000..5065e98 Binary files /dev/null and b/samples/src/assets/images/commands/laymgr/image1.png differ diff --git a/samples/src/assets/images/commands/laymgr/image2.png b/samples/src/assets/images/commands/laymgr/image2.png new file mode 100644 index 0000000..703aac9 Binary files /dev/null and b/samples/src/assets/images/commands/laymgr/image2.png differ diff --git a/samples/src/assets/images/commands/layoff/image1.png b/samples/src/assets/images/commands/layoff/image1.png new file mode 100644 index 0000000..18122ed Binary files /dev/null and b/samples/src/assets/images/commands/layoff/image1.png differ diff --git a/samples/src/assets/images/commands/layoff/image2.png b/samples/src/assets/images/commands/layoff/image2.png new file mode 100644 index 0000000..d623a5f Binary files /dev/null and b/samples/src/assets/images/commands/layoff/image2.png differ diff --git a/samples/src/assets/images/commands/layon/image1.png b/samples/src/assets/images/commands/layon/image1.png new file mode 100644 index 0000000..5cb4e84 Binary files /dev/null and b/samples/src/assets/images/commands/layon/image1.png differ diff --git a/samples/src/assets/images/commands/layout/image1.png b/samples/src/assets/images/commands/layout/image1.png new file mode 100644 index 0000000..aad0701 Binary files /dev/null and b/samples/src/assets/images/commands/layout/image1.png differ diff --git a/samples/src/assets/images/commands/laythw/image1.png b/samples/src/assets/images/commands/laythw/image1.png new file mode 100644 index 0000000..514d3d3 Binary files /dev/null and b/samples/src/assets/images/commands/laythw/image1.png differ diff --git a/samples/src/assets/images/commands/layulk/image1.png b/samples/src/assets/images/commands/layulk/image1.png new file mode 100644 index 0000000..620ed29 Binary files /dev/null and b/samples/src/assets/images/commands/layulk/image1.png differ diff --git a/samples/src/assets/images/commands/layuniso/image1.png b/samples/src/assets/images/commands/layuniso/image1.png new file mode 100644 index 0000000..3bab096 Binary files /dev/null and b/samples/src/assets/images/commands/layuniso/image1.png differ diff --git a/samples/src/assets/images/commands/lbtline/image1.png b/samples/src/assets/images/commands/lbtline/image1.png new file mode 100644 index 0000000..26019c8 Binary files /dev/null and b/samples/src/assets/images/commands/lbtline/image1.png differ diff --git a/samples/src/assets/images/commands/lbtline/image2.png b/samples/src/assets/images/commands/lbtline/image2.png new file mode 100644 index 0000000..feb8c25 Binary files /dev/null and b/samples/src/assets/images/commands/lbtline/image2.png differ diff --git a/samples/src/assets/images/commands/lengthen/image1.png b/samples/src/assets/images/commands/lengthen/image1.png new file mode 100644 index 0000000..d3cbe31 Binary files /dev/null and b/samples/src/assets/images/commands/lengthen/image1.png differ diff --git a/samples/src/assets/images/commands/line/image1.png b/samples/src/assets/images/commands/line/image1.png new file mode 100644 index 0000000..a60a7e4 Binary files /dev/null and b/samples/src/assets/images/commands/line/image1.png differ diff --git a/samples/src/assets/images/commands/line/image2.png b/samples/src/assets/images/commands/line/image2.png new file mode 100644 index 0000000..9c4c7ed Binary files /dev/null and b/samples/src/assets/images/commands/line/image2.png differ diff --git a/samples/src/assets/images/commands/line/image3.png b/samples/src/assets/images/commands/line/image3.png new file mode 100644 index 0000000..477c0c2 Binary files /dev/null and b/samples/src/assets/images/commands/line/image3.png differ diff --git a/samples/src/assets/images/commands/linearrebar/image1.png b/samples/src/assets/images/commands/linearrebar/image1.png new file mode 100644 index 0000000..e1a5d4b Binary files /dev/null and b/samples/src/assets/images/commands/linearrebar/image1.png differ diff --git a/samples/src/assets/images/commands/linetype/image1.png b/samples/src/assets/images/commands/linetype/image1.png new file mode 100644 index 0000000..943ca3c Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image1.png differ diff --git a/samples/src/assets/images/commands/linetype/image2.png b/samples/src/assets/images/commands/linetype/image2.png new file mode 100644 index 0000000..907ff3a Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image2.png differ diff --git a/samples/src/assets/images/commands/linetype/image3.png b/samples/src/assets/images/commands/linetype/image3.png new file mode 100644 index 0000000..79c7078 Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image3.png differ diff --git a/samples/src/assets/images/commands/linetype/image4.png b/samples/src/assets/images/commands/linetype/image4.png new file mode 100644 index 0000000..3a7a22d Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image4.png differ diff --git a/samples/src/assets/images/commands/linetype/image5.png b/samples/src/assets/images/commands/linetype/image5.png new file mode 100644 index 0000000..3aeb2ed Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image5.png differ diff --git a/samples/src/assets/images/commands/linetype/image6.png b/samples/src/assets/images/commands/linetype/image6.png new file mode 100644 index 0000000..e2f6d93 Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image6.png differ diff --git a/samples/src/assets/images/commands/linetype/image7.png b/samples/src/assets/images/commands/linetype/image7.png new file mode 100644 index 0000000..4acd88c Binary files /dev/null and b/samples/src/assets/images/commands/linetype/image7.png differ diff --git a/samples/src/assets/images/commands/list/image1.png b/samples/src/assets/images/commands/list/image1.png new file mode 100644 index 0000000..1651ae8 Binary files /dev/null and b/samples/src/assets/images/commands/list/image1.png differ diff --git a/samples/src/assets/images/commands/list/image2.png b/samples/src/assets/images/commands/list/image2.png new file mode 100644 index 0000000..f5a4732 Binary files /dev/null and b/samples/src/assets/images/commands/list/image2.png differ diff --git a/samples/src/assets/images/commands/ltscale/image1.png b/samples/src/assets/images/commands/ltscale/image1.png new file mode 100644 index 0000000..f9161e2 Binary files /dev/null and b/samples/src/assets/images/commands/ltscale/image1.png differ diff --git a/samples/src/assets/images/commands/lunits/image1.png b/samples/src/assets/images/commands/lunits/image1.png new file mode 100644 index 0000000..416a571 Binary files /dev/null and b/samples/src/assets/images/commands/lunits/image1.png differ diff --git a/samples/src/assets/images/commands/luprec/image1.png b/samples/src/assets/images/commands/luprec/image1.png new file mode 100644 index 0000000..53c617e Binary files /dev/null and b/samples/src/assets/images/commands/luprec/image1.png differ diff --git a/samples/src/assets/images/commands/mapimport/image1.png b/samples/src/assets/images/commands/mapimport/image1.png new file mode 100644 index 0000000..dc6d689 Binary files /dev/null and b/samples/src/assets/images/commands/mapimport/image1.png differ diff --git a/samples/src/assets/images/commands/mapimport/image2.png b/samples/src/assets/images/commands/mapimport/image2.png new file mode 100644 index 0000000..c9d23ea Binary files /dev/null and b/samples/src/assets/images/commands/mapimport/image2.png differ diff --git a/samples/src/assets/images/commands/mark/image1.png b/samples/src/assets/images/commands/mark/image1.png new file mode 100644 index 0000000..02f8634 Binary files /dev/null and b/samples/src/assets/images/commands/mark/image1.png differ diff --git a/samples/src/assets/images/commands/markcorner/image1.png b/samples/src/assets/images/commands/markcorner/image1.png new file mode 100644 index 0000000..4dd04aa Binary files /dev/null and b/samples/src/assets/images/commands/markcorner/image1.png differ diff --git a/samples/src/assets/images/commands/markelevation/image1.png b/samples/src/assets/images/commands/markelevation/image1.png new file mode 100644 index 0000000..3566ed3 Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image1.png differ diff --git a/samples/src/assets/images/commands/markelevation/image2.png b/samples/src/assets/images/commands/markelevation/image2.png new file mode 100644 index 0000000..05e38f3 Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image2.png differ diff --git a/samples/src/assets/images/commands/markelevation/image3.png b/samples/src/assets/images/commands/markelevation/image3.png new file mode 100644 index 0000000..c3a424f Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image3.png differ diff --git a/samples/src/assets/images/commands/markelevation/image4.png b/samples/src/assets/images/commands/markelevation/image4.png new file mode 100644 index 0000000..e178d02 Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image4.png differ diff --git a/samples/src/assets/images/commands/markelevation/image5.png b/samples/src/assets/images/commands/markelevation/image5.png new file mode 100644 index 0000000..27251b0 Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image5.png differ diff --git a/samples/src/assets/images/commands/markelevation/image6.png b/samples/src/assets/images/commands/markelevation/image6.png new file mode 100644 index 0000000..390a9ad Binary files /dev/null and b/samples/src/assets/images/commands/markelevation/image6.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image1.png b/samples/src/assets/images/commands/markslopetext/image1.png new file mode 100644 index 0000000..54e2a93 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image1.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image10.png b/samples/src/assets/images/commands/markslopetext/image10.png new file mode 100644 index 0000000..a9f6545 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image10.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image2.png b/samples/src/assets/images/commands/markslopetext/image2.png new file mode 100644 index 0000000..9414a34 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image2.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image3.png b/samples/src/assets/images/commands/markslopetext/image3.png new file mode 100644 index 0000000..27b70cd Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image3.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image4.png b/samples/src/assets/images/commands/markslopetext/image4.png new file mode 100644 index 0000000..9814ac8 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image4.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image5.png b/samples/src/assets/images/commands/markslopetext/image5.png new file mode 100644 index 0000000..f52e24c Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image5.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image6.png b/samples/src/assets/images/commands/markslopetext/image6.png new file mode 100644 index 0000000..54e2a93 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image6.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image7.png b/samples/src/assets/images/commands/markslopetext/image7.png new file mode 100644 index 0000000..019f754 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image7.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image8.png b/samples/src/assets/images/commands/markslopetext/image8.png new file mode 100644 index 0000000..b17716c Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image8.png differ diff --git a/samples/src/assets/images/commands/markslopetext/image9.png b/samples/src/assets/images/commands/markslopetext/image9.png new file mode 100644 index 0000000..0ff07b3 Binary files /dev/null and b/samples/src/assets/images/commands/markslopetext/image9.png differ diff --git a/samples/src/assets/images/commands/massprop/image1.png b/samples/src/assets/images/commands/massprop/image1.png new file mode 100644 index 0000000..d135991 Binary files /dev/null and b/samples/src/assets/images/commands/massprop/image1.png differ diff --git a/samples/src/assets/images/commands/matchprop/image1.png b/samples/src/assets/images/commands/matchprop/image1.png new file mode 100644 index 0000000..467999d Binary files /dev/null and b/samples/src/assets/images/commands/matchprop/image1.png differ diff --git a/samples/src/assets/images/commands/matchprop/image2.png b/samples/src/assets/images/commands/matchprop/image2.png new file mode 100644 index 0000000..17eba0c Binary files /dev/null and b/samples/src/assets/images/commands/matchprop/image2.png differ diff --git a/samples/src/assets/images/commands/matchprop/image3.png b/samples/src/assets/images/commands/matchprop/image3.png new file mode 100644 index 0000000..2063c6f Binary files /dev/null and b/samples/src/assets/images/commands/matchprop/image3.png differ diff --git a/samples/src/assets/images/commands/max/image1.png b/samples/src/assets/images/commands/max/image1.png new file mode 100644 index 0000000..a16fb38 Binary files /dev/null and b/samples/src/assets/images/commands/max/image1.png differ diff --git a/samples/src/assets/images/commands/mdthorizontally/image1.png b/samples/src/assets/images/commands/mdthorizontally/image1.png new file mode 100644 index 0000000..b3d2345 Binary files /dev/null and b/samples/src/assets/images/commands/mdthorizontally/image1.png differ diff --git a/samples/src/assets/images/commands/mdtoutside/image1.png b/samples/src/assets/images/commands/mdtoutside/image1.png new file mode 100644 index 0000000..159569b Binary files /dev/null and b/samples/src/assets/images/commands/mdtoutside/image1.png differ diff --git a/samples/src/assets/images/commands/mdtvertically/image1.png b/samples/src/assets/images/commands/mdtvertically/image1.png new file mode 100644 index 0000000..cdcd9ef Binary files /dev/null and b/samples/src/assets/images/commands/mdtvertically/image1.png differ diff --git a/samples/src/assets/images/commands/measure/image1.png b/samples/src/assets/images/commands/measure/image1.png new file mode 100644 index 0000000..1221c13 Binary files /dev/null and b/samples/src/assets/images/commands/measure/image1.png differ diff --git a/samples/src/assets/images/commands/measure/image2.png b/samples/src/assets/images/commands/measure/image2.png new file mode 100644 index 0000000..780d65e Binary files /dev/null and b/samples/src/assets/images/commands/measure/image2.png differ diff --git a/samples/src/assets/images/commands/measuregeom/image1.png b/samples/src/assets/images/commands/measuregeom/image1.png new file mode 100644 index 0000000..c7a2876 Binary files /dev/null and b/samples/src/assets/images/commands/measuregeom/image1.png differ diff --git a/samples/src/assets/images/commands/measuregeom/image2.png b/samples/src/assets/images/commands/measuregeom/image2.png new file mode 100644 index 0000000..6f9e7d0 Binary files /dev/null and b/samples/src/assets/images/commands/measuregeom/image2.png differ diff --git a/samples/src/assets/images/commands/mirror/image1.png b/samples/src/assets/images/commands/mirror/image1.png new file mode 100644 index 0000000..2065633 Binary files /dev/null and b/samples/src/assets/images/commands/mirror/image1.png differ diff --git a/samples/src/assets/images/commands/mirror/image2.png b/samples/src/assets/images/commands/mirror/image2.png new file mode 100644 index 0000000..849471d Binary files /dev/null and b/samples/src/assets/images/commands/mirror/image2.png differ diff --git a/samples/src/assets/images/commands/mirror3d/image1.png b/samples/src/assets/images/commands/mirror3d/image1.png new file mode 100644 index 0000000..b569b1b Binary files /dev/null and b/samples/src/assets/images/commands/mirror3d/image1.png differ diff --git a/samples/src/assets/images/commands/mirror3d/image2.png b/samples/src/assets/images/commands/mirror3d/image2.png new file mode 100644 index 0000000..b415024 Binary files /dev/null and b/samples/src/assets/images/commands/mirror3d/image2.png differ diff --git a/samples/src/assets/images/commands/mjoin/image1.png b/samples/src/assets/images/commands/mjoin/image1.png new file mode 100644 index 0000000..715fb5c Binary files /dev/null and b/samples/src/assets/images/commands/mjoin/image1.png differ diff --git a/samples/src/assets/images/commands/mleader/image1.png b/samples/src/assets/images/commands/mleader/image1.png new file mode 100644 index 0000000..cc4281a Binary files /dev/null and b/samples/src/assets/images/commands/mleader/image1.png differ diff --git a/samples/src/assets/images/commands/mleaderalign/image1.png b/samples/src/assets/images/commands/mleaderalign/image1.png new file mode 100644 index 0000000..d658a50 Binary files /dev/null and b/samples/src/assets/images/commands/mleaderalign/image1.png differ diff --git a/samples/src/assets/images/commands/mleadercollect/image1.png b/samples/src/assets/images/commands/mleadercollect/image1.png new file mode 100644 index 0000000..2c31e0e Binary files /dev/null and b/samples/src/assets/images/commands/mleadercollect/image1.png differ diff --git a/samples/src/assets/images/commands/mleaderedit/image1.png b/samples/src/assets/images/commands/mleaderedit/image1.png new file mode 100644 index 0000000..a491abc Binary files /dev/null and b/samples/src/assets/images/commands/mleaderedit/image1.png differ diff --git a/samples/src/assets/images/commands/mleaderstyle/image1.png b/samples/src/assets/images/commands/mleaderstyle/image1.png new file mode 100644 index 0000000..402f104 Binary files /dev/null and b/samples/src/assets/images/commands/mleaderstyle/image1.png differ diff --git a/samples/src/assets/images/commands/mleaderstyle/image2.png b/samples/src/assets/images/commands/mleaderstyle/image2.png new file mode 100644 index 0000000..7b378bb Binary files /dev/null and b/samples/src/assets/images/commands/mleaderstyle/image2.png differ diff --git a/samples/src/assets/images/commands/mline/image1.png b/samples/src/assets/images/commands/mline/image1.png new file mode 100644 index 0000000..beeb60a Binary files /dev/null and b/samples/src/assets/images/commands/mline/image1.png differ diff --git a/samples/src/assets/images/commands/mline/image2.png b/samples/src/assets/images/commands/mline/image2.png new file mode 100644 index 0000000..08a95f4 Binary files /dev/null and b/samples/src/assets/images/commands/mline/image2.png differ diff --git a/samples/src/assets/images/commands/mline/image3.png b/samples/src/assets/images/commands/mline/image3.png new file mode 100644 index 0000000..de9c634 Binary files /dev/null and b/samples/src/assets/images/commands/mline/image3.png differ diff --git a/samples/src/assets/images/commands/mline/image4.png b/samples/src/assets/images/commands/mline/image4.png new file mode 100644 index 0000000..32d1771 Binary files /dev/null and b/samples/src/assets/images/commands/mline/image4.png differ diff --git a/samples/src/assets/images/commands/mline/image5.png b/samples/src/assets/images/commands/mline/image5.png new file mode 100644 index 0000000..30e3315 Binary files /dev/null and b/samples/src/assets/images/commands/mline/image5.png differ diff --git a/samples/src/assets/images/commands/model/image1.png b/samples/src/assets/images/commands/model/image1.png new file mode 100644 index 0000000..86e655c Binary files /dev/null and b/samples/src/assets/images/commands/model/image1.png differ diff --git a/samples/src/assets/images/commands/molayprop/image1.png b/samples/src/assets/images/commands/molayprop/image1.png new file mode 100644 index 0000000..14f873b Binary files /dev/null and b/samples/src/assets/images/commands/molayprop/image1.png differ diff --git a/samples/src/assets/images/commands/molayprop/image2.png b/samples/src/assets/images/commands/molayprop/image2.png new file mode 100644 index 0000000..68c77ea Binary files /dev/null and b/samples/src/assets/images/commands/molayprop/image2.png differ diff --git a/samples/src/assets/images/commands/move/image1.png b/samples/src/assets/images/commands/move/image1.png new file mode 100644 index 0000000..64671b2 Binary files /dev/null and b/samples/src/assets/images/commands/move/image1.png differ diff --git a/samples/src/assets/images/commands/move/image2.png b/samples/src/assets/images/commands/move/image2.png new file mode 100644 index 0000000..4afa1d4 Binary files /dev/null and b/samples/src/assets/images/commands/move/image2.png differ diff --git a/samples/src/assets/images/commands/moveentnewlay/image1.png b/samples/src/assets/images/commands/moveentnewlay/image1.png new file mode 100644 index 0000000..62691c0 Binary files /dev/null and b/samples/src/assets/images/commands/moveentnewlay/image1.png differ diff --git a/samples/src/assets/images/commands/moveentnewlay/image2.png b/samples/src/assets/images/commands/moveentnewlay/image2.png new file mode 100644 index 0000000..f9e721f Binary files /dev/null and b/samples/src/assets/images/commands/moveentnewlay/image2.png differ diff --git a/samples/src/assets/images/commands/mperpendicular/image1.png b/samples/src/assets/images/commands/mperpendicular/image1.png new file mode 100644 index 0000000..f7a361c Binary files /dev/null and b/samples/src/assets/images/commands/mperpendicular/image1.png differ diff --git a/samples/src/assets/images/commands/mredo/image1.png b/samples/src/assets/images/commands/mredo/image1.png new file mode 100644 index 0000000..c25a9b3 Binary files /dev/null and b/samples/src/assets/images/commands/mredo/image1.png differ diff --git a/samples/src/assets/images/commands/mspace/image1.png b/samples/src/assets/images/commands/mspace/image1.png new file mode 100644 index 0000000..5d24325 Binary files /dev/null and b/samples/src/assets/images/commands/mspace/image1.png differ diff --git a/samples/src/assets/images/commands/mtedit/image1.png b/samples/src/assets/images/commands/mtedit/image1.png new file mode 100644 index 0000000..d1996cf Binary files /dev/null and b/samples/src/assets/images/commands/mtedit/image1.png differ diff --git a/samples/src/assets/images/commands/mtext/image1.png b/samples/src/assets/images/commands/mtext/image1.png new file mode 100644 index 0000000..b753663 Binary files /dev/null and b/samples/src/assets/images/commands/mtext/image1.png differ diff --git a/samples/src/assets/images/commands/mtext/image2.png b/samples/src/assets/images/commands/mtext/image2.png new file mode 100644 index 0000000..3e63ac4 Binary files /dev/null and b/samples/src/assets/images/commands/mtext/image2.png differ diff --git a/samples/src/assets/images/commands/multiinsertdwg/image1.png b/samples/src/assets/images/commands/multiinsertdwg/image1.png new file mode 100644 index 0000000..4109488 Binary files /dev/null and b/samples/src/assets/images/commands/multiinsertdwg/image1.png differ diff --git a/samples/src/assets/images/commands/multiinsertdwg/image2.png b/samples/src/assets/images/commands/multiinsertdwg/image2.png new file mode 100644 index 0000000..f94cdc3 Binary files /dev/null and b/samples/src/assets/images/commands/multiinsertdwg/image2.png differ diff --git a/samples/src/assets/images/commands/multipledim/image1.png b/samples/src/assets/images/commands/multipledim/image1.png new file mode 100644 index 0000000..5ce0a22 Binary files /dev/null and b/samples/src/assets/images/commands/multipledim/image1.png differ diff --git a/samples/src/assets/images/commands/mview/image1.png b/samples/src/assets/images/commands/mview/image1.png new file mode 100644 index 0000000..cd1f863 Binary files /dev/null and b/samples/src/assets/images/commands/mview/image1.png differ diff --git a/samples/src/assets/images/commands/ncopy/image1.png b/samples/src/assets/images/commands/ncopy/image1.png new file mode 100644 index 0000000..9b4bc26 Binary files /dev/null and b/samples/src/assets/images/commands/ncopy/image1.png differ diff --git a/samples/src/assets/images/commands/ncopy/image2.png b/samples/src/assets/images/commands/ncopy/image2.png new file mode 100644 index 0000000..9cfde41 Binary files /dev/null and b/samples/src/assets/images/commands/ncopy/image2.png differ diff --git a/samples/src/assets/images/commands/offlayon/image1.png b/samples/src/assets/images/commands/offlayon/image1.png new file mode 100644 index 0000000..3d245e6 Binary files /dev/null and b/samples/src/assets/images/commands/offlayon/image1.png differ diff --git a/samples/src/assets/images/commands/offset/image1.png b/samples/src/assets/images/commands/offset/image1.png new file mode 100644 index 0000000..6cb985b Binary files /dev/null and b/samples/src/assets/images/commands/offset/image1.png differ diff --git a/samples/src/assets/images/commands/offset/image2.png b/samples/src/assets/images/commands/offset/image2.png new file mode 100644 index 0000000..0316805 Binary files /dev/null and b/samples/src/assets/images/commands/offset/image2.png differ diff --git a/samples/src/assets/images/commands/offset/image3.png b/samples/src/assets/images/commands/offset/image3.png new file mode 100644 index 0000000..93e2012 Binary files /dev/null and b/samples/src/assets/images/commands/offset/image3.png differ diff --git a/samples/src/assets/images/commands/offset/image4.png b/samples/src/assets/images/commands/offset/image4.png new file mode 100644 index 0000000..f53da09 Binary files /dev/null and b/samples/src/assets/images/commands/offset/image4.png differ diff --git a/samples/src/assets/images/commands/offset/image5.png b/samples/src/assets/images/commands/offset/image5.png new file mode 100644 index 0000000..1de1900 Binary files /dev/null and b/samples/src/assets/images/commands/offset/image5.png differ diff --git a/samples/src/assets/images/commands/offset/image6.png b/samples/src/assets/images/commands/offset/image6.png new file mode 100644 index 0000000..b3f28db Binary files /dev/null and b/samples/src/assets/images/commands/offset/image6.png differ diff --git a/samples/src/assets/images/commands/offsetgaptype/image1.png b/samples/src/assets/images/commands/offsetgaptype/image1.png new file mode 100644 index 0000000..b4e0a83 Binary files /dev/null and b/samples/src/assets/images/commands/offsetgaptype/image1.png differ diff --git a/samples/src/assets/images/commands/offsetgaptype/image2.png b/samples/src/assets/images/commands/offsetgaptype/image2.png new file mode 100644 index 0000000..167c0d9 Binary files /dev/null and b/samples/src/assets/images/commands/offsetgaptype/image2.png differ diff --git a/samples/src/assets/images/commands/offsettolayer/image1.png b/samples/src/assets/images/commands/offsettolayer/image1.png new file mode 100644 index 0000000..9500894 Binary files /dev/null and b/samples/src/assets/images/commands/offsettolayer/image1.png differ diff --git a/samples/src/assets/images/commands/oleframe/image1.png b/samples/src/assets/images/commands/oleframe/image1.png new file mode 100644 index 0000000..31242ca Binary files /dev/null and b/samples/src/assets/images/commands/oleframe/image1.png differ diff --git a/samples/src/assets/images/commands/olehide/image1.png b/samples/src/assets/images/commands/olehide/image1.png new file mode 100644 index 0000000..6770992 Binary files /dev/null and b/samples/src/assets/images/commands/olehide/image1.png differ diff --git a/samples/src/assets/images/commands/oops/image1.png b/samples/src/assets/images/commands/oops/image1.png new file mode 100644 index 0000000..e3aa0ec Binary files /dev/null and b/samples/src/assets/images/commands/oops/image1.png differ diff --git a/samples/src/assets/images/commands/otpline/image1.png b/samples/src/assets/images/commands/otpline/image1.png new file mode 100644 index 0000000..4965c38 Binary files /dev/null and b/samples/src/assets/images/commands/otpline/image1.png differ diff --git a/samples/src/assets/images/commands/otpline/image2.png b/samples/src/assets/images/commands/otpline/image2.png new file mode 100644 index 0000000..78b0a6b Binary files /dev/null and b/samples/src/assets/images/commands/otpline/image2.png differ diff --git a/samples/src/assets/images/commands/overkill/image1.png b/samples/src/assets/images/commands/overkill/image1.png new file mode 100644 index 0000000..45943d4 Binary files /dev/null and b/samples/src/assets/images/commands/overkill/image1.png differ diff --git a/samples/src/assets/images/commands/overkill/image2.png b/samples/src/assets/images/commands/overkill/image2.png new file mode 100644 index 0000000..78b8d48 Binary files /dev/null and b/samples/src/assets/images/commands/overkill/image2.png differ diff --git a/samples/src/assets/images/commands/pagesetup/image1.png b/samples/src/assets/images/commands/pagesetup/image1.png new file mode 100644 index 0000000..5dddf8b Binary files /dev/null and b/samples/src/assets/images/commands/pagesetup/image1.png differ diff --git a/samples/src/assets/images/commands/pagesetup/image2.png b/samples/src/assets/images/commands/pagesetup/image2.png new file mode 100644 index 0000000..0554a8c Binary files /dev/null and b/samples/src/assets/images/commands/pagesetup/image2.png differ diff --git a/samples/src/assets/images/commands/pagesetup/image3.png b/samples/src/assets/images/commands/pagesetup/image3.png new file mode 100644 index 0000000..cc950d2 Binary files /dev/null and b/samples/src/assets/images/commands/pagesetup/image3.png differ diff --git a/samples/src/assets/images/commands/pan/image1.png b/samples/src/assets/images/commands/pan/image1.png new file mode 100644 index 0000000..9380763 Binary files /dev/null and b/samples/src/assets/images/commands/pan/image1.png differ diff --git a/samples/src/assets/images/commands/pasteblock/image1.png b/samples/src/assets/images/commands/pasteblock/image1.png new file mode 100644 index 0000000..8af019d Binary files /dev/null and b/samples/src/assets/images/commands/pasteblock/image1.png differ diff --git a/samples/src/assets/images/commands/pasteblock/image2.png b/samples/src/assets/images/commands/pasteblock/image2.png new file mode 100644 index 0000000..2309e36 Binary files /dev/null and b/samples/src/assets/images/commands/pasteblock/image2.png differ diff --git a/samples/src/assets/images/commands/pasteclip/image1.png b/samples/src/assets/images/commands/pasteclip/image1.png new file mode 100644 index 0000000..42a9a24 Binary files /dev/null and b/samples/src/assets/images/commands/pasteclip/image1.png differ diff --git a/samples/src/assets/images/commands/pasteclip/image2.png b/samples/src/assets/images/commands/pasteclip/image2.png new file mode 100644 index 0000000..b8c003d Binary files /dev/null and b/samples/src/assets/images/commands/pasteclip/image2.png differ diff --git a/samples/src/assets/images/commands/pastespec/image1.png b/samples/src/assets/images/commands/pastespec/image1.png new file mode 100644 index 0000000..8b3e713 Binary files /dev/null and b/samples/src/assets/images/commands/pastespec/image1.png differ diff --git a/samples/src/assets/images/commands/pastespec/image2.png b/samples/src/assets/images/commands/pastespec/image2.png new file mode 100644 index 0000000..324c16c Binary files /dev/null and b/samples/src/assets/images/commands/pastespec/image2.png differ diff --git a/samples/src/assets/images/commands/pdfframe/image1.png b/samples/src/assets/images/commands/pdfframe/image1.png new file mode 100644 index 0000000..6184c4e Binary files /dev/null and b/samples/src/assets/images/commands/pdfframe/image1.png differ diff --git a/samples/src/assets/images/commands/pedit/image1.png b/samples/src/assets/images/commands/pedit/image1.png new file mode 100644 index 0000000..88733c5 Binary files /dev/null and b/samples/src/assets/images/commands/pedit/image1.png differ diff --git a/samples/src/assets/images/commands/pedit/image2.png b/samples/src/assets/images/commands/pedit/image2.png new file mode 100644 index 0000000..8c157c4 Binary files /dev/null and b/samples/src/assets/images/commands/pedit/image2.png differ diff --git a/samples/src/assets/images/commands/pedit/image3.png b/samples/src/assets/images/commands/pedit/image3.png new file mode 100644 index 0000000..c5865a2 Binary files /dev/null and b/samples/src/assets/images/commands/pedit/image3.png differ diff --git a/samples/src/assets/images/commands/pedit/image4.png b/samples/src/assets/images/commands/pedit/image4.png new file mode 100644 index 0000000..3c4b9ba Binary files /dev/null and b/samples/src/assets/images/commands/pedit/image4.png differ diff --git a/samples/src/assets/images/commands/pellipse/image1.png b/samples/src/assets/images/commands/pellipse/image1.png new file mode 100644 index 0000000..3fa5926 Binary files /dev/null and b/samples/src/assets/images/commands/pellipse/image1.png differ diff --git a/samples/src/assets/images/commands/perpendicularline/image1.png b/samples/src/assets/images/commands/perpendicularline/image1.png new file mode 100644 index 0000000..b07aab5 Binary files /dev/null and b/samples/src/assets/images/commands/perpendicularline/image1.png differ diff --git a/samples/src/assets/images/commands/perpendicularline/image2.png b/samples/src/assets/images/commands/perpendicularline/image2.png new file mode 100644 index 0000000..826d017 Binary files /dev/null and b/samples/src/assets/images/commands/perpendicularline/image2.png differ diff --git a/samples/src/assets/images/commands/pickstyle/image1.png b/samples/src/assets/images/commands/pickstyle/image1.png new file mode 100644 index 0000000..8b2d1b5 Binary files /dev/null and b/samples/src/assets/images/commands/pickstyle/image1.png differ diff --git a/samples/src/assets/images/commands/pline/image1.png b/samples/src/assets/images/commands/pline/image1.png new file mode 100644 index 0000000..da5ab04 Binary files /dev/null and b/samples/src/assets/images/commands/pline/image1.png differ diff --git a/samples/src/assets/images/commands/pline/image2.png b/samples/src/assets/images/commands/pline/image2.png new file mode 100644 index 0000000..e967b1a Binary files /dev/null and b/samples/src/assets/images/commands/pline/image2.png differ diff --git a/samples/src/assets/images/commands/pline/image3.png b/samples/src/assets/images/commands/pline/image3.png new file mode 100644 index 0000000..0a92366 Binary files /dev/null and b/samples/src/assets/images/commands/pline/image3.png differ diff --git a/samples/src/assets/images/commands/plineconvertmode/image1.png b/samples/src/assets/images/commands/plineconvertmode/image1.png new file mode 100644 index 0000000..ca68fd9 Binary files /dev/null and b/samples/src/assets/images/commands/plineconvertmode/image1.png differ diff --git a/samples/src/assets/images/commands/plinegen/image1.png b/samples/src/assets/images/commands/plinegen/image1.png new file mode 100644 index 0000000..d67df39 Binary files /dev/null and b/samples/src/assets/images/commands/plinegen/image1.png differ diff --git a/samples/src/assets/images/commands/plot/image1.png b/samples/src/assets/images/commands/plot/image1.png new file mode 100644 index 0000000..bf36684 Binary files /dev/null and b/samples/src/assets/images/commands/plot/image1.png differ diff --git a/samples/src/assets/images/commands/plot/image2.png b/samples/src/assets/images/commands/plot/image2.png new file mode 100644 index 0000000..0eef76a Binary files /dev/null and b/samples/src/assets/images/commands/plot/image2.png differ diff --git a/samples/src/assets/images/commands/plotlayoff/image1.png b/samples/src/assets/images/commands/plotlayoff/image1.png new file mode 100644 index 0000000..91132de Binary files /dev/null and b/samples/src/assets/images/commands/plotlayoff/image1.png differ diff --git a/samples/src/assets/images/commands/plotlayoff/image2.png b/samples/src/assets/images/commands/plotlayoff/image2.png new file mode 100644 index 0000000..c04021f Binary files /dev/null and b/samples/src/assets/images/commands/plotlayoff/image2.png differ diff --git a/samples/src/assets/images/commands/plotlayon/image1.png b/samples/src/assets/images/commands/plotlayon/image1.png new file mode 100644 index 0000000..f10f5d3 Binary files /dev/null and b/samples/src/assets/images/commands/plotlayon/image1.png differ diff --git a/samples/src/assets/images/commands/plotlayon/image2.png b/samples/src/assets/images/commands/plotlayon/image2.png new file mode 100644 index 0000000..4fae3f3 Binary files /dev/null and b/samples/src/assets/images/commands/plotlayon/image2.png differ diff --git a/samples/src/assets/images/commands/pmark/image1.png b/samples/src/assets/images/commands/pmark/image1.png new file mode 100644 index 0000000..836f4e2 Binary files /dev/null and b/samples/src/assets/images/commands/pmark/image1.png differ diff --git a/samples/src/assets/images/commands/point/image1.png b/samples/src/assets/images/commands/point/image1.png new file mode 100644 index 0000000..8879335 Binary files /dev/null and b/samples/src/assets/images/commands/point/image1.png differ diff --git a/samples/src/assets/images/commands/pointtotext/image1.png b/samples/src/assets/images/commands/pointtotext/image1.png new file mode 100644 index 0000000..3d59021 Binary files /dev/null and b/samples/src/assets/images/commands/pointtotext/image1.png differ diff --git a/samples/src/assets/images/commands/pointtotext/image2.png b/samples/src/assets/images/commands/pointtotext/image2.png new file mode 100644 index 0000000..3cb90d5 Binary files /dev/null and b/samples/src/assets/images/commands/pointtotext/image2.png differ diff --git a/samples/src/assets/images/commands/polygon/image1.png b/samples/src/assets/images/commands/polygon/image1.png new file mode 100644 index 0000000..e9b640e Binary files /dev/null and b/samples/src/assets/images/commands/polygon/image1.png differ diff --git a/samples/src/assets/images/commands/polygon/image2.png b/samples/src/assets/images/commands/polygon/image2.png new file mode 100644 index 0000000..d328143 Binary files /dev/null and b/samples/src/assets/images/commands/polygon/image2.png differ diff --git a/samples/src/assets/images/commands/polygon/image3.png b/samples/src/assets/images/commands/polygon/image3.png new file mode 100644 index 0000000..b91d2fa Binary files /dev/null and b/samples/src/assets/images/commands/polygon/image3.png differ diff --git a/samples/src/assets/images/commands/polygon/image4.png b/samples/src/assets/images/commands/polygon/image4.png new file mode 100644 index 0000000..133cb51 Binary files /dev/null and b/samples/src/assets/images/commands/polygon/image4.png differ diff --git a/samples/src/assets/images/commands/prefabricatedbar/image1.png b/samples/src/assets/images/commands/prefabricatedbar/image1.png new file mode 100644 index 0000000..2ebad7c Binary files /dev/null and b/samples/src/assets/images/commands/prefabricatedbar/image1.png differ diff --git a/samples/src/assets/images/commands/properties/image1.png b/samples/src/assets/images/commands/properties/image1.png new file mode 100644 index 0000000..855bafd Binary files /dev/null and b/samples/src/assets/images/commands/properties/image1.png differ diff --git a/samples/src/assets/images/commands/psltscale/image1.png b/samples/src/assets/images/commands/psltscale/image1.png new file mode 100644 index 0000000..2dd3cce Binary files /dev/null and b/samples/src/assets/images/commands/psltscale/image1.png differ diff --git a/samples/src/assets/images/commands/pspace/image1.png b/samples/src/assets/images/commands/pspace/image1.png new file mode 100644 index 0000000..482d715 Binary files /dev/null and b/samples/src/assets/images/commands/pspace/image1.png differ diff --git a/samples/src/assets/images/commands/ptype/image1.png b/samples/src/assets/images/commands/ptype/image1.png new file mode 100644 index 0000000..6abf919 Binary files /dev/null and b/samples/src/assets/images/commands/ptype/image1.png differ diff --git a/samples/src/assets/images/commands/purge/image1.png b/samples/src/assets/images/commands/purge/image1.png new file mode 100644 index 0000000..34a4af1 Binary files /dev/null and b/samples/src/assets/images/commands/purge/image1.png differ diff --git a/samples/src/assets/images/commands/purge/image2.png b/samples/src/assets/images/commands/purge/image2.png new file mode 100644 index 0000000..26436f9 Binary files /dev/null and b/samples/src/assets/images/commands/purge/image2.png differ diff --git a/samples/src/assets/images/commands/pwchange/image1.png b/samples/src/assets/images/commands/pwchange/image1.png new file mode 100644 index 0000000..d3ac86d Binary files /dev/null and b/samples/src/assets/images/commands/pwchange/image1.png differ diff --git a/samples/src/assets/images/commands/qlist/image1.png b/samples/src/assets/images/commands/qlist/image1.png new file mode 100644 index 0000000..3441259 Binary files /dev/null and b/samples/src/assets/images/commands/qlist/image1.png differ diff --git a/samples/src/assets/images/commands/qlist/image2.png b/samples/src/assets/images/commands/qlist/image2.png new file mode 100644 index 0000000..4ace840 Binary files /dev/null and b/samples/src/assets/images/commands/qlist/image2.png differ diff --git a/samples/src/assets/images/commands/qselect/image1.png b/samples/src/assets/images/commands/qselect/image1.png new file mode 100644 index 0000000..9c96c2c Binary files /dev/null and b/samples/src/assets/images/commands/qselect/image1.png differ diff --git a/samples/src/assets/images/commands/qselect/image2.png b/samples/src/assets/images/commands/qselect/image2.png new file mode 100644 index 0000000..7f9d2cc Binary files /dev/null and b/samples/src/assets/images/commands/qselect/image2.png differ diff --git a/samples/src/assets/images/commands/qselect2/image1.png b/samples/src/assets/images/commands/qselect2/image1.png new file mode 100644 index 0000000..10de94a Binary files /dev/null and b/samples/src/assets/images/commands/qselect2/image1.png differ diff --git a/samples/src/assets/images/commands/qselect2/image2.png b/samples/src/assets/images/commands/qselect2/image2.png new file mode 100644 index 0000000..7d81530 Binary files /dev/null and b/samples/src/assets/images/commands/qselect2/image2.png differ diff --git a/samples/src/assets/images/commands/qtext/image1.png b/samples/src/assets/images/commands/qtext/image1.png new file mode 100644 index 0000000..ab4f8de Binary files /dev/null and b/samples/src/assets/images/commands/qtext/image1.png differ diff --git a/samples/src/assets/images/commands/qtext/image2.png b/samples/src/assets/images/commands/qtext/image2.png new file mode 100644 index 0000000..8f16be0 Binary files /dev/null and b/samples/src/assets/images/commands/qtext/image2.png differ diff --git a/samples/src/assets/images/commands/ray/image1.png b/samples/src/assets/images/commands/ray/image1.png new file mode 100644 index 0000000..5a4a68f Binary files /dev/null and b/samples/src/assets/images/commands/ray/image1.png differ diff --git a/samples/src/assets/images/commands/ray/image2.png b/samples/src/assets/images/commands/ray/image2.png new file mode 100644 index 0000000..569e2ef Binary files /dev/null and b/samples/src/assets/images/commands/ray/image2.png differ diff --git a/samples/src/assets/images/commands/rebaroffset/image1.png b/samples/src/assets/images/commands/rebaroffset/image1.png new file mode 100644 index 0000000..eedaacd Binary files /dev/null and b/samples/src/assets/images/commands/rebaroffset/image1.png differ diff --git a/samples/src/assets/images/commands/recrebar/image1.png b/samples/src/assets/images/commands/recrebar/image1.png new file mode 100644 index 0000000..66baa27 Binary files /dev/null and b/samples/src/assets/images/commands/recrebar/image1.png differ diff --git a/samples/src/assets/images/commands/rectangle/image1.png b/samples/src/assets/images/commands/rectangle/image1.png new file mode 100644 index 0000000..69cbc6e Binary files /dev/null and b/samples/src/assets/images/commands/rectangle/image1.png differ diff --git a/samples/src/assets/images/commands/redo/image1.png b/samples/src/assets/images/commands/redo/image1.png new file mode 100644 index 0000000..190dec3 Binary files /dev/null and b/samples/src/assets/images/commands/redo/image1.png differ diff --git a/samples/src/assets/images/commands/refclose/image1.png b/samples/src/assets/images/commands/refclose/image1.png new file mode 100644 index 0000000..1615f72 Binary files /dev/null and b/samples/src/assets/images/commands/refclose/image1.png differ diff --git a/samples/src/assets/images/commands/refedit/image1.png b/samples/src/assets/images/commands/refedit/image1.png new file mode 100644 index 0000000..8308d0d Binary files /dev/null and b/samples/src/assets/images/commands/refedit/image1.png differ diff --git a/samples/src/assets/images/commands/refpathtype/image1.png b/samples/src/assets/images/commands/refpathtype/image1.png new file mode 100644 index 0000000..a62e746 Binary files /dev/null and b/samples/src/assets/images/commands/refpathtype/image1.png differ diff --git a/samples/src/assets/images/commands/refpathtype/image2.png b/samples/src/assets/images/commands/refpathtype/image2.png new file mode 100644 index 0000000..004a081 Binary files /dev/null and b/samples/src/assets/images/commands/refpathtype/image2.png differ diff --git a/samples/src/assets/images/commands/refrotate/image1.png b/samples/src/assets/images/commands/refrotate/image1.png new file mode 100644 index 0000000..0421a6d Binary files /dev/null and b/samples/src/assets/images/commands/refrotate/image1.png differ diff --git a/samples/src/assets/images/commands/refrotate/image2.png b/samples/src/assets/images/commands/refrotate/image2.png new file mode 100644 index 0000000..5fe8072 Binary files /dev/null and b/samples/src/assets/images/commands/refrotate/image2.png differ diff --git a/samples/src/assets/images/commands/refset/image1.png b/samples/src/assets/images/commands/refset/image1.png new file mode 100644 index 0000000..347fa65 Binary files /dev/null and b/samples/src/assets/images/commands/refset/image1.png differ diff --git a/samples/src/assets/images/commands/reinforcingbar/image1.png b/samples/src/assets/images/commands/reinforcingbar/image1.png new file mode 100644 index 0000000..a2ae718 Binary files /dev/null and b/samples/src/assets/images/commands/reinforcingbar/image1.png differ diff --git a/samples/src/assets/images/commands/reoffset/image1.png b/samples/src/assets/images/commands/reoffset/image1.png new file mode 100644 index 0000000..ef010b8 Binary files /dev/null and b/samples/src/assets/images/commands/reoffset/image1.png differ diff --git a/samples/src/assets/images/commands/reoffset/image2.png b/samples/src/assets/images/commands/reoffset/image2.png new file mode 100644 index 0000000..ee592b1 Binary files /dev/null and b/samples/src/assets/images/commands/reoffset/image2.png differ diff --git a/samples/src/assets/images/commands/reoffset/image3.png b/samples/src/assets/images/commands/reoffset/image3.png new file mode 100644 index 0000000..28f83d5 Binary files /dev/null and b/samples/src/assets/images/commands/reoffset/image3.png differ diff --git a/samples/src/assets/images/commands/rescale/image1.png b/samples/src/assets/images/commands/rescale/image1.png new file mode 100644 index 0000000..5a31f20 Binary files /dev/null and b/samples/src/assets/images/commands/rescale/image1.png differ diff --git a/samples/src/assets/images/commands/rescale/image2.png b/samples/src/assets/images/commands/rescale/image2.png new file mode 100644 index 0000000..be6a0fc Binary files /dev/null and b/samples/src/assets/images/commands/rescale/image2.png differ diff --git a/samples/src/assets/images/commands/rescalewithdim/image1.png b/samples/src/assets/images/commands/rescalewithdim/image1.png new file mode 100644 index 0000000..b2940c0 Binary files /dev/null and b/samples/src/assets/images/commands/rescalewithdim/image1.png differ diff --git a/samples/src/assets/images/commands/rescalewithdim/image2.png b/samples/src/assets/images/commands/rescalewithdim/image2.png new file mode 100644 index 0000000..3962903 Binary files /dev/null and b/samples/src/assets/images/commands/rescalewithdim/image2.png differ diff --git a/samples/src/assets/images/commands/resetdimtext/image1.png b/samples/src/assets/images/commands/resetdimtext/image1.png new file mode 100644 index 0000000..2197bb1 Binary files /dev/null and b/samples/src/assets/images/commands/resetdimtext/image1.png differ diff --git a/samples/src/assets/images/commands/restoredimvalue/image1.png b/samples/src/assets/images/commands/restoredimvalue/image1.png new file mode 100644 index 0000000..1559a61 Binary files /dev/null and b/samples/src/assets/images/commands/restoredimvalue/image1.png differ diff --git a/samples/src/assets/images/commands/revcloud/image1.png b/samples/src/assets/images/commands/revcloud/image1.png new file mode 100644 index 0000000..34a9372 Binary files /dev/null and b/samples/src/assets/images/commands/revcloud/image1.png differ diff --git a/samples/src/assets/images/commands/revcloud/image2.png b/samples/src/assets/images/commands/revcloud/image2.png new file mode 100644 index 0000000..a890b7b Binary files /dev/null and b/samples/src/assets/images/commands/revcloud/image2.png differ diff --git a/samples/src/assets/images/commands/revcloud/image3.png b/samples/src/assets/images/commands/revcloud/image3.png new file mode 100644 index 0000000..7f6410a Binary files /dev/null and b/samples/src/assets/images/commands/revcloud/image3.png differ diff --git a/samples/src/assets/images/commands/rezelev/image1.png b/samples/src/assets/images/commands/rezelev/image1.png new file mode 100644 index 0000000..e559872 Binary files /dev/null and b/samples/src/assets/images/commands/rezelev/image1.png differ diff --git a/samples/src/assets/images/commands/rezelev/image2.png b/samples/src/assets/images/commands/rezelev/image2.png new file mode 100644 index 0000000..3df0ea4 Binary files /dev/null and b/samples/src/assets/images/commands/rezelev/image2.png differ diff --git a/samples/src/assets/images/commands/rezen/image1.png b/samples/src/assets/images/commands/rezen/image1.png new file mode 100644 index 0000000..8b1ce30 Binary files /dev/null and b/samples/src/assets/images/commands/rezen/image1.png differ diff --git a/samples/src/assets/images/commands/rhb/image1.png b/samples/src/assets/images/commands/rhb/image1.png new file mode 100644 index 0000000..f6bd850 Binary files /dev/null and b/samples/src/assets/images/commands/rhb/image1.png differ diff --git a/samples/src/assets/images/commands/rhb/image2.png b/samples/src/assets/images/commands/rhb/image2.png new file mode 100644 index 0000000..fc49549 Binary files /dev/null and b/samples/src/assets/images/commands/rhb/image2.png differ diff --git a/samples/src/assets/images/commands/rotate/image1.png b/samples/src/assets/images/commands/rotate/image1.png new file mode 100644 index 0000000..3dfc325 Binary files /dev/null and b/samples/src/assets/images/commands/rotate/image1.png differ diff --git a/samples/src/assets/images/commands/rotate/image2.png b/samples/src/assets/images/commands/rotate/image2.png new file mode 100644 index 0000000..12f9a8f Binary files /dev/null and b/samples/src/assets/images/commands/rotate/image2.png differ diff --git a/samples/src/assets/images/commands/rotate3d/image1.png b/samples/src/assets/images/commands/rotate3d/image1.png new file mode 100644 index 0000000..ef7d8ba Binary files /dev/null and b/samples/src/assets/images/commands/rotate3d/image1.png differ diff --git a/samples/src/assets/images/commands/rotate3d/image2.png b/samples/src/assets/images/commands/rotate3d/image2.png new file mode 100644 index 0000000..599abd5 Binary files /dev/null and b/samples/src/assets/images/commands/rotate3d/image2.png differ diff --git a/samples/src/assets/images/commands/scale/image1.png b/samples/src/assets/images/commands/scale/image1.png new file mode 100644 index 0000000..5444108 Binary files /dev/null and b/samples/src/assets/images/commands/scale/image1.png differ diff --git a/samples/src/assets/images/commands/scale/image2.png b/samples/src/assets/images/commands/scale/image2.png new file mode 100644 index 0000000..3c7e3ea Binary files /dev/null and b/samples/src/assets/images/commands/scale/image2.png differ diff --git a/samples/src/assets/images/commands/scaledistance/image1.png b/samples/src/assets/images/commands/scaledistance/image1.png new file mode 100644 index 0000000..1dad1d4 Binary files /dev/null and b/samples/src/assets/images/commands/scaledistance/image1.png differ diff --git a/samples/src/assets/images/commands/scaledistance/image2.png b/samples/src/assets/images/commands/scaledistance/image2.png new file mode 100644 index 0000000..b408cbb Binary files /dev/null and b/samples/src/assets/images/commands/scaledistance/image2.png differ diff --git a/samples/src/assets/images/commands/scaletext/image1.png b/samples/src/assets/images/commands/scaletext/image1.png new file mode 100644 index 0000000..c97e8a1 Binary files /dev/null and b/samples/src/assets/images/commands/scaletext/image1.png differ diff --git a/samples/src/assets/images/commands/scaletext/image2.png b/samples/src/assets/images/commands/scaletext/image2.png new file mode 100644 index 0000000..2597d9b Binary files /dev/null and b/samples/src/assets/images/commands/scaletext/image2.png differ diff --git a/samples/src/assets/images/commands/selectioncycling/image1.png b/samples/src/assets/images/commands/selectioncycling/image1.png new file mode 100644 index 0000000..c0d3166 Binary files /dev/null and b/samples/src/assets/images/commands/selectioncycling/image1.png differ diff --git a/samples/src/assets/images/commands/selectioncycling/image2.png b/samples/src/assets/images/commands/selectioncycling/image2.png new file mode 100644 index 0000000..73c805a Binary files /dev/null and b/samples/src/assets/images/commands/selectioncycling/image2.png differ diff --git a/samples/src/assets/images/commands/selectioncycling/image3.png b/samples/src/assets/images/commands/selectioncycling/image3.png new file mode 100644 index 0000000..c16f3d8 Binary files /dev/null and b/samples/src/assets/images/commands/selectioncycling/image3.png differ diff --git a/samples/src/assets/images/commands/selectioncycling/image4.png b/samples/src/assets/images/commands/selectioncycling/image4.png new file mode 100644 index 0000000..8b5ccf0 Binary files /dev/null and b/samples/src/assets/images/commands/selectioncycling/image4.png differ diff --git a/samples/src/assets/images/commands/selectsimilar/image1.png b/samples/src/assets/images/commands/selectsimilar/image1.png new file mode 100644 index 0000000..968bae7 Binary files /dev/null and b/samples/src/assets/images/commands/selectsimilar/image1.png differ diff --git a/samples/src/assets/images/commands/selectsimilar/image2.png b/samples/src/assets/images/commands/selectsimilar/image2.png new file mode 100644 index 0000000..024ccfb Binary files /dev/null and b/samples/src/assets/images/commands/selectsimilar/image2.png differ diff --git a/samples/src/assets/images/commands/separationleader/image1.png b/samples/src/assets/images/commands/separationleader/image1.png new file mode 100644 index 0000000..46e1530 Binary files /dev/null and b/samples/src/assets/images/commands/separationleader/image1.png differ diff --git a/samples/src/assets/images/commands/seqtedit/image1.png b/samples/src/assets/images/commands/seqtedit/image1.png new file mode 100644 index 0000000..728baaf Binary files /dev/null and b/samples/src/assets/images/commands/seqtedit/image1.png differ diff --git a/samples/src/assets/images/commands/seqtedit/image2.png b/samples/src/assets/images/commands/seqtedit/image2.png new file mode 100644 index 0000000..50c6271 Binary files /dev/null and b/samples/src/assets/images/commands/seqtedit/image2.png differ diff --git a/samples/src/assets/images/commands/seqtedit/image3.png b/samples/src/assets/images/commands/seqtedit/image3.png new file mode 100644 index 0000000..f77512e Binary files /dev/null and b/samples/src/assets/images/commands/seqtedit/image3.png differ diff --git a/samples/src/assets/images/commands/setbylayer/image1.png b/samples/src/assets/images/commands/setbylayer/image1.png new file mode 100644 index 0000000..2e96b5a Binary files /dev/null and b/samples/src/assets/images/commands/setbylayer/image1.png differ diff --git a/samples/src/assets/images/commands/setbylayermode/image1.png b/samples/src/assets/images/commands/setbylayermode/image1.png new file mode 100644 index 0000000..b64e21b Binary files /dev/null and b/samples/src/assets/images/commands/setbylayermode/image1.png differ diff --git a/samples/src/assets/images/commands/shearingbar/image1.png b/samples/src/assets/images/commands/shearingbar/image1.png new file mode 100644 index 0000000..4ffeabb Binary files /dev/null and b/samples/src/assets/images/commands/shearingbar/image1.png differ diff --git a/samples/src/assets/images/commands/sketch/image1.png b/samples/src/assets/images/commands/sketch/image1.png new file mode 100644 index 0000000..4114286 Binary files /dev/null and b/samples/src/assets/images/commands/sketch/image1.png differ diff --git a/samples/src/assets/images/commands/smark/image1.png b/samples/src/assets/images/commands/smark/image1.png new file mode 100644 index 0000000..f7a8b0d Binary files /dev/null and b/samples/src/assets/images/commands/smark/image1.png differ diff --git a/samples/src/assets/images/commands/smark/image2.png b/samples/src/assets/images/commands/smark/image2.png new file mode 100644 index 0000000..e1449bc Binary files /dev/null and b/samples/src/assets/images/commands/smark/image2.png differ diff --git a/samples/src/assets/images/commands/spell/image1.png b/samples/src/assets/images/commands/spell/image1.png new file mode 100644 index 0000000..0754e9e Binary files /dev/null and b/samples/src/assets/images/commands/spell/image1.png differ diff --git a/samples/src/assets/images/commands/spell/image2.png b/samples/src/assets/images/commands/spell/image2.png new file mode 100644 index 0000000..0dc6404 Binary files /dev/null and b/samples/src/assets/images/commands/spell/image2.png differ diff --git a/samples/src/assets/images/commands/sphere/image1.png b/samples/src/assets/images/commands/sphere/image1.png new file mode 100644 index 0000000..dab5ad7 Binary files /dev/null and b/samples/src/assets/images/commands/sphere/image1.png differ diff --git a/samples/src/assets/images/commands/spline/image1.png b/samples/src/assets/images/commands/spline/image1.png new file mode 100644 index 0000000..da62606 Binary files /dev/null and b/samples/src/assets/images/commands/spline/image1.png differ diff --git a/samples/src/assets/images/commands/spline/image2.png b/samples/src/assets/images/commands/spline/image2.png new file mode 100644 index 0000000..de811ee Binary files /dev/null and b/samples/src/assets/images/commands/spline/image2.png differ diff --git a/samples/src/assets/images/commands/splinedit/image1.png b/samples/src/assets/images/commands/splinedit/image1.png new file mode 100644 index 0000000..e1c9296 Binary files /dev/null and b/samples/src/assets/images/commands/splinedit/image1.png differ diff --git a/samples/src/assets/images/commands/stretch/image1.png b/samples/src/assets/images/commands/stretch/image1.png new file mode 100644 index 0000000..a340995 Binary files /dev/null and b/samples/src/assets/images/commands/stretch/image1.png differ diff --git a/samples/src/assets/images/commands/style/image1.png b/samples/src/assets/images/commands/style/image1.png new file mode 100644 index 0000000..9879402 Binary files /dev/null and b/samples/src/assets/images/commands/style/image1.png differ diff --git a/samples/src/assets/images/commands/style/image2.png b/samples/src/assets/images/commands/style/image2.png new file mode 100644 index 0000000..efdcdd8 Binary files /dev/null and b/samples/src/assets/images/commands/style/image2.png differ diff --git a/samples/src/assets/images/commands/style/image3.png b/samples/src/assets/images/commands/style/image3.png new file mode 100644 index 0000000..3288525 Binary files /dev/null and b/samples/src/assets/images/commands/style/image3.png differ diff --git a/samples/src/assets/images/commands/superhatch/image1.png b/samples/src/assets/images/commands/superhatch/image1.png new file mode 100644 index 0000000..e894191 Binary files /dev/null and b/samples/src/assets/images/commands/superhatch/image1.png differ diff --git a/samples/src/assets/images/commands/table/image1.png b/samples/src/assets/images/commands/table/image1.png new file mode 100644 index 0000000..690c7dc Binary files /dev/null and b/samples/src/assets/images/commands/table/image1.png differ diff --git a/samples/src/assets/images/commands/table/image2.png b/samples/src/assets/images/commands/table/image2.png new file mode 100644 index 0000000..bc4cd46 Binary files /dev/null and b/samples/src/assets/images/commands/table/image2.png differ diff --git a/samples/src/assets/images/commands/table/image3.png b/samples/src/assets/images/commands/table/image3.png new file mode 100644 index 0000000..12c9d70 Binary files /dev/null and b/samples/src/assets/images/commands/table/image3.png differ diff --git a/samples/src/assets/images/commands/tabledit/image1.png b/samples/src/assets/images/commands/tabledit/image1.png new file mode 100644 index 0000000..76e657a Binary files /dev/null and b/samples/src/assets/images/commands/tabledit/image1.png differ diff --git a/samples/src/assets/images/commands/tabledit/image2.png b/samples/src/assets/images/commands/tabledit/image2.png new file mode 100644 index 0000000..6fb4e7a Binary files /dev/null and b/samples/src/assets/images/commands/tabledit/image2.png differ diff --git a/samples/src/assets/images/commands/tabledit/image3.png b/samples/src/assets/images/commands/tabledit/image3.png new file mode 100644 index 0000000..9935600 Binary files /dev/null and b/samples/src/assets/images/commands/tabledit/image3.png differ diff --git a/samples/src/assets/images/commands/tableindicator/image1.png b/samples/src/assets/images/commands/tableindicator/image1.png new file mode 100644 index 0000000..c709ab5 Binary files /dev/null and b/samples/src/assets/images/commands/tableindicator/image1.png differ diff --git a/samples/src/assets/images/commands/tableindicator/image2.png b/samples/src/assets/images/commands/tableindicator/image2.png new file mode 100644 index 0000000..0f1620e Binary files /dev/null and b/samples/src/assets/images/commands/tableindicator/image2.png differ diff --git a/samples/src/assets/images/commands/tablestyle/image1.png b/samples/src/assets/images/commands/tablestyle/image1.png new file mode 100644 index 0000000..9ae0a07 Binary files /dev/null and b/samples/src/assets/images/commands/tablestyle/image1.png differ diff --git a/samples/src/assets/images/commands/tablestyle/image2.png b/samples/src/assets/images/commands/tablestyle/image2.png new file mode 100644 index 0000000..0ef66b3 Binary files /dev/null and b/samples/src/assets/images/commands/tablestyle/image2.png differ diff --git a/samples/src/assets/images/commands/tabletoolbar/image1.png b/samples/src/assets/images/commands/tabletoolbar/image1.png new file mode 100644 index 0000000..584498a Binary files /dev/null and b/samples/src/assets/images/commands/tabletoolbar/image1.png differ diff --git a/samples/src/assets/images/commands/tabletoolbar/image2.png b/samples/src/assets/images/commands/tabletoolbar/image2.png new file mode 100644 index 0000000..69706b7 Binary files /dev/null and b/samples/src/assets/images/commands/tabletoolbar/image2.png differ diff --git a/samples/src/assets/images/commands/tangentcircle/image1.png b/samples/src/assets/images/commands/tangentcircle/image1.png new file mode 100644 index 0000000..430d783 Binary files /dev/null and b/samples/src/assets/images/commands/tangentcircle/image1.png differ diff --git a/samples/src/assets/images/commands/tangentcircle/image2.png b/samples/src/assets/images/commands/tangentcircle/image2.png new file mode 100644 index 0000000..bd5ab76 Binary files /dev/null and b/samples/src/assets/images/commands/tangentcircle/image2.png differ diff --git a/samples/src/assets/images/commands/tangentline/image1.png b/samples/src/assets/images/commands/tangentline/image1.png new file mode 100644 index 0000000..c3407c9 Binary files /dev/null and b/samples/src/assets/images/commands/tangentline/image1.png differ diff --git a/samples/src/assets/images/commands/tangentline/image2.png b/samples/src/assets/images/commands/tangentline/image2.png new file mode 100644 index 0000000..69a8e9b Binary files /dev/null and b/samples/src/assets/images/commands/tangentline/image2.png differ diff --git a/samples/src/assets/images/commands/tangentlinecircle/image1.png b/samples/src/assets/images/commands/tangentlinecircle/image1.png new file mode 100644 index 0000000..e3a321b Binary files /dev/null and b/samples/src/assets/images/commands/tangentlinecircle/image1.png differ diff --git a/samples/src/assets/images/commands/tangentlinecircle/image2.png b/samples/src/assets/images/commands/tangentlinecircle/image2.png new file mode 100644 index 0000000..36dc4f4 Binary files /dev/null and b/samples/src/assets/images/commands/tangentlinecircle/image2.png differ diff --git a/samples/src/assets/images/commands/taper/image1.png b/samples/src/assets/images/commands/taper/image1.png new file mode 100644 index 0000000..efd401f Binary files /dev/null and b/samples/src/assets/images/commands/taper/image1.png differ diff --git a/samples/src/assets/images/commands/taper/image2.png b/samples/src/assets/images/commands/taper/image2.png new file mode 100644 index 0000000..952b620 Binary files /dev/null and b/samples/src/assets/images/commands/taper/image2.png differ diff --git a/samples/src/assets/images/commands/textandpoint/image1.png b/samples/src/assets/images/commands/textandpoint/image1.png new file mode 100644 index 0000000..2f3e835 Binary files /dev/null and b/samples/src/assets/images/commands/textandpoint/image1.png differ diff --git a/samples/src/assets/images/commands/textandpoint/image2.png b/samples/src/assets/images/commands/textandpoint/image2.png new file mode 100644 index 0000000..2dd6594 Binary files /dev/null and b/samples/src/assets/images/commands/textandpoint/image2.png differ diff --git a/samples/src/assets/images/commands/textbox/image1.png b/samples/src/assets/images/commands/textbox/image1.png new file mode 100644 index 0000000..c584f02 Binary files /dev/null and b/samples/src/assets/images/commands/textbox/image1.png differ diff --git a/samples/src/assets/images/commands/textbox/image2.png b/samples/src/assets/images/commands/textbox/image2.png new file mode 100644 index 0000000..86bf729 Binary files /dev/null and b/samples/src/assets/images/commands/textbox/image2.png differ diff --git a/samples/src/assets/images/commands/textbox/image3.png b/samples/src/assets/images/commands/textbox/image3.png new file mode 100644 index 0000000..355ca84 Binary files /dev/null and b/samples/src/assets/images/commands/textbox/image3.png differ diff --git a/samples/src/assets/images/commands/textbtpoint/image1.png b/samples/src/assets/images/commands/textbtpoint/image1.png new file mode 100644 index 0000000..43a0dba Binary files /dev/null and b/samples/src/assets/images/commands/textbtpoint/image1.png differ diff --git a/samples/src/assets/images/commands/textbtpoint/image2.png b/samples/src/assets/images/commands/textbtpoint/image2.png new file mode 100644 index 0000000..aab7b02 Binary files /dev/null and b/samples/src/assets/images/commands/textbtpoint/image2.png differ diff --git a/samples/src/assets/images/commands/textbtpoint/image3.png b/samples/src/assets/images/commands/textbtpoint/image3.png new file mode 100644 index 0000000..359e089 Binary files /dev/null and b/samples/src/assets/images/commands/textbtpoint/image3.png differ diff --git a/samples/src/assets/images/commands/textcopy/image1.png b/samples/src/assets/images/commands/textcopy/image1.png new file mode 100644 index 0000000..e1e09aa Binary files /dev/null and b/samples/src/assets/images/commands/textcopy/image1.png differ diff --git a/samples/src/assets/images/commands/textcopy/image2.png b/samples/src/assets/images/commands/textcopy/image2.png new file mode 100644 index 0000000..0eaf291 Binary files /dev/null and b/samples/src/assets/images/commands/textcopy/image2.png differ diff --git a/samples/src/assets/images/commands/textedit/image1.png b/samples/src/assets/images/commands/textedit/image1.png new file mode 100644 index 0000000..d37e7b6 Binary files /dev/null and b/samples/src/assets/images/commands/textedit/image1.png differ diff --git a/samples/src/assets/images/commands/textedit/image2.png b/samples/src/assets/images/commands/textedit/image2.png new file mode 100644 index 0000000..c8b4a69 Binary files /dev/null and b/samples/src/assets/images/commands/textedit/image2.png differ diff --git a/samples/src/assets/images/commands/textfill/image1.png b/samples/src/assets/images/commands/textfill/image1.png new file mode 100644 index 0000000..0852090 Binary files /dev/null and b/samples/src/assets/images/commands/textfill/image1.png differ diff --git a/samples/src/assets/images/commands/textfill/image2.png b/samples/src/assets/images/commands/textfill/image2.png new file mode 100644 index 0000000..107f913 Binary files /dev/null and b/samples/src/assets/images/commands/textfill/image2.png differ diff --git a/samples/src/assets/images/commands/textinpol/image1.png b/samples/src/assets/images/commands/textinpol/image1.png new file mode 100644 index 0000000..f733669 Binary files /dev/null and b/samples/src/assets/images/commands/textinpol/image1.png differ diff --git a/samples/src/assets/images/commands/textinpol/image2.png b/samples/src/assets/images/commands/textinpol/image2.png new file mode 100644 index 0000000..35e0dcd Binary files /dev/null and b/samples/src/assets/images/commands/textinpol/image2.png differ diff --git a/samples/src/assets/images/commands/textinpol/image3.png b/samples/src/assets/images/commands/textinpol/image3.png new file mode 100644 index 0000000..f10d1ac Binary files /dev/null and b/samples/src/assets/images/commands/textinpol/image3.png differ diff --git a/samples/src/assets/images/commands/textjoin/image1.png b/samples/src/assets/images/commands/textjoin/image1.png new file mode 100644 index 0000000..caa90e2 Binary files /dev/null and b/samples/src/assets/images/commands/textjoin/image1.png differ diff --git a/samples/src/assets/images/commands/textjoin/image2.png b/samples/src/assets/images/commands/textjoin/image2.png new file mode 100644 index 0000000..f28060d Binary files /dev/null and b/samples/src/assets/images/commands/textjoin/image2.png differ diff --git a/samples/src/assets/images/commands/textjoin/image3.png b/samples/src/assets/images/commands/textjoin/image3.png new file mode 100644 index 0000000..5923d95 Binary files /dev/null and b/samples/src/assets/images/commands/textjoin/image3.png differ diff --git a/samples/src/assets/images/commands/textmatchcopy/image1.png b/samples/src/assets/images/commands/textmatchcopy/image1.png new file mode 100644 index 0000000..bf5c3d8 Binary files /dev/null and b/samples/src/assets/images/commands/textmatchcopy/image1.png differ diff --git a/samples/src/assets/images/commands/textorder/image1.png b/samples/src/assets/images/commands/textorder/image1.png new file mode 100644 index 0000000..caa90e2 Binary files /dev/null and b/samples/src/assets/images/commands/textorder/image1.png differ diff --git a/samples/src/assets/images/commands/textorder/image2.png b/samples/src/assets/images/commands/textorder/image2.png new file mode 100644 index 0000000..ab7ed57 Binary files /dev/null and b/samples/src/assets/images/commands/textorder/image2.png differ diff --git a/samples/src/assets/images/commands/textorder/image3.png b/samples/src/assets/images/commands/textorder/image3.png new file mode 100644 index 0000000..b5f870f Binary files /dev/null and b/samples/src/assets/images/commands/textorder/image3.png differ diff --git a/samples/src/assets/images/commands/textreplace/image1.png b/samples/src/assets/images/commands/textreplace/image1.png new file mode 100644 index 0000000..b714fb1 Binary files /dev/null and b/samples/src/assets/images/commands/textreplace/image1.png differ diff --git a/samples/src/assets/images/commands/textreplace/image2.png b/samples/src/assets/images/commands/textreplace/image2.png new file mode 100644 index 0000000..70fcfba Binary files /dev/null and b/samples/src/assets/images/commands/textreplace/image2.png differ diff --git a/samples/src/assets/images/commands/textrotate/image1.png b/samples/src/assets/images/commands/textrotate/image1.png new file mode 100644 index 0000000..111794a Binary files /dev/null and b/samples/src/assets/images/commands/textrotate/image1.png differ diff --git a/samples/src/assets/images/commands/textrotate/image2.png b/samples/src/assets/images/commands/textrotate/image2.png new file mode 100644 index 0000000..347efd4 Binary files /dev/null and b/samples/src/assets/images/commands/textrotate/image2.png differ diff --git a/samples/src/assets/images/commands/textswap/image1.png b/samples/src/assets/images/commands/textswap/image1.png new file mode 100644 index 0000000..1fdde11 Binary files /dev/null and b/samples/src/assets/images/commands/textswap/image1.png differ diff --git a/samples/src/assets/images/commands/textswap/image2.png b/samples/src/assets/images/commands/textswap/image2.png new file mode 100644 index 0000000..f4dec76 Binary files /dev/null and b/samples/src/assets/images/commands/textswap/image2.png differ diff --git a/samples/src/assets/images/commands/texttoexl/image1.png b/samples/src/assets/images/commands/texttoexl/image1.png new file mode 100644 index 0000000..d7affcb Binary files /dev/null and b/samples/src/assets/images/commands/texttoexl/image1.png differ diff --git a/samples/src/assets/images/commands/texttoexl/image2.png b/samples/src/assets/images/commands/texttoexl/image2.png new file mode 100644 index 0000000..ec04e65 Binary files /dev/null and b/samples/src/assets/images/commands/texttoexl/image2.png differ diff --git a/samples/src/assets/images/commands/texttoexl/image3.png b/samples/src/assets/images/commands/texttoexl/image3.png new file mode 100644 index 0000000..e8e5115 Binary files /dev/null and b/samples/src/assets/images/commands/texttoexl/image3.png differ diff --git a/samples/src/assets/images/commands/texttopoint/image1.png b/samples/src/assets/images/commands/texttopoint/image1.png new file mode 100644 index 0000000..ea4acb9 Binary files /dev/null and b/samples/src/assets/images/commands/texttopoint/image1.png differ diff --git a/samples/src/assets/images/commands/texttopoint/image2.png b/samples/src/assets/images/commands/texttopoint/image2.png new file mode 100644 index 0000000..4c620eb Binary files /dev/null and b/samples/src/assets/images/commands/texttopoint/image2.png differ diff --git a/samples/src/assets/images/commands/thpoint/image1.png b/samples/src/assets/images/commands/thpoint/image1.png new file mode 100644 index 0000000..082109f Binary files /dev/null and b/samples/src/assets/images/commands/thpoint/image1.png differ diff --git a/samples/src/assets/images/commands/thpoint/image2.png b/samples/src/assets/images/commands/thpoint/image2.png new file mode 100644 index 0000000..cb06ff2 Binary files /dev/null and b/samples/src/assets/images/commands/thpoint/image2.png differ diff --git a/samples/src/assets/images/commands/tincrement/image1.png b/samples/src/assets/images/commands/tincrement/image1.png new file mode 100644 index 0000000..dc0a8eb Binary files /dev/null and b/samples/src/assets/images/commands/tincrement/image1.png differ diff --git a/samples/src/assets/images/commands/tincrement/image2.png b/samples/src/assets/images/commands/tincrement/image2.png new file mode 100644 index 0000000..8efc94f Binary files /dev/null and b/samples/src/assets/images/commands/tincrement/image2.png differ diff --git a/samples/src/assets/images/commands/tincrement/image3.png b/samples/src/assets/images/commands/tincrement/image3.png new file mode 100644 index 0000000..36e870f Binary files /dev/null and b/samples/src/assets/images/commands/tincrement/image3.png differ diff --git a/samples/src/assets/images/commands/trim/image1.png b/samples/src/assets/images/commands/trim/image1.png new file mode 100644 index 0000000..5e9afb3 Binary files /dev/null and b/samples/src/assets/images/commands/trim/image1.png differ diff --git a/samples/src/assets/images/commands/trim/image2.png b/samples/src/assets/images/commands/trim/image2.png new file mode 100644 index 0000000..0480887 Binary files /dev/null and b/samples/src/assets/images/commands/trim/image2.png differ diff --git a/samples/src/assets/images/commands/trimmode/image1.png b/samples/src/assets/images/commands/trimmode/image1.png new file mode 100644 index 0000000..5024ee7 Binary files /dev/null and b/samples/src/assets/images/commands/trimmode/image1.png differ diff --git a/samples/src/assets/images/commands/trimmode/image2.png b/samples/src/assets/images/commands/trimmode/image2.png new file mode 100644 index 0000000..cf4c64a Binary files /dev/null and b/samples/src/assets/images/commands/trimmode/image2.png differ diff --git a/samples/src/assets/images/commands/trimmode/image3.png b/samples/src/assets/images/commands/trimmode/image3.png new file mode 100644 index 0000000..c227473 Binary files /dev/null and b/samples/src/assets/images/commands/trimmode/image3.png differ diff --git a/samples/src/assets/images/commands/tspacefac/image1.png b/samples/src/assets/images/commands/tspacefac/image1.png new file mode 100644 index 0000000..ba93b77 Binary files /dev/null and b/samples/src/assets/images/commands/tspacefac/image1.png differ diff --git a/samples/src/assets/images/commands/twopointucs/image1.png b/samples/src/assets/images/commands/twopointucs/image1.png new file mode 100644 index 0000000..2b70bda Binary files /dev/null and b/samples/src/assets/images/commands/twopointucs/image1.png differ diff --git a/samples/src/assets/images/commands/twopointucs/image2.png b/samples/src/assets/images/commands/twopointucs/image2.png new file mode 100644 index 0000000..15916e1 Binary files /dev/null and b/samples/src/assets/images/commands/twopointucs/image2.png differ diff --git a/samples/src/assets/images/commands/txtexp/image1.png b/samples/src/assets/images/commands/txtexp/image1.png new file mode 100644 index 0000000..cb947bf Binary files /dev/null and b/samples/src/assets/images/commands/txtexp/image1.png differ diff --git a/samples/src/assets/images/commands/txtexp/image2.png b/samples/src/assets/images/commands/txtexp/image2.png new file mode 100644 index 0000000..44b2550 Binary files /dev/null and b/samples/src/assets/images/commands/txtexp/image2.png differ diff --git a/samples/src/assets/images/commands/ucs/image1.png b/samples/src/assets/images/commands/ucs/image1.png new file mode 100644 index 0000000..ba5d05b Binary files /dev/null and b/samples/src/assets/images/commands/ucs/image1.png differ diff --git a/samples/src/assets/images/commands/ucs3p/image1.png b/samples/src/assets/images/commands/ucs3p/image1.png new file mode 100644 index 0000000..18bb27e Binary files /dev/null and b/samples/src/assets/images/commands/ucs3p/image1.png differ diff --git a/samples/src/assets/images/commands/ucs3p/image2.png b/samples/src/assets/images/commands/ucs3p/image2.png new file mode 100644 index 0000000..78a36c5 Binary files /dev/null and b/samples/src/assets/images/commands/ucs3p/image2.png differ diff --git a/samples/src/assets/images/commands/ucsaxisang/image1.png b/samples/src/assets/images/commands/ucsaxisang/image1.png new file mode 100644 index 0000000..0a2d073 Binary files /dev/null and b/samples/src/assets/images/commands/ucsaxisang/image1.png differ diff --git a/samples/src/assets/images/commands/ucsw/image1.png b/samples/src/assets/images/commands/ucsw/image1.png new file mode 100644 index 0000000..11edd31 Binary files /dev/null and b/samples/src/assets/images/commands/ucsw/image1.png differ diff --git a/samples/src/assets/images/commands/ucsxyz/image1.png b/samples/src/assets/images/commands/ucsxyz/image1.png new file mode 100644 index 0000000..1c371d3 Binary files /dev/null and b/samples/src/assets/images/commands/ucsxyz/image1.png differ diff --git a/samples/src/assets/images/commands/undo/image1.png b/samples/src/assets/images/commands/undo/image1.png new file mode 100644 index 0000000..f8380cc Binary files /dev/null and b/samples/src/assets/images/commands/undo/image1.png differ diff --git a/samples/src/assets/images/commands/ungroup/image1.png b/samples/src/assets/images/commands/ungroup/image1.png new file mode 100644 index 0000000..d575555 Binary files /dev/null and b/samples/src/assets/images/commands/ungroup/image1.png differ diff --git a/samples/src/assets/images/commands/ungroup/image2.png b/samples/src/assets/images/commands/ungroup/image2.png new file mode 100644 index 0000000..b73e35e Binary files /dev/null and b/samples/src/assets/images/commands/ungroup/image2.png differ diff --git a/samples/src/assets/images/commands/unisolateobjects/image1.png b/samples/src/assets/images/commands/unisolateobjects/image1.png new file mode 100644 index 0000000..58ce727 Binary files /dev/null and b/samples/src/assets/images/commands/unisolateobjects/image1.png differ diff --git a/samples/src/assets/images/commands/updatedfield/image1.png b/samples/src/assets/images/commands/updatedfield/image1.png new file mode 100644 index 0000000..810d483 Binary files /dev/null and b/samples/src/assets/images/commands/updatedfield/image1.png differ diff --git a/samples/src/assets/images/commands/updatedfield/image2.png b/samples/src/assets/images/commands/updatedfield/image2.png new file mode 100644 index 0000000..2365c31 Binary files /dev/null and b/samples/src/assets/images/commands/updatedfield/image2.png differ diff --git a/samples/src/assets/images/commands/viewallentities/image1.png b/samples/src/assets/images/commands/viewallentities/image1.png new file mode 100644 index 0000000..620667c Binary files /dev/null and b/samples/src/assets/images/commands/viewallentities/image1.png differ diff --git a/samples/src/assets/images/commands/viewpoint/image1.png b/samples/src/assets/images/commands/viewpoint/image1.png new file mode 100644 index 0000000..b5f73b4 Binary files /dev/null and b/samples/src/assets/images/commands/viewpoint/image1.png differ diff --git a/samples/src/assets/images/commands/viewselectioncolor/image1.png b/samples/src/assets/images/commands/viewselectioncolor/image1.png new file mode 100644 index 0000000..48f2955 Binary files /dev/null and b/samples/src/assets/images/commands/viewselectioncolor/image1.png differ diff --git a/samples/src/assets/images/commands/viewselectioncolor/image2.png b/samples/src/assets/images/commands/viewselectioncolor/image2.png new file mode 100644 index 0000000..52dbe2f Binary files /dev/null and b/samples/src/assets/images/commands/viewselectioncolor/image2.png differ diff --git a/samples/src/assets/images/commands/vpclip/image1.png b/samples/src/assets/images/commands/vpclip/image1.png new file mode 100644 index 0000000..1752b05 Binary files /dev/null and b/samples/src/assets/images/commands/vpclip/image1.png differ diff --git a/samples/src/assets/images/commands/vpmax/image1.png b/samples/src/assets/images/commands/vpmax/image1.png new file mode 100644 index 0000000..19a1d67 Binary files /dev/null and b/samples/src/assets/images/commands/vpmax/image1.png differ diff --git a/samples/src/assets/images/commands/vpmin/image1.png b/samples/src/assets/images/commands/vpmin/image1.png new file mode 100644 index 0000000..7ea08f9 Binary files /dev/null and b/samples/src/assets/images/commands/vpmin/image1.png differ diff --git a/samples/src/assets/images/commands/vports/image1.png b/samples/src/assets/images/commands/vports/image1.png new file mode 100644 index 0000000..e856493 Binary files /dev/null and b/samples/src/assets/images/commands/vports/image1.png differ diff --git a/samples/src/assets/images/commands/wblock/image1.png b/samples/src/assets/images/commands/wblock/image1.png new file mode 100644 index 0000000..577ca98 Binary files /dev/null and b/samples/src/assets/images/commands/wblock/image1.png differ diff --git a/samples/src/assets/images/commands/wblock/image2.png b/samples/src/assets/images/commands/wblock/image2.png new file mode 100644 index 0000000..b69064e Binary files /dev/null and b/samples/src/assets/images/commands/wblock/image2.png differ diff --git a/samples/src/assets/images/commands/wipeout/image1.png b/samples/src/assets/images/commands/wipeout/image1.png new file mode 100644 index 0000000..d3873fa Binary files /dev/null and b/samples/src/assets/images/commands/wipeout/image1.png differ diff --git a/samples/src/assets/images/commands/wipeout/image2.png b/samples/src/assets/images/commands/wipeout/image2.png new file mode 100644 index 0000000..0054689 Binary files /dev/null and b/samples/src/assets/images/commands/wipeout/image2.png differ diff --git a/samples/src/assets/images/commands/wipeout/image3.png b/samples/src/assets/images/commands/wipeout/image3.png new file mode 100644 index 0000000..16acf50 Binary files /dev/null and b/samples/src/assets/images/commands/wipeout/image3.png differ diff --git a/samples/src/assets/images/commands/wipeout/image4.png b/samples/src/assets/images/commands/wipeout/image4.png new file mode 100644 index 0000000..743f930 Binary files /dev/null and b/samples/src/assets/images/commands/wipeout/image4.png differ diff --git a/samples/src/assets/images/commands/wipeoutframe/image1.png b/samples/src/assets/images/commands/wipeoutframe/image1.png new file mode 100644 index 0000000..1e2cb48 Binary files /dev/null and b/samples/src/assets/images/commands/wipeoutframe/image1.png differ diff --git a/samples/src/assets/images/commands/writelength/image1.png b/samples/src/assets/images/commands/writelength/image1.png new file mode 100644 index 0000000..451eda3 Binary files /dev/null and b/samples/src/assets/images/commands/writelength/image1.png differ diff --git a/samples/src/assets/images/commands/writelength/image2.png b/samples/src/assets/images/commands/writelength/image2.png new file mode 100644 index 0000000..e563907 Binary files /dev/null and b/samples/src/assets/images/commands/writelength/image2.png differ diff --git a/samples/src/assets/images/commands/xclipframe/image1.png b/samples/src/assets/images/commands/xclipframe/image1.png new file mode 100644 index 0000000..695f7f9 Binary files /dev/null and b/samples/src/assets/images/commands/xclipframe/image1.png differ diff --git a/samples/src/assets/images/commands/xdwgfadectl/image1.png b/samples/src/assets/images/commands/xdwgfadectl/image1.png new file mode 100644 index 0000000..fb5aea6 Binary files /dev/null and b/samples/src/assets/images/commands/xdwgfadectl/image1.png differ diff --git a/samples/src/assets/images/commands/xedit/image1.png b/samples/src/assets/images/commands/xedit/image1.png new file mode 100644 index 0000000..4ebabda Binary files /dev/null and b/samples/src/assets/images/commands/xedit/image1.png differ diff --git a/samples/src/assets/images/commands/xfadectl/image1.png b/samples/src/assets/images/commands/xfadectl/image1.png new file mode 100644 index 0000000..c550ecf Binary files /dev/null and b/samples/src/assets/images/commands/xfadectl/image1.png differ diff --git a/samples/src/assets/images/commands/xline/image1.png b/samples/src/assets/images/commands/xline/image1.png new file mode 100644 index 0000000..bdb46de Binary files /dev/null and b/samples/src/assets/images/commands/xline/image1.png differ diff --git a/samples/src/assets/images/commands/xline/image2.png b/samples/src/assets/images/commands/xline/image2.png new file mode 100644 index 0000000..d0115a3 Binary files /dev/null and b/samples/src/assets/images/commands/xline/image2.png differ diff --git a/samples/src/assets/images/commands/xreftype/image1.png b/samples/src/assets/images/commands/xreftype/image1.png new file mode 100644 index 0000000..a822cb7 Binary files /dev/null and b/samples/src/assets/images/commands/xreftype/image1.png differ diff --git a/samples/src/assets/images/commands/xreftype/image2.png b/samples/src/assets/images/commands/xreftype/image2.png new file mode 100644 index 0000000..59fb4ef Binary files /dev/null and b/samples/src/assets/images/commands/xreftype/image2.png differ diff --git a/samples/src/assets/images/commands/xybscale/image1.png b/samples/src/assets/images/commands/xybscale/image1.png new file mode 100644 index 0000000..5e7e188 Binary files /dev/null and b/samples/src/assets/images/commands/xybscale/image1.png differ diff --git a/samples/src/assets/images/commands/xybscale/image2.png b/samples/src/assets/images/commands/xybscale/image2.png new file mode 100644 index 0000000..485a407 Binary files /dev/null and b/samples/src/assets/images/commands/xybscale/image2.png differ diff --git a/samples/src/assets/images/commands/xypoint/image1.png b/samples/src/assets/images/commands/xypoint/image1.png new file mode 100644 index 0000000..e03f53b Binary files /dev/null and b/samples/src/assets/images/commands/xypoint/image1.png differ diff --git a/samples/src/assets/images/commands/zoom/image1.png b/samples/src/assets/images/commands/zoom/image1.png new file mode 100644 index 0000000..a16a13f Binary files /dev/null and b/samples/src/assets/images/commands/zoom/image1.png differ diff --git a/samples/src/assets/images/commands/zoomc/image1.png b/samples/src/assets/images/commands/zoomc/image1.png new file mode 100644 index 0000000..174df65 Binary files /dev/null and b/samples/src/assets/images/commands/zoomc/image1.png differ diff --git a/samples/src/assets/images/commands/zoomc/image2.png b/samples/src/assets/images/commands/zoomc/image2.png new file mode 100644 index 0000000..41aae69 Binary files /dev/null and b/samples/src/assets/images/commands/zoomc/image2.png differ diff --git a/samples/src/assets/images/commands/zoome/image1.png b/samples/src/assets/images/commands/zoome/image1.png new file mode 100644 index 0000000..a4f1b6f Binary files /dev/null and b/samples/src/assets/images/commands/zoome/image1.png differ diff --git a/samples/src/assets/images/commands/zoomo/image1.png b/samples/src/assets/images/commands/zoomo/image1.png new file mode 100644 index 0000000..f7342bb Binary files /dev/null and b/samples/src/assets/images/commands/zoomo/image1.png differ diff --git a/samples/src/assets/images/commands/zoomp/image1.png b/samples/src/assets/images/commands/zoomp/image1.png new file mode 100644 index 0000000..d638b5a Binary files /dev/null and b/samples/src/assets/images/commands/zoomp/image1.png differ diff --git a/samples/src/assets/images/commands/zooms/image1.png b/samples/src/assets/images/commands/zooms/image1.png new file mode 100644 index 0000000..0835e68 Binary files /dev/null and b/samples/src/assets/images/commands/zooms/image1.png differ diff --git a/samples/src/assets/images/commands/zooms/image2.png b/samples/src/assets/images/commands/zooms/image2.png new file mode 100644 index 0000000..c9a138d Binary files /dev/null and b/samples/src/assets/images/commands/zooms/image2.png differ diff --git a/samples/src/components/CollapsibleTOC.astro b/samples/src/components/CollapsibleTOC.astro new file mode 100644 index 0000000..838e25f --- /dev/null +++ b/samples/src/components/CollapsibleTOC.astro @@ -0,0 +1,95 @@ +--- +import DefaultTableOfContents from '@astrojs/starlight/components/TableOfContents.astro'; + +const props = Astro.props; +--- + +
+ +
+ + + + + + \ No newline at end of file diff --git a/samples/src/components/ContextualSidebar.astro b/samples/src/components/ContextualSidebar.astro new file mode 100644 index 0000000..d56d9da --- /dev/null +++ b/samples/src/components/ContextualSidebar.astro @@ -0,0 +1,157 @@ +--- +import SidebarPersister from "@astrojs/starlight/components/SidebarPersister.astro"; +import SidebarSublist from "@astrojs/starlight/components/SidebarSublist.astro"; +import ThemeSelect from "virtual:starlight/components/ThemeSelect"; +import SidebarToggle from "./SidebarToggle.astro"; + +const { sidebar = [] } = Astro.locals.starlightRoute ?? {}; +const currentPath = decodeURIComponent(Astro.url.pathname); + +const getTopSegment = (value) => { + const normalized = decodeURIComponent(value || "") + .replace(/^\/+|\/+$/g, ""); + if (!normalized) return ""; + return normalized.split("/")[0]; +}; + +const currentTopSegment = getTopSegment(currentPath); + +const entryTopSegment = (entry) => { + if (entry.type === "link" && entry.href) { + try { + const pathname = new URL(entry.href, Astro.url.origin).pathname; + return getTopSegment(pathname); + } catch { + return getTopSegment(entry.href); + } + } + + if (entry.type === "group" && Array.isArray(entry.entries)) { + for (const child of entry.entries) { + const segment = entryTopSegment(child); + if (segment) return segment; + } + } + + return ""; +}; + +const entryContainsPath = (entry) => { + if (entry.type === "link" && entry.href) { + const linkHref = decodeURIComponent(entry.href); + return currentPath.startsWith(linkHref); + } + + if (entry.type === "group" && Array.isArray(entry.entries)) { + return entry.entries.some(entryContainsPath); + } + + return false; +}; + +const activeTopLevelGroup = sidebar.find( + (entry) => + entry.type === "group" && + (entryContainsPath(entry) || (currentTopSegment && entryTopSegment(entry) === currentTopSegment)), +); + +const scopedSidebar = + activeTopLevelGroup && Array.isArray(activeTopLevelGroup.entries) + ? activeTopLevelGroup.entries + : sidebar; + +--- + +
+ + Light / Dark +
+ + + + + + + + diff --git a/samples/src/components/CustomMobileTableOfContents.astro b/samples/src/components/CustomMobileTableOfContents.astro new file mode 100644 index 0000000..9a47df5 --- /dev/null +++ b/samples/src/components/CustomMobileTableOfContents.astro @@ -0,0 +1,204 @@ +--- +import TableOfContentsList from "./TableOfContentsList.astro"; + +const parseFlag = (value) => { + if (typeof value === "boolean") return value; + if (typeof value === "string") { + const normalized = value.trim().toLowerCase(); + if (["true", "1", "yes", "y", "on"].includes(normalized)) return true; + if (["false", "0", "no", "n", "off"].includes(normalized)) return false; + } + return false; +}; + +const route = Astro.locals.starlightRoute ?? {}; +const { toc } = route; +const entryData = route.entry?.data ?? {}; +const frontmatter = entryData.frontmatter ?? entryData; +const enableNumbering = parseFlag(frontmatter.numberedHeadings); +const filteredItems = (toc?.items ?? []).filter((item) => item.slug !== "_top"); +const title = Astro.locals.t("tableOfContents.onThisPage"); +--- + +{ + filteredItems.length > 0 && ( + + + + ) +} + + + + diff --git a/samples/src/components/CustomTableOfContents.astro b/samples/src/components/CustomTableOfContents.astro new file mode 100644 index 0000000..abc9977 --- /dev/null +++ b/samples/src/components/CustomTableOfContents.astro @@ -0,0 +1,254 @@ +--- +import TableOfContentsList from "./TableOfContentsList.astro"; + +const parseFlag = (value) => { + if (typeof value === "boolean") return value; + if (typeof value === "string") { + const normalized = value.trim().toLowerCase(); + if (["true", "1", "yes", "y", "on"].includes(normalized)) return true; + if (["false", "0", "no", "n", "off"].includes(normalized)) return false; + } + return false; +}; + +const route = Astro.locals.starlightRoute ?? {}; +const { toc } = route; +const entryData = route.entry?.data ?? {}; +const frontmatter = entryData.frontmatter ?? entryData; +const enableNumbering = parseFlag(frontmatter.numberedHeadings); +const filteredItems = (toc?.items ?? []).filter((item) => item.slug !== "_top"); +const title = Astro.locals.t("tableOfContents.onThisPage"); +--- + +{ + filteredItems.length > 0 && ( + <> + + + + + + ) +} + + + + + diff --git a/samples/src/components/GridGallery.astro b/samples/src/components/GridGallery.astro new file mode 100644 index 0000000..03712c5 --- /dev/null +++ b/samples/src/components/GridGallery.astro @@ -0,0 +1,22 @@ +--- + +--- + + + + diff --git a/samples/src/components/GridItem.astro b/samples/src/components/GridItem.astro new file mode 100644 index 0000000..e598dab --- /dev/null +++ b/samples/src/components/GridItem.astro @@ -0,0 +1,38 @@ +--- +const { title } = Astro.props; +--- + +
+
+ +
+
+ {title &&

{title}

} + +
+
+ + diff --git a/samples/src/components/LoginCarousel.astro b/samples/src/components/LoginCarousel.astro new file mode 100644 index 0000000..e4172f0 --- /dev/null +++ b/samples/src/components/LoginCarousel.astro @@ -0,0 +1,61 @@ +--- +interface Slide { + image: string; + title: string; + body: string; +} + +const { slides }: { slides: Slide[] } = Astro.props; +--- + + + + diff --git a/samples/src/components/SearchBar.astro b/samples/src/components/SearchBar.astro new file mode 100644 index 0000000..1d80422 --- /dev/null +++ b/samples/src/components/SearchBar.astro @@ -0,0 +1,444 @@ +--- +import Fuse from "fuse.js"; +import { generateSearchData } from '../lib/searchIndex.js'; +const searchData = await generateSearchData(); // 서버에서 생성 +--- + +
+ +
+
+ + + + + + + +
+ + + +
+ + + +
+ + + + diff --git a/samples/src/components/SiteTitleWithSelect.astro b/samples/src/components/SiteTitleWithSelect.astro new file mode 100644 index 0000000..a4b794f --- /dev/null +++ b/samples/src/components/SiteTitleWithSelect.astro @@ -0,0 +1,154 @@ +--- +import { Logos } from "starlight-theme-nova/components/Logos"; +import type { Props } from "@astrojs/starlight/props"; + +const { siteTitle, locale } = Astro.props; // Starlight props + +const sections = [ + { label: "Civil DX", value: "/civil-dx/" }, + { label: "기반기술", value: "/기반기술/" }, + { label: "설계", value: "/설계/" }, + { label: "시공", value: "/시공/" }, +]; + +const currentPath = decodeURIComponent(Astro.url.pathname); +let currentSection = ""; + +// Determine current section +for (const section of sections) { + if (currentPath.includes(section.value)) { + currentSection = section.value; + break; + } +} +--- + + + + + + diff --git a/samples/src/components/SplitCard.astro b/samples/src/components/SplitCard.astro new file mode 100644 index 0000000..f1697d8 --- /dev/null +++ b/samples/src/components/SplitCard.astro @@ -0,0 +1,48 @@ +--- +interface Props { + reverse?: boolean; +} + +const { reverse = false } = Astro.props; +--- + +
+
+ +
+
+ +
+
+ + diff --git a/samples/src/components/TableOfContentsList.astro b/samples/src/components/TableOfContentsList.astro new file mode 100644 index 0000000..59c8f0d --- /dev/null +++ b/samples/src/components/TableOfContentsList.astro @@ -0,0 +1,118 @@ +--- +import type { TocItem } from "@astrojs/starlight/utils/generateToC"; + +interface Props { + toc: TocItem[]; + depth?: number; + isMobile?: boolean; + enableNumbering?: boolean; + prefix?: number[]; +} + +const { + toc, + isMobile = false, + depth = 0, + enableNumbering = false, + prefix = [], +} = Astro.props; +--- + + + + diff --git a/samples/src/components/UniversalMenuToggle.astro b/samples/src/components/UniversalMenuToggle.astro new file mode 100644 index 0000000..ec09526 --- /dev/null +++ b/samples/src/components/UniversalMenuToggle.astro @@ -0,0 +1,132 @@ +--- +import Icon from "../user-components/Icon.astro"; +--- + + + + + + + + + + diff --git a/samples/src/components/VideoModal.astro b/samples/src/components/VideoModal.astro new file mode 100644 index 0000000..0ea7837 --- /dev/null +++ b/samples/src/components/VideoModal.astro @@ -0,0 +1,21 @@ +--- +interface Props { + id: string; + videoSrc: string; +} + +const { id, videoSrc } = Astro.props; +--- + + diff --git a/samples/src/components/starlight-toc.ts b/samples/src/components/starlight-toc.ts new file mode 100644 index 0000000..b67d7db --- /dev/null +++ b/samples/src/components/starlight-toc.ts @@ -0,0 +1,132 @@ +const PAGE_TITLE_ID = "_top"; + +export class StarlightTOC extends HTMLElement { + private _current = this.querySelector('a[aria-current="true"]'); + private minH = parseInt(this.dataset.minH || "2", 10); + private maxH = parseInt(this.dataset.maxH || "3", 10); + + protected set current(link: HTMLAnchorElement) { + if (link === this._current) return; + if (this._current) this._current.removeAttribute("aria-current"); + link.setAttribute("aria-current", "true"); + this._current = link; + } + + private onIdle = (cb: IdleRequestCallback) => + (window.requestIdleCallback || ((cb) => setTimeout(cb, 1)))(cb); + + constructor() { + super(); + this.onIdle(() => this.init()); + } + + private init = (): void => { + const links = [...this.querySelectorAll("a")]; + this.syncNumbers(links); + + const isHeading = (el: Element): el is HTMLHeadingElement => { + if (el instanceof HTMLHeadingElement) { + if (el.id === PAGE_TITLE_ID) return true; + const level = el.tagName[1]; + if (level) { + const int = parseInt(level, 10); + if (int >= this.minH && int <= this.maxH) return true; + } + } + return false; + }; + + const getElementHeading = (el: Element | null): HTMLHeadingElement | null => { + if (!el) return null; + const origin = el; + while (el) { + if (isHeading(el)) return el; + el = el.previousElementSibling; + while (el?.lastElementChild) { + el = el.lastElementChild; + } + const h = getElementHeading(el); + if (h) return h; + } + return getElementHeading(origin.parentElement); + }; + + const setCurrent: IntersectionObserverCallback = (entries) => { + for (const { isIntersecting, target } of entries) { + if (!isIntersecting) continue; + const heading = getElementHeading(target); + if (!heading) continue; + const link = links.find((link) => link.hash === "#" + encodeURIComponent(heading.id)); + if (link) { + this.current = link; + break; + } + } + }; + + const toObserve = document.querySelectorAll("main [id], main [id] ~ *, main .content > *"); + + let observer: IntersectionObserver | undefined; + const observe = () => { + if (observer) return; + observer = new IntersectionObserver(setCurrent, { rootMargin: this.getRootMargin() }); + toObserve.forEach((h) => observer!.observe(h)); + }; + observe(); + + let timeout: ReturnType; + window.addEventListener("resize", () => { + if (observer) { + observer.disconnect(); + observer = undefined; + } + clearTimeout(timeout); + timeout = setTimeout(() => this.onIdle(observe), 200); + }); + }; + + private syncNumbers = (links: HTMLAnchorElement[]) => { + const toId = (hash: string) => { + if (!hash) return ""; + const raw = hash.startsWith("#") ? hash.slice(1) : hash; + try { + return decodeURIComponent(raw); + } catch { + return raw; + } + }; + + let didApply = false; + for (const link of links) { + const targetId = toId(link.hash); + if (!targetId) continue; + const heading = document.getElementById(targetId); + const number = heading?.dataset.headingNumber; + if (!number) continue; + + const label = link.querySelector(".toc-label") ?? link; + const existing = label.querySelector(".toc-number") ?? document.createElement("span"); + existing.classList.add("toc-number"); + existing.textContent = number; + if (!existing.parentElement) { + label.insertBefore(existing, label.firstChild); + } + didApply = true; + } + + if (didApply) { + this.dataset.numbering = "true"; + } + }; + + private getRootMargin(): `-${number}px 0% ${number}px` { + const navBarHeight = document.querySelector("header")?.getBoundingClientRect().height || 0; + const mobileTocHeight = this.querySelector("summary")?.getBoundingClientRect().height || 0; + const top = navBarHeight + mobileTocHeight + 32; + const bottom = top + 53; + const height = document.documentElement.clientHeight; + return `-${top}px 0% ${bottom - height}px`; + } +} + +customElements.define("starlight-toc", StarlightTOC); diff --git a/samples/src/content.config.ts b/samples/src/content.config.ts new file mode 100644 index 0000000..7fbcf2c --- /dev/null +++ b/samples/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from "astro:content"; +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/samples/src/content/docs/Civil DX/01. 국내 건설정책 추진현황.mdx b/samples/src/content/docs/Civil DX/01. 국내 건설정책 추진현황.mdx new file mode 100644 index 0000000..9c96a89 --- /dev/null +++ b/samples/src/content/docs/Civil DX/01. 국내 건설정책 추진현황.mdx @@ -0,0 +1,7 @@ +--- +title: 국내 건설정책 추진현황 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/02. DX의 실태.mdx b/samples/src/content/docs/Civil DX/02. DX의 실태.mdx new file mode 100644 index 0000000..cb341ba --- /dev/null +++ b/samples/src/content/docs/Civil DX/02. DX의 실태.mdx @@ -0,0 +1,7 @@ +--- +title: DX의 실태 +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room(원본)/01. 설치근거 및 필요성.mdx b/samples/src/content/docs/Civil DX/BIG Room(원본)/01. 설치근거 및 필요성.mdx new file mode 100644 index 0000000..1fc3436 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room(원본)/01. 설치근거 및 필요성.mdx @@ -0,0 +1,7 @@ +--- +title: 설치근거 및 필요성 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room(원본)/02. HW적 요소와 최소 구비 조건.mdx b/samples/src/content/docs/Civil DX/BIG Room(원본)/02. HW적 요소와 최소 구비 조건.mdx new file mode 100644 index 0000000..2d20e50 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room(원본)/02. HW적 요소와 최소 구비 조건.mdx @@ -0,0 +1,7 @@ +--- +title: HW적 요소와 최소 구비 조건 +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room(원본)/03. 구성요소 및 설치사례.mdx b/samples/src/content/docs/Civil DX/BIG Room(원본)/03. 구성요소 및 설치사례.mdx new file mode 100644 index 0000000..b2f5486 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room(원본)/03. 구성요소 및 설치사례.mdx @@ -0,0 +1,7 @@ +--- +title: 구성요소 및 설치사례 +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room(원본)/04. SW적 요소 (C.C.P와 BCMF).mdx b/samples/src/content/docs/Civil DX/BIG Room(원본)/04. SW적 요소 (C.C.P와 BCMF).mdx new file mode 100644 index 0000000..f9367dd --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room(원본)/04. SW적 요소 (C.C.P와 BCMF).mdx @@ -0,0 +1,7 @@ +--- +title: SW적 요소 (C.C.P와 BCMF) +sidebar: + order: 3 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.astro b/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.astro new file mode 100644 index 0000000..d469094 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.astro @@ -0,0 +1,296 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + + + + + +
+
+
+

1. 기초 용어 정의

+

건설산업에서 BIM, DX를 이해하려면 각각의 용어가 무엇을 뜻하는지 명확히 구분하여야 한다.

+

1.1 건설산업

+

수요자가 요구하는 다양한 시설물을, 각 산업마다의 광범위한 기술을 통합 및 융합하여 만들어 내는 종합산업으로, 목적 시설물의 품질에 대한 욕구를 충족 시키면서 최단기간 내에 최소한의 비용으로 편리하고 안전하며 우수한 성능시설물을 완성하는 것을 목표로 하는산업을 의미한다.

+

1.2 BIM(building information modeling, 건설정보모델링)

+

BIM은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 디지털전환(DX, Digital Transformation) 체계를 의미한다.

+

1.3 DX(digital Transformation, 디지털 전환)

+

디지털 기술과 도구를 활용하여, 고객과 시장의 변화에 대응하고 새로운 가치를 창출하며 산업생태계, 비지니스 모델(B.M) 및 업무수행 방식(Process)을 혁신하는 과정과 전환을 말한다.

+
+디지털전환 그림 +

+
+
+
+
+
+

2. BIM vs DX 비교

+

흔히 BIM과 DX를 혼용하여 사용하곤 한다. 하지만 BIM이 3D 형상 구현을 위한 도구적 성격이 강하다면, DX는 이를 기반으로 데이터와 프로세스 전반을 혁신하는 체계라는 점에서 엄연히 다른 개념이다.

+
BIM구분DX
Only 3DBIM/DXBIM << DX (ENG. + Management 포함)
모델 제작용 상용 S/W
[Civil 3D, Revit, Navisworks, Autocad]
S/W제작 및 운영 (상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등]
기존 2D 설계방식 유지프로세스근본적 문제의식을 통한 개선
3D 모델 중심
기존 성과품 유지
성과품공학 정보 및 콘텐츠 연계에 집중
도면, 수량, 시공계획 등 일식
3D 모델에 의한 일반적 이해 향상활용설계/시공의 혁신 (개념의 재정립)
(설계/시공/운영) 분야별 단절확장성전 생애주기 활용 시스템
단순화(오류)
수동적/집단적 동질화
수행개념구체화(복잡)
적극/구체적 실현 방안
소극적, 상용 기술에 의존CIVIL + IT적극적, 주체적인 기술 접목/융합
S/W 제작사 판매 정책에 의존주체자체 수행능력 - 지속가능성 확보
평준화, 국내 중심발주처차별화 및 경쟁력 확보, 해외 진출
소규모 BIM팀 운영 + 단순교육에 집중설계사IT + CIVIL ENG 220명 운영 + 기술 개발
국내 토목 소극적 / 해외 토목증가시공사분야 확장 모델 및 시스템
+

:::note

+

BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다.

+

:::

+
+
+
+ + + +
+ + diff --git a/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.html b/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.html new file mode 100644 index 0000000..13f9044 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room/01. 설치 근거 및 필요성.html @@ -0,0 +1,297 @@ + + +건설 정책 로드맵 및 목표 + + + +
+ +
+ +
+

1. 건설 정책 로드맵 및 목표

+

정부는 디지털 전환(DX) 을 통해 정체된 건설산업을 국가 신성장 동력으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다.

+ +
+ 건설 정책 로드맵 +

[사진 1] 건설산업DX 정책 로드맵

+
+ +

2. 건설산업 BIM 기본 지침

+

2020년 「건설산업 BIM 기본지침」, 2022년 「건설산업 BIM 시행지침」을 발의하여 건설산업의 생산성 향상품질, 안전 및 친환경의 극대화를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 디지털 전환을 가속화하고자 한다.

+

정부 BIM 도입 개요 (건설산업 BIM 기본지침)

+
    +
  • 비전: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약
  • +
  • 목표: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화
  • +
  • 기대 효과:
  • +
    • 비용/공기: 건설 비용 감소 및 기간 단축
    +
    • 품질/안전: 설계·시공 오류 최소화, 프로젝트 리스크 저감
    +
    • 협업: 협업과 의사소통 강화, 건설정보 통합관리
    +
+ +
+ 건설산업 BIM 기본 지침 +

[사진 1] 건설산업 BIM 기본 지침 및 시행지침

+
+
+
+ +
+ + +
+

3. 스마트 건설 활성화 방안

+

2022년 7월 국토교통부가 발표한 '스마트 건설 활성화 방안'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다.

+

스마트 건설 활성화 방안 주요내용

+
구분주요 내용
BIM
(Building Information Modeling)
건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함
OSC
(Off-Site Construction)
탈현장 건설 (공장 제작 시공)
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식
+ +
+ 스마트 건설 활성화 방안 +

[사진 2] 스마트 건설 활성화 방안

+
+
+
+ + +
+ + +
+
ℹ️ 핵심 요약
+
    +
  • 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다.
  • +
+
+ + +
+ + + + \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room/02. HW적 요소와 최소 구비 조건.mdx b/samples/src/content/docs/Civil DX/BIG Room/02. HW적 요소와 최소 구비 조건.mdx new file mode 100644 index 0000000..0f88a0e --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room/02. HW적 요소와 최소 구비 조건.mdx @@ -0,0 +1,285 @@ +--- +title: DX도입 배경(슬라이드6:4) +sidebar: + order: 5 +tableOfContents: false +--- + + + +{/* 👇 슬라이드 컨테이너: 높이를 화면 크기에서 [제목+여백]만큼 뺀 값으로 자동 계산 */ +/* calc(100vh - 140px) : 140px은 상단 시스템 제목과 헤더가 차지하는 대략적인 높이입니다. */ +} +
+ + {/* 본문 영역 (6:4 분할) */} +
+ + {/* 🟢 [왼쪽 60%] */} +
+ +

+ 1. 건설산업의 낮은 생산성 +

+ +
+

+ * **건설산업** 생산성 성장률은 **1%**, 제조업(**3.6%**) 대비 **심각한 정체** 상태. + + + * 국내 건설기업의 **노동 생산성**또한 **제조업의 53.2%** 수준에 불과함. + + + * **건설산업**은 **효율성 혁신 지체**로, 여전히 전통적인 **노동 집약적 생산 방식**에 머물러 있음. + +
+
+

+ + + +
+ +

+ 2. 디지털화와 건설산업의 현재 +

+ +
+

+ * 세계적으로 산업별 **디지털화 수준과 생산성은 정비례**함. + + * 건설산업의 디지털화 지수는 **농업보다도 낮은 최하위권**에 머물러 있음. + + * 디지털 전환을 위한 **노력 부족**과 건설산업에 맞는 **디지털 기술 부족**이 그 원인. + + * 디지털 기술이 발전한 현재, 생산성 혁신을 위해 **건설산업 전반의 디지털 전환(DX)** 이 필요. +

+ + + +
+ +{/* ================= [핵심 요약] 박스 ================= */} +
+ {/* 제목 부분 */} +
+ 핵심 요약 +
+ + {/* 내용 부분 */} +
    +
  • + 건설산업은 디지털전환을 통해 Process의 혁신과 + Products의 변화를 일으켜야 한다. +
  • +
+
+ +
+ + {/* 🟠 [오른쪽 40%] */} +
+ + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 1] 국내외 건설산업 생산성 추이 (출처: McKinsey / 한국은행)*
+

+ +
+
+ + + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 2] 산업별 디지털화 지수 비교 (출처: McKinsey 보고서, 2018)*
+

+ +
+ +
+ +
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIG Room/03. 구성요소 및 설치사례.astro b/samples/src/content/docs/Civil DX/BIG Room/03. 구성요소 및 설치사례.astro new file mode 100644 index 0000000..efc0f7d --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIG Room/03. 구성요소 및 설치사례.astro @@ -0,0 +1,302 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + + + + + +
+
+
+

1. 건설 정책 로드맵 및 목표

+

정부는 디지털 전환(DX) 을 통해 정체된 건설산업을 국가 신성장 동력으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다.

+
+건설 정책 로드맵 +

[사진 1] 건설산업DX 정책 로드맵

+
+

2. 건설산업 BIM 기본 지침

+

2020년 「건설산업 BIM 기본지침」, 2022년 「건설산업 BIM 시행지침」을 발의하여 건설산업의 생산성 향상품질, 안전 및 친환경의 극대화를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 디지털 전환을 가속화하고자 한다.

+

정부 BIM 도입 개요 (건설산업 BIM 기본지침)

+
    +
  • 비전: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약
  • +
  • 목표: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화
  • +
  • 기대 효과:
  • +
    • 비용/공기: 건설 비용 감소 및 기간 단축
    +
    • 품질/안전: 설계·시공 오류 최소화, 프로젝트 리스크 저감
    +
    • 협업: 협업과 의사소통 강화, 건설정보 통합관리
    +
+
+건설산업 BIM 기본 지침 +

[사진 1] 건설산업 BIM 기본 지침 및 시행지침

+
+
+
+
+
+

3. 스마트 건설 활성화 방안

+

2022년 7월 국토교통부가 발표한 '스마트 건설 활성화 방안'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다.

+

스마트 건설 활성화 방안 주요내용

+
구분주요 내용
BIM
(Building Information Modeling)
건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함
OSC
(Off-Site Construction)
탈현장 건설 (공장 제작 시공)
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식
+
+스마트 건설 활성화 방안 +

[사진 2] 스마트 건설 활성화 방안

+
+
+
+
+
+
ℹ️ 핵심 요약
+
    +
  • 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다.
  • +
+
+
+ + + +
+ + \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM과 DX의 이해/01. 건설산업 DX의 올바른 이해(0127).mdx b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/01. 건설산업 DX의 올바른 이해(0127).mdx new file mode 100644 index 0000000..949d7e6 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/01. 건설산업 DX의 올바른 이해(0127).mdx @@ -0,0 +1,120 @@ +--- +title: 건설산업 DX의 올바른 이해 +sidebar: + order: 00 +--- + +* **용어의 혼용** + + * 건설산업의 디지털 전환 논의에서 DX(Digital Transformation)와 BIM(Building Information Modeling)이 개념적으로 명확히 정립되지 않은채 혼용되어 사용되고 있음 + * 이로인해 BIM기술의 도입을 DX의 완성으로 오인하거나, DX를 BIM 기술 도입 수준으로 한정하는 인식 확산 +
+ 혼용 대표 사례 + +
+ * **[스마트 건설 활성화 방안(2022.07)]** + * 추진과제 : 건설산업 디지털화 + * 실행과제 : BIM 전면 도입, BIM 전문인력 양성 + * **[제7차 건설기술진흥 기본계획(2023.12)]** + * 추진방향 : 디지털 전환을 통한 스마트 건설 확산 + * 추진과제 : BIM 도입으로 건설산업 디지털화 +
+
+ + + * 건설산업의 DX를 올바르게 이해하기 위해 각 용어의 정의, 역할, 상호관계에 대한 체계적 정립 필요 + +
+--- + + +## 1. 용어 정의 + +
+ +* **건설산업** + * 다양한 시설물을 각 산업마다의 광범위한 기술을 통합 및 융합하여 만들어내는 종합산업 + * 목적 시설물의 품질 욕구를 충족시키면서 최단기간내에 최소 비용으로 편리하고 안전하며 우수한 성능의 시설물 완성을 목표로 함 + +
+ +* **BIM(Building Information Modeling) : 디지털 전환을 위한 핵심 기술** + * 시설물의 생애주기동안 발생한 모든 정보를 3차원 모델 기반으로 통합·관리하는 정보 관리 도구 + * 건설 정보와 절차를 표준화된 방식으로 연계하고 디지털 협업이 가능하도록 하는 핵심 인프라 기술 +
+ *건설산업 BIM 기본지침, 국토교통부, 2020* +
+ +
+ +* **DX(Digital Transformation) : 산업 패러다임의 변화** + * 디지털 기술을 기반으로 산업 전반의 업무방식과 가치 창출 구조를 전환하는 과정 및 결과 + * 단순한 기술 도입이 아닌, 고객 가치와 의사결정 방식의 근본적인 변화로 산업의 새로운 방향을 정립하는 것을 의미함 +
+ *Digital Transformation, IBM Institute for Business Value, 2011 / What is Digital Transformation?, Agile Elephant, 2015* +
+ + +--- +
+ +## 2. 용어간 상호관계 + +* DX는 BIM과 같은 디지털기술을 기반으로 산업 전반의 프로세스를 혁신하는 상위개념 +* 건설산업의 DX는 GIS(공간정보), BIM, 디지털 트윈(가상환경)의 기술융합을 통해서만 실현 또는 구현 가능 + * GIS의 역할 : 지리적 데이터를 공간 분석하여 시각적으로 표현, 위치기반 정보 제공 + * BIM의 역할 : 형상정보와 내용정보가 포함된 3D모델로, 건설 정보 기반의 Process와 Product를 제공 +![DX와 핵심기술간 상호관계](/assets/images/DX1.png) +
+ *[그림 1] DX와 핵심기술간 상호관계* +
+ +
+
+ + + +
+ DX와 BIM의 구분 + +
+ | DX | 구분 | BIM | + | :--- | :---: | ---: | + | **BIM << DX**
(Engineering + Management 통합) | **범위** | **Only 3D**
(형상 구현 중심) | + | **제작 및 운영**(상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등] | **S/W** | **모델 제작용 상용 SW**
[Revit, Civil 3D, Navisworks, Autocad] | + | **근본적 문제의식을 통한 개선** | **프로세스** | **기존 2D 설계 방식 유지** | + | **공학 정보 및 콘텐츠 연계에 집중**
**도면, 수량, 시공계획 등 일식** | **성과품** | **3D 모델 중심**
**기존 성과품 유지** | + | **설계/시공 생산성 혁신**(개념의 재정립) | **활용** | **3D 모델에 의한 일반적 이해 향상** | + | **전 생애주기 활용 시스템** | **확장성** | **(설계/시공/운영) 분야별 단절** | + | **구체화(복잡) - 적극적/구체적 실현 방안** | **수행 개념** | **단순화(오류) - 수동적/집단적 동질화** | + | **적극적, 주체적인 기술 접목/융합** | **CIVIL + IT** | **소극적, 상용 기술에 의존** | + | **자체 수행 능력 - 지속가능성 확보** | **주체** | **S/W 제작사 판매 정책에 의존** | + | **차별화 및 경쟁력 확보, 해외 진출** | **발주처** | **평준화, 국내 중심** | + | **IT + CIVIL ENG 220명 운영 + 기술 개발** | **설계사** | **소규모 BIM팀 운영 + 단순교육에 집중** | + | **분야 확장 모델 및 시스템** | **시공사** | **국내 토목 소극적/해외 토목증가** | +
+
+ +
+ +--- + +:::note[핵심 요약] +* BIM은 건설산업의 디지털전환(DX)을 수행하는 과정에서 **가장 기초가 되는 일부분**이다 +::: + diff --git a/samples/src/content/docs/Civil DX/BIM과 DX의 이해/02. DX의 시행 목표 및 기대효과.mdx b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/02. DX의 시행 목표 및 기대효과.mdx new file mode 100644 index 0000000..f9c0de1 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/02. DX의 시행 목표 및 기대효과.mdx @@ -0,0 +1,350 @@ +--- +title: DX의 시행 목표 및 기대효과 +sidebar: + order: 1 +--- + +import DxEffect from '../../../../components/dx.astro'; + + +## 1. DX의 궁극적 목표 + +- **안전과 품질** + - 시설물의 요구 성능을 설계-시공-운영 전 과정에서 **디지털로 검증**하여 **안전성 확보** + - Copy & Paste로 하향 평준화된 성과물의 **하자 최소화**로 **고품질 성과물 제공** +
+- **생산성 향상** + - Analogue 기반 업무를 Digital 기반 프로세스로 전환하여 **업무 속도·정확성·일관성 향상** + - 건설 비용 및 유지관리비 절감, 건설 기간 단축, 인력투입 최소화를 통해 **부가가치 제고** +
+- **소통과 신뢰** + - 성과품과 Solution을 통한 협업 강화로 **의사소통 효율 및 운영·유지관리**의 **편리성 증진** + - 3D 모델 및 데이터 기반 검증을 통한 **오류 최소화 및 Claim 예방**으로 **신뢰성 확보** +![DX의 궁극적 목표](/assets/images/궁극적목표.png) +
+ +## 2. DX 기반 Process 혁신에 따른 주체별 기대효과 +
+### 2.1 업무 수행 과정(Process)의 변화 + - **생산 방식**: 수작업 의존의 반복 업무에서 벗어나, **SW를 활용한 체계화된 방식**으로 전환 + - **인지·검토**: 2D 도면 해석 중심에서 **3D 모델 기반의 직관적 인지·검토 체계**로 전환 + - **협업 구조**: 개별 문서 중심 협업에서 **데이터 통합 기반의 정보 공유·관리 협업 환경**으로 전환 + - **검증·대응**: 사후 대응 중심의 문제 처리에서 **사전 검증 중심의 예방적 업무 방식**으로 전환 +
+### 2.2 DX 시행 주체별 기대효과 + +--- +/* [dx2.astro] 격식 있는 비교표 스타일 */ +--- + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분발주자시공자설계자
필요 역량실행 의지와 합리적 판단 역량기술 투자와 운영 역량기술개발 투자에 의한 S/W 역량
수작업 의존

S/W 기반 체계화
+
    +
  • + 행정서류 자동 생성 및 최소화로 업무 생산성 향상 +
  • +
  • + 건설기간 단축, 건설비 및 유지관리비 총비용 최소화 +
  • +
+
+
    +
  • + 체계적 공정/자원 관리를 통한 신뢰성 확보 및 생산성 향상 +
  • +
  • + Model에서의 도면 추출로 쉽고 정확한 + 시공상세도 작성 용이 +
  • +
  • + 시스템 구축 시, 품질·안전·관리 등에 필요한 + 도서 작성 용이 +
  • +
+
+
    +
  • + SW기반 설계프로세스 체계화로 설계 생산성 향상 +
  • +
  • + 프로젝트 정보의 일관 유지 및 관리를 통한 오류 최소화 +
  • +
  • + 다양한 성과물과 정보물 활용으로 추가 부가가치 창출 +
  • +
+
2D

3D 기반 인지·검토
+
    +
  • + 3D 모델을 통한 직관적 시각화로 품질 향상 및 안전성 제고 +
  • +
  • + 건설단계별 수행상태에 대한 쉬운 이해로 관리 편의성 증대 +
  • +
+
+
    +
  • + 직관적 시각화로 계획시공 등을 관리하여 안전성 제고 및 품질 향상 +
  • +
  • + 중간태, 완성태 측량을 통한
    시·공간적 관리의 편리성 향상 +
  • +
+
+
    +
  • + 3D 모델을 통한 확인/검증으로 설계 + 오류 최소화 및 Claim 예방 +
  • +
+
문서 중심

데이터 통합 기반 협업
+
    +
  • + 현장 실무자와 발주자의 원활한 의사소통으로 오류 최소화 +
  • +
  • + 디지털 환경 구축을 통한 건설 정보 통합관리 활용성 강화 +
  • +
+
+
    +
  • + 불필요한 행정서류 감소를 통한 협업 및 의사소통 효율 향상 +
  • +
+
+
    +
  • + 설계 신뢰도 확보 및 발주자
    이익 기여로 상호신뢰 증진 +
  • +
+
사후 대응

사전 검증 중심 관리
+
    +
  • + 설계변경, 민원, 재작업, 소송 등의 사전 예방, 최소화 +
  • +
+
+
    +
  • + 설계 및 시공 오류 예방과 원활한 의사 소통으로 공사 Risk 최소화 +
  • +
+
+
    +
  • + 시공 전 설계검증 강화로
    + 설계 책임 리스크 감소 +
  • +
+
+
+ + + + +
+
+:::note[핵심 요약] +* 고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다. +::: +
diff --git a/samples/src/content/docs/Civil DX/BIM과 DX의 이해/03. DX 시행을 위한 필수 요건 및 혁신 방안.mdx b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/03. DX 시행을 위한 필수 요건 및 혁신 방안.mdx new file mode 100644 index 0000000..51cc770 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM과 DX의 이해/03. DX 시행을 위한 필수 요건 및 혁신 방안.mdx @@ -0,0 +1,89 @@ +--- +title: DX 실행 체계 구축 방안 +sidebar: + order: 02 +--- + +## 1. DX 시행을 위한 필수 요건 + +
+ +* **기술(디지털)** + * **Digital 기술(S/W, H/W)과 업무 Process의 통합** + * 기존 업무 프로세스에 다양한 디지털 기술을 접목하여 업무 수행 + * 프로젝트 전반에 걸친 업무 프로세스의 연결 및 조율 + * **분야별 전문 지식(설계, 시공, 유지관리 등) 보유** + * 건설 전 단계에 대한 근본적인 이해와 지식 및 경험 + * 최신 토목 기술 트랜드 및 표준 기준 등에 대한 높은 지식 + +
+ +* **사람(역량)** + * **혁신적 사고방식과 창의적 문제 해결 능력** + * 기존 수행 방식과 관습적 사고 등에 의한 접근 방식 탈피 + * 디지털 기술을 활용한 창의적, 혁신적인 솔루션 제시 + * **사용자 중심 사고와 DX 수행 경험** + * 사용자의 요구와 기대를 충족시키는 설계 및 구현 + * 시행착오를 포함한 수행 경험과 사용자 경험(UX)을 반영한 해결 방안 제시 + +
+ +* **자연(여건)** + * **지속적인 투자 및 실행 의지** + * 기술 도입 초기 단계에 필요한 인력·기간·비용 등의 대규모 투자 + * 기술 고도화를 위한 지속적인 개선 및 투자 체계 구축 + * 변화와 혁신을 통해 부가가치를 창출하려는 실행 의지와 추진력 + +
+--- + +## 2. Process의 혁신과 Product의 변화 + +
+ +### 2.1 과정(Process)의 혁신 + +* **Analogue 기반 업무의 Digital화** + + | As-is [Analogue] | 구분 | To-be [Digital] | + | :--- | :---: | :--- | + | **개념·문서·행정 절차 중심** | ➠ | **시각화된 목적물, 소통, 투명성 중심** | + | **2D 도면, 전문가, 규정** | ➠ | **3D 모델, 참여자, 실체** | + | **업무 구분(단절), 책임** | ➠ | **협업(융·복합), 창의성** | + +
+ +* **GIS + BIM의 연계** + * 지리·지형·지반 등 위치정보(GIS)와 3D모델(형상, 속성정보) 기반의 건설 정보를 포함하는 BIM의 연계를 통한 업무 프로세스의 혁신 + +
+ +* **사용자 중심의 Solution 제공** + * 서로 다른 S/W로 작성되어 분절화된 Analogue 방식의 성과물과 정보물을 연계할 수 있는 설계·시공 Solution 제공 + +
+
+ +### 2.2 결과(Product)의 변화 + +* **Copy & Paste로 인해 하향 평준화된 기존 성과물의 품질 향상** + * 과거 수작업으로 시행하면서 발생하던 오류 등의 최소화 + * 정확한 Data에 기반한 계획으로 고품질 성과물 도출 + +
+ +* **Analogue 기반 도서 외 Digital 기반 정보물 추가** + * 기존 성과물(도면, 수량, 계산서, 시방서 등)에 3D 모델, Simulation 등의 Digital 기반 정보물 추가 + +
+ +* **Solution을 활용한 업무 효율화** + * Engn. Solution을 통해 성과물에 관한 이슈를 함께 검토·논의하는 협업 환경 조성 + * 건설 단계별 정보를 디지털 데이터로 축적하여, 건설 전 과정을 통합관리 + +
+--- + +:::note[핵심 요약] +* **DX는 필요한 요건과 체계를 갖춘 후 시행해야만 그 효과를 기대할 수 있다.** +::: \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/01. 수행체계 및 실행 요건.mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/01. 수행체계 및 실행 요건.mdx new file mode 100644 index 0000000..f82debc --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/01. 수행체계 및 실행 요건.mdx @@ -0,0 +1,7 @@ +--- +title: 수행체계 및 실행 요건 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/02. 시공단계 BIM 모델의 활용 방안 (모델기반).mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/02. 시공단계 BIM 모델의 활용 방안 (모델기반).mdx new file mode 100644 index 0000000..ac394c3 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/02. 시공단계 BIM 모델의 활용 방안 (모델기반).mdx @@ -0,0 +1,7 @@ +--- +title: 시공단계 BIM 모델의 활용 방안 (모델기반) +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/03. 시공단계 BIM 모델의 활용 방안 (객체기반).mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/03. 시공단계 BIM 모델의 활용 방안 (객체기반).mdx new file mode 100644 index 0000000..a3d5a7e --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/03. 시공단계 BIM 모델의 활용 방안 (객체기반).mdx @@ -0,0 +1,7 @@ +--- +title: 시공단계 BIM 모델의 활용 방안 (객체기반) +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/04. 시공단계 BIM 모델의 활용 방안 (위치기반).mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/04. 시공단계 BIM 모델의 활용 방안 (위치기반).mdx new file mode 100644 index 0000000..b597295 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/04. 시공단계 BIM 모델의 활용 방안 (위치기반).mdx @@ -0,0 +1,7 @@ +--- +title: 시공단계 BIM 모델의 활용 방안 (위치기반) +sidebar: + order: 3 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/05. 시공 BIM 도입의 한계.mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/05. 시공 BIM 도입의 한계.mdx new file mode 100644 index 0000000..1750ce6 --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/05. 시공 BIM 도입의 한계.mdx @@ -0,0 +1,7 @@ +--- +title: 시공 BIM 도입의 한계 +sidebar: + order: 4 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/06. 현장 적용성 강화를 위한 실질적 방안.mdx b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/06. 현장 적용성 강화를 위한 실질적 방안.mdx new file mode 100644 index 0000000..3e6616d --- /dev/null +++ b/samples/src/content/docs/Civil DX/BIM기반 건설사업관리/06. 현장 적용성 강화를 위한 실질적 방안.mdx @@ -0,0 +1,7 @@ +--- +title: 현장 적용성 강화를 위한 실질적 방안 +sidebar: + order: 5 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/DX와 SW/01. 설계 방식의 왜곡.mdx b/samples/src/content/docs/Civil DX/DX와 SW/01. 설계 방식의 왜곡.mdx new file mode 100644 index 0000000..74fcca0 --- /dev/null +++ b/samples/src/content/docs/Civil DX/DX와 SW/01. 설계 방식의 왜곡.mdx @@ -0,0 +1,7 @@ +--- +title: 설계 방식의 왜곡 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/DX와 SW/02. Engineering SW의 현실.mdx b/samples/src/content/docs/Civil DX/DX와 SW/02. Engineering SW의 현실.mdx new file mode 100644 index 0000000..f26d945 --- /dev/null +++ b/samples/src/content/docs/Civil DX/DX와 SW/02. Engineering SW의 현실.mdx @@ -0,0 +1,7 @@ +--- +title: Engineering SW의 현실 +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/DX와 SW/03. 진정한 DX를 위한 노력.mdx b/samples/src/content/docs/Civil DX/DX와 SW/03. 진정한 DX를 위한 노력.mdx new file mode 100644 index 0000000..f3090f2 --- /dev/null +++ b/samples/src/content/docs/Civil DX/DX와 SW/03. 진정한 DX를 위한 노력.mdx @@ -0,0 +1,7 @@ +--- +title: 진정한 DX를 위한 노력 +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/01. Engn.SW의 기본요소.mdx b/samples/src/content/docs/Civil DX/Engn. SW/01. Engn.SW의 기본요소.mdx new file mode 100644 index 0000000..0611713 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/01. Engn.SW의 기본요소.mdx @@ -0,0 +1,7 @@ +--- +title: Engn.S/W의 기본요소 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/02. 상용 SW의 한계.mdx b/samples/src/content/docs/Civil DX/Engn. SW/02. 상용 SW의 한계.mdx new file mode 100644 index 0000000..b6dcf54 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/02. 상용 SW의 한계.mdx @@ -0,0 +1,7 @@ +--- +title: 상용 S/W의 한계 +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/03. 전문·전용 SW의 필요성.mdx b/samples/src/content/docs/Civil DX/Engn. SW/03. 전문·전용 SW의 필요성.mdx new file mode 100644 index 0000000..0eca008 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/03. 전문·전용 SW의 필요성.mdx @@ -0,0 +1,7 @@ +--- +title: 전문·전용 S/W의 필요성 +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/04. Solution Engn. SW 구현.mdx b/samples/src/content/docs/Civil DX/Engn. SW/04. Solution Engn. SW 구현.mdx new file mode 100644 index 0000000..469df2f --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/04. Solution Engn. SW 구현.mdx @@ -0,0 +1,7 @@ +--- +title: Solution Engn.S/W 구현 +sidebar: + order: 3 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/05. Engn. SW의 개발 현황 및 조건.mdx b/samples/src/content/docs/Civil DX/Engn. SW/05. Engn. SW의 개발 현황 및 조건.mdx new file mode 100644 index 0000000..e156090 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/05. Engn. SW의 개발 현황 및 조건.mdx @@ -0,0 +1,7 @@ +--- +title: Engn.S/W의 개발 현황 및 조건 +sidebar: + order: 4 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Engn. SW/06. Engn. SW 개발 패러다임.mdx b/samples/src/content/docs/Civil DX/Engn. SW/06. Engn. SW 개발 패러다임.mdx new file mode 100644 index 0000000..c4ba233 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Engn. SW/06. Engn. SW 개발 패러다임.mdx @@ -0,0 +1,7 @@ +--- +title: Engn.S/W 개발 패러다임 +sidebar: + order: 5 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Feature-Split.mdx b/samples/src/content/docs/Civil DX/Feature-Split.mdx new file mode 100644 index 0000000..199f8bd --- /dev/null +++ b/samples/src/content/docs/Civil DX/Feature-Split.mdx @@ -0,0 +1,70 @@ +--- +title: Civil DX - 기능 (2분할) +sidebar: + order: 3 + hidden: true +--- + +# 주요 기능 소개 + +{/* 전체를 감싸는 2분할 컨테이너 시작 */} +
+ +{/* [왼쪽 기둥] 표 영역 */} +
+ +## Solution Engn. S/W + +| 구분 | (Commercial) Package Program | (System) Solution S/W | +| :--- | :--- | :--- | +| **고객
(분야)** | **Customer**
- 구매자, 사용자 (상품, 제품 등)
- 이용자 (서비스, 구독 등) | **Client**
- 발주자 (건설, 엔지니어링 등)
- 의뢰자 (법률, 회계, 자문 등) | +| **정의** | - **특정 기능/서비스 제공**을 위해 미리 구성
- 사용자가 직접 사용하는 기성 제품화된 S/W | - **주어진 상황/목적에 대한 해결책**
- 고객(의뢰인)의 요구를 충족하는 맞춤형 S/W | +| **특징** | - 업무 프로세스 전반이 완성형
- **기성품**, 변경 불가 (API로만 추가)
- 예) ERP 패키지, AutoCAD, Midas | - 특정 목적 수행 (H/W, S/W, 기술)
- **커스터마이징** 가능 (맞춤형)
- 기능/모듈 추가로 시스템 확장 가능 | +| **장점** | - 비용 효율적, 즉시 사용 가능
- 검증된 안정성 및 신뢰성
- 설치 및 사용이 간편 | - 비즈니스 문제 해결을 위한 맞춤 개발
- 고객 요구사항 상세 반영
- 유연하고 확장성이 뛰어남 | +| **단점** | - 특정 요구사항에 딱 맞지 않음
- 불필요한 기능이 많을 수 있음
- 경쟁 우위 확보가 어려움 | - 개발 비용 및 시간 소요
- 유지보수 비용이 높음
- 초기 안정성/신뢰도가 낮을 수 있음 | + +
+ + +{/* [오른쪽 기둥] 이미지 및 설명 영역 */} +
+ +{/* 1. 구조도 이미지 */} +![시스템 구조도 그림](/assets/images/structure.png) + +{/* 2. 용어 설명 */} +
+ +✅ **System Program** +H/W와 응용 프로그램을 연결하며, 기본 시스템 운영 지원 (OS, KERNEL 등) + +✅ **Expert System** +토목 분야 Project 별 성과 제작 / 생산할 수 있는 전용 S/W (설계, 공정관리 시스템) + +✅ **Firmware** +H/W에 내장되어 작동을 제어하고 S/W의 통신 지원 + +✅ **API (Application Program Interface)** +응용 프로그램 간 상호 작용을 가능하게 하는 인터페이스 + +
+ +{/* 3. 피라미드 이미지 */} +![솔루션 특징 피라미드 그림](/assets/images/pyramid.png) + +{/* 4. 특징 박스 */} +
+ +**하나의 S/W에서 협업, 정보확인, 현장상황 반영이 가능합니다.** + +1. **쉽고, 편리한 User 중심** +2. **협업 및 의사소통 강화** +3. **Project별 맞춤형 생산** +4. **시공 현장상황 반영 가능** + +
+ +
+ +
+{/* 2분할 컨테이너 끝 */} \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Solution Engn SW 슬라이드.mdx b/samples/src/content/docs/Civil DX/Solution Engn SW 슬라이드.mdx new file mode 100644 index 0000000..ad78fc2 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Solution Engn SW 슬라이드.mdx @@ -0,0 +1,300 @@ +--- +title: Solution Engn. S/W(슬라이드) +sidebar: + order: 2 + hidden: true + +--- + +{/* 스타일 커스텀: 100% 폭 사용 및 최적화된 레이아웃 */} + + +
+ + {/* 1. 상단 제목 */} +
+

Solution Engn. S/W

+
+ + {/* 2. 메인 콘텐츠 (좌우 2분할) */} +
+ + {/* [왼쪽 패널] 표 (100% 원본 내용) */} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분(Commercial) Package Program(System) Solution S/W
고객
(분야)
+ Customer
+ - 구매자, 사용자 (상품, 제품 등)
+ - 이용자 (서비스, 구독 등) +
+ Client
+ - 발주자 (건설, 엔지니어링 등)
+ - 의뢰자 (법률, 회계, 자문 등) +
정의 + - 특정 기능/서비스 제공을 위해 미리 구성
+ - 사용자가 직접 사용하는 기성 제품화된 S/W +
+ - 주어진 상황/목적에 대한 해결책
+ - 고객(의뢰인)의 요구를 충족하는 맞춤형 S/W +
특징 + - 업무 프로세스 전반이 완성형
+ - 기성품, 변경 불가 (API로만 추가)
+ - 예) ERP 패키지, AutoCAD, Midas +
+ - 특정 목적 수행 (H/W, S/W, 기술)
+ - 커스터마이징 가능 (맞춤형)
+ - 기능/모듈 추가로 시스템 확장 가능 +
장점 + - 비용 효율적, 즉시 사용 가능
+ - 검증된 안정성 및 신뢰성
+ - 설치 및 사용이 간편 +
+ - 비즈니스 문제 해결을 위한 맞춤 개발
+ - 고객 요구사항 상세 반영
+ - 유연하고 확장성이 뛰어남 +
단점 + - 특정 요구사항에 딱 맞지 않음
+ - 불필요한 기능이 많을 수 있음
+ - 경쟁 우위 확보가 어려움 +
+ - 개발 비용 및 시간 소요
+ - 유지보수 비용이 높음
+ - 초기 안정성/신뢰도가 낮을 수 있음 +
+
+
+ + {/* [오른쪽 패널] 이미지 및 설명 (원본 내용 유지) */} +
+ + {/* 1. 상단 섹션: 구조도 + 용어설명 (세로 배치) */} +
+ 시스템 구조도 그림 + +
+
+ ✅ System Program
+ H/W와 응용 프로그램을 연결하며, 기본 시스템 운영 지원 (OS, KERNEL 등) +
+
+ ✅ Expert System
+ 토목 분야 Project 별 성과 제작 / 생산할 수 있는 전용 S/W (설계, 공정관리 시스템) +
+
+ ✅ Firmware
+ H/W에 내장되어 작동을 제어하고 S/W의 통신 지원 +
+
+ ✅ API (Application Program Interface)
+ 응용 프로그램 간 상호 작용을 가능하게 하는 인터페이스 +
+
+
+ + {/* 2. 하단 섹션: 피라미드 + 특징박스 (가로 배치) */} +
+ {/* 이미지 (크게) */} + 솔루션 특징 피라미드 그림 + + {/* 텍스트 박스 */} +
+ + 하나의 S/W에서 협업, 정보확인, 현장상황 반영이 가능합니다. + +
    +
  1. 쉽고, 편리한 User 중심
  2. +
  3. 협업 및 의사소통 강화
  4. +
  5. Project별 맞춤형 생산
  6. +
  7. 시공 현장상황 반영 가능
  8. +
+
+
+ +
+ +
+ + {/* 3. 하단 결론 바 (원본 내용) */} +
+ 결론: 엔지니어링 지식과 기술을 통합한 맞춤형 플랫폼인 Solution Engn. S/W 개발이 궁극적 목표이다. +
+ +
\ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/Solution Engn SW.mdx b/samples/src/content/docs/Civil DX/Solution Engn SW.mdx new file mode 100644 index 0000000..d3a6942 --- /dev/null +++ b/samples/src/content/docs/Civil DX/Solution Engn SW.mdx @@ -0,0 +1,63 @@ +--- +title: Solution Engn. S/W +sidebar: + order: 2 + hidden: true +--- + +## 패키지 vs 솔루션 S/W 비교 + +| 구분 | (Commercial) Package Program | (System) Solution S/W | +| :--- | :--- | :--- | +| **고객
(분야)** | **Customer**
- 구매자, 사용자 (상품, 제품 등)
- 이용자 (서비스, 구독 등) | **Client**
- 발주자 (건설, 엔지니어링 등)
- 의뢰자 (법률, 회계, 자문 등) | +| **정의** | - **특정 기능/서비스 제공**을 위해 미리 구성
- 사용자가 직접 사용하는 기성 제품화된 S/W | - **주어진 상황/목적에 대한 해결책**
- 고객(의뢰인)의 요구를 충족하는 맞춤형 S/W | +| **특징** | - 업무 프로세스 전반이 완성형
- **기성품**, 변경 불가 (API로만 추가)
- 예) ERP 패키지, AutoCAD, Midas | - 특정 목적 수행 (H/W, S/W, 기술)
- **커스터마이징** 가능 (맞춤형)
- 기능/모듈 추가로 시스템 확장 가능 | +| **장점** | - 비용 효율적, 즉시 사용 가능
- 검증된 안정성 및 신뢰성
- 설치 및 사용이 간편 | - 비즈니스 문제 해결을 위한 맞춤 개발
- 고객 요구사항 상세 반영
- 유연하고 확장성이 뛰어남 | +| **단점** | - 특정 요구사항에 딱 맞지 않음
- 불필요한 기능이 많을 수 있음
- 경쟁 우위 확보가 어려움 | - 개발 비용 및 시간 소요
- 유지보수 비용이 높음
- 초기 안정성/신뢰도가 낮을 수 있음 | + + +
+
+
+ + +![시스템 구조도 그림](/assets/images/structure.png) + + +## 시스템 구성 요소 + +- **System Program**: H/W와 응용 프로그램을 연결하며, 기본 시스템 운영 지원 (OS, KERNEL 등) +- **Expert System**: 토목 분야 Project 별 성과 제작 / 생산할 수 있는 전용 S/W (설계, 공정관리 시스템) +- **Firmware**: H/W에 내장되어 작동을 제어하고 S/W의 통신 지원 +- **API (Application Program Interface)**: 응용 프로그램 간 상호 작용을 가능하게 하는 인터페이스 + +## 솔루션 특징 + + +
+
+
+ +![솔루션 특징 피라미드 그림](/assets/images/pyramid.png) + + + +
+ +## 협업/생산 포인트 + +**하나의 S/W에서 협업, 정보확인, 현장상황 반영이 가능합니다.** + +1. **쉽고, 편리한 User 중심** +2. **협업 및 의사소통 강화** +3. **Project별 맞춤형 생산** +4. **시공 현장상황 반영 가능** + +
+ +--- + +
+

결론

+ 엔지니어링 지식과 기술을 통합한 맞춤형 플랫폼인 Solution Engn. S/W 개발이 궁극적 목표이다. +
diff --git a/samples/src/content/docs/Civil DX/index.md b/samples/src/content/docs/Civil DX/index.md new file mode 100644 index 0000000..15de97f --- /dev/null +++ b/samples/src/content/docs/Civil DX/index.md @@ -0,0 +1,19 @@ +--- +title: Civil DX 소개 +sidebar: + order: 1 +prev: false +children_order: + - BIM과 DX의 이해 + - 국내 건설 DX의 현주소 + - DX와 SW + - Engn. SW + - 건설산업 DX의 핵심요소 + - BIM기반 건설사업관리 + - BIG Room + - "!Solution Engn SW" + - "!Solution Engn SW 슬라이드" + +--- + +Civil DX 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/01. GIS·BIM 복합 시스템 구축.mdx b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/01. GIS·BIM 복합 시스템 구축.mdx new file mode 100644 index 0000000..a9ffc00 --- /dev/null +++ b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/01. GIS·BIM 복합 시스템 구축.mdx @@ -0,0 +1,7 @@ +--- +title: GIS·BIM 복합 시스템 구축 +sidebar: + order: 0 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/02. 인프라시설의 3D 정보모델 생성.mdx b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/02. 인프라시설의 3D 정보모델 생성.mdx new file mode 100644 index 0000000..9156657 --- /dev/null +++ b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/02. 인프라시설의 3D 정보모델 생성.mdx @@ -0,0 +1,7 @@ +--- +title: 인프라시설의 3D 정보모델 생성 +sidebar: + order: 1 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/03. Process 혁신과 Products 개선.mdx b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/03. Process 혁신과 Products 개선.mdx new file mode 100644 index 0000000..014c66d --- /dev/null +++ b/samples/src/content/docs/Civil DX/건설산업 DX의 핵심요소/03. Process 혁신과 Products 개선.mdx @@ -0,0 +1,7 @@ +--- +title: Process 혁신과 Products 개선 +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/01. 국내 건설정책 추진현황.mdx b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/01. 국내 건설정책 추진현황.mdx new file mode 100644 index 0000000..98387d8 --- /dev/null +++ b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/01. 국내 건설정책 추진현황.mdx @@ -0,0 +1,255 @@ +--- +title: 정부 DX정책 추진현황(슬라이드 4:6) +sidebar: + order: 6 +tableOfContents: false +--- + + + +
+ + {/* 메인 컨테이너 */} +
+ + + {/* ================================================================================== */} + {/* 🟠 [왼쪽 40%] - 너비는 좁아졌지만 "왼쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 1. 건설 정책 로드맵 및 목표 +

+ + {/* 내용 */} +
+
    +
  • 디지털전환(DX)을 통한 건설산업의 **국가 신성장 동력** 재도약
  • +
  • 스마트건설 도입 및 디지털전환을 위한 **국가 R&D 및 정책**추진
  • +
+
+ +
+ 건설산업DX 정책 로드맵 +

+ *[사진 1] 건설산업DX 정책 로드맵* +

+
+ + {/* 핵심 요약 */} +
+
ℹ️ 핵심 요약
+
    +
  • 정부는 건설산업의 디지털 전환을 지속적으로 추진하고 있으며 현재는 디지털화(BIM), 자동화(OCS)를 목표로 삼고있다.
  • +
+
+ +
+ + + {/* ================================================================================== */} + {/* 🟢 [오른쪽 60%] - 너비는 넓어졌지만 "오른쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 2. 건설산업 BIM 기본 지침 [국토교통부, 2020] +

+ + {/* 내용 */} +
+

+ **정부 BIM 도입 개요 (건설산업 BIM 기본지침)** + * **비전**: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약 + * **목표**: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화 + * **기대 효과**: + * **비용/공기**: 건설 비용 감소 및 기간 단축 + * **품질/안전**: 설계·시공 오류 최소화, 프로젝트 리스크 저감 + * **협업**: 협업과 의사소통 강화, 건설정보 통합관리 +

+ +

+ 3. 스마트 건설 활성화 방안 [국토교통부, 2022] +

+ + {/* 내용 */} +
+

+ **스마트 건설 활성화 방안 주요내용** + | 구분 | 주요 내용 | + | :--- | :--- | + | **BIM**
(Building Information Modeling) | **건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구**
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함 | + | **OSC**
(Off-Site Construction) | **탈현장 건설 (공장 제작 시공)**
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식 | + +

+
+ +
+ + + + + +
+ +
+
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/02. DX의 실태.mdx b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/02. DX의 실태.mdx new file mode 100644 index 0000000..0f88a0e --- /dev/null +++ b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/02. DX의 실태.mdx @@ -0,0 +1,285 @@ +--- +title: DX도입 배경(슬라이드6:4) +sidebar: + order: 5 +tableOfContents: false +--- + + + +{/* 👇 슬라이드 컨테이너: 높이를 화면 크기에서 [제목+여백]만큼 뺀 값으로 자동 계산 */ +/* calc(100vh - 140px) : 140px은 상단 시스템 제목과 헤더가 차지하는 대략적인 높이입니다. */ +} +
+ + {/* 본문 영역 (6:4 분할) */} +
+ + {/* 🟢 [왼쪽 60%] */} +
+ +

+ 1. 건설산업의 낮은 생산성 +

+ +
+

+ * **건설산업** 생산성 성장률은 **1%**, 제조업(**3.6%**) 대비 **심각한 정체** 상태. + + + * 국내 건설기업의 **노동 생산성**또한 **제조업의 53.2%** 수준에 불과함. + + + * **건설산업**은 **효율성 혁신 지체**로, 여전히 전통적인 **노동 집약적 생산 방식**에 머물러 있음. + +
+
+

+ + + +
+ +

+ 2. 디지털화와 건설산업의 현재 +

+ +
+

+ * 세계적으로 산업별 **디지털화 수준과 생산성은 정비례**함. + + * 건설산업의 디지털화 지수는 **농업보다도 낮은 최하위권**에 머물러 있음. + + * 디지털 전환을 위한 **노력 부족**과 건설산업에 맞는 **디지털 기술 부족**이 그 원인. + + * 디지털 기술이 발전한 현재, 생산성 혁신을 위해 **건설산업 전반의 디지털 전환(DX)** 이 필요. +

+ + + +
+ +{/* ================= [핵심 요약] 박스 ================= */} +
+ {/* 제목 부분 */} +
+ 핵심 요약 +
+ + {/* 내용 부분 */} +
    +
  • + 건설산업은 디지털전환을 통해 Process의 혁신과 + Products의 변화를 일으켜야 한다. +
  • +
+
+ +
+ + {/* 🟠 [오른쪽 40%] */} +
+ + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 1] 국내외 건설산업 생산성 추이 (출처: McKinsey / 한국은행)*
+

+ +
+
+ + + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 2] 산업별 디지털화 지수 비교 (출처: McKinsey 보고서, 2018)*
+

+ +
+ +
+ +
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/03. 글로벌 기준의 관점에서 바라본 국내 엔지니어링.mdx b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/03. 글로벌 기준의 관점에서 바라본 국내 엔지니어링.mdx new file mode 100644 index 0000000..fbd121a --- /dev/null +++ b/samples/src/content/docs/Civil DX/국내 건설 DX의 현주소/03. 글로벌 기준의 관점에서 바라본 국내 엔지니어링.mdx @@ -0,0 +1,7 @@ +--- +title: 글로벌 기준의 관점에서 바라본 국내 엔지니어링 +sidebar: + order: 2 +--- + +🚧 **현재 작성 중인 페이지입니다.** \ No newline at end of file diff --git a/samples/src/content/docs/guides/getting-started.md b/samples/src/content/docs/guides/getting-started.md new file mode 100644 index 0000000..3d4d54a --- /dev/null +++ b/samples/src/content/docs/guides/getting-started.md @@ -0,0 +1,165 @@ +--- +title: 콘텐츠 작성 표준 가이드 +description: Civil Engineering Lab 콘텐츠 작성 표준 가이드 +sidebar: + order: 1 +prev: false +next: false +--- + +--- + + +본 문서는 **Civil Engineering Lab**의 자료를 작성할 때 준수해야 할 **기능적 규칙**과 **내용 작성 가이드**를 정의합니다. 모든 작성자는 이 기준을 따라 문서를 작성해 주시기 바랍니다. + +--- + +## 1. 디렉토리 + + +### C.E.L 구조에 대한 내용(상단탭/우측 카테고리/서브카테고리) + +--- + +## 2. 본문 구조 및 목차 + +본문의 구조는 **헤더(Headings)** 태그(`##`)를 통해 결정됩니다. 헤더를 올바르게 작성해야 **우측 목차**가 자동으로 생성되어 열람자가 내용을 쉽게 파악할 수 있습니다. + +### 2.1 문서 설정 + +문서의 **가장 첫 줄**에는 반드시 페이지의 정보를 담은 프론트매터(Frontmatter)를 작성해야 합니다. + +```yaml +--- +title: 페이지 제목 # 화면 최상단 및 좌측 메뉴에 표시 +sidebar: + order: 10 # 좌측 메뉴 순서 (숫자가 낮은 순서대로 표시됨) +--- +``` +
+### 2.2 제목 및 목차 계층 구조 + +우측 목차(On this page)는 **H2(`##`)부터 H3(`###`)까지** 수집하여 표시합니다. 문서의 구조를 쉽게 파악할 수 있도록 **번호 매기기**를 권장하며, 각 헤더의 역할과 목차 표시 여부는 아래와 같습니다. + +| 마크다운 | 레벨 | 번호 규칙 | 목차 표시 | 역할 | +| :--- | :--- | :--- | :---: | :--- | +| `#` | **H1** | (사용 금지) | **X (미표시)** | **문서 제목** (Frontmatter `title`로 대체) | +| `##` | **H2** | **1.**, **2.** | **O (1단계)** | **대주제** (가장 큰 챕터) | +| `###` | **H3** | **1.1.**, **1.2.** | **O (2단계)** | **중주제** (하위 섹션) | +| `####` | **H4** | **1.1.1.** | **O (3단계)** | **소주제** (본문 내 상세 설명용) | + + +:::danger[작성 금지 사항] +1. **`#` (H1) 사용 금지**: 페이지 제목은 자동으로 생성되므로 본문에 쓰지 않습니다. +2. **단계 건너뛰기 금지**: `##`(1.) 없이 바로 `###`(1.1.)을 쓰면 목차 구조가 깨집니다. +::: + +
+**제목 구조 예시** +```markdown +## 1. DX에 대한 인식 (H2) + +### 1.1 국내 인식 (H3) + +#### 1.1.1 발주처 (H4) + +``` + +
+### 2.3 문단 및 줄 바꿈 + +마크다운에서는 엔터 키 한 번으로는 줄이 바뀌지 않습니다. 상황에 따라 아래 두 가지 방법을 구분해서 사용하세요. + +* **문단 나누기** : 내용의 호흡이 바뀔 때는 **빈 줄(Enter 2번)** 을 넣어 확실하게 띄웁니다. +* **단순 줄 바꾸기** : 같은 문단 안에서 줄만 바꿀 때는 문장 끝에 **공백 2칸(Space bar)** 을 입력합니다. +
+**문단 바꿈 작성 예시** +```markdown +1. 엔터를 한 번만 쳤을 때 (줄바꿈 X) +윗줄 내용입니다. +아랫줄 내용입니다. +-> 결과: 한 줄로 쭉 이어져서 나옵니다. + +2. 문단을 나눌 때 (Enter 2번) +윗줄 내용입니다. + +아랫줄 내용입니다. +-> 결과: 위아래 간격이 넓게 벌어집니다. +``` +
+**줄바꿈 작성 예시** +```markdown +1. 줄만 바꿀 때 (Space 2번) +윗줄 내용입니다. (여기 뒤에 공백 2칸 있음) +아랫줄 내용입니다. +-> 결과: 간격 없이 바로 아랫줄로 내려갑니다. +``` +
+### 2.4 목록 +내용을 나열할 때는 기호나 숫자를 사용하여 가독성을 높일 수 있습니다. + +- 순서 없는 목록 : - (하이픈) 또는`*`(별표)를 사용합니다. +- 순서 있는 목록 : `1.`과 같이 숫자와 점을 사용합니다.(제목과 달리 본문 크기로 적용됩니다.) +- 하위 목록(들여쓰기) : `Tab`키를 눌러 들여쓰기 합니다. + +
+**[목록 작성 예시]** +```markdown +1. 주요 공정 (Space 2번) + - (Tab) 터파기 + - (Tab) 기초 타설 +``` +
+### 2.4 주제 구분 +내용의 흐름이 크게 바뀌거나 섹션을 시각적으로 분리할 때 사용합니다. + +* **사용법**: 빈 줄에 하이픈 3개(`---`)를 입력합니다. +* **사용처**: `##`등 내용이 바뀔 때 사용합니다 `---`이후에 `
`을 넣어 주제간 공백을 둡니다. +* **주의사항**: 위아래로 **빈 줄**을 두어야 선이 깔끔하게 그려집니다. + +#### 📝 작성 예시 + +```markdown +이전 주제에 대한 설명이 끝났습니다. + +--- +(가로선이 생기며 내용이 분리됩니다) + +여기서부터는 새로운 주제입니다. + +--- +``` +--- +
+ +## 3. 시각 자료 및 수식 + +### 이미지, 링크, 표, 수식 등에 대한 설명 + +#### Math / KaTeX 사용법 + +- 인라인 수식: $E = mc^2$ +- 블록 수식: + + $$ + \int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi} + $$ + +복잡한 매크로나 패키지는 KaTeX에서 지원되지 않을 수 있으니, 렌더링이 깨지면 대체 표기나 단순화된 수식을 권장합니다. + + + +--- + +## 4. 강조 및 확장 컴포넌트 + +### 안내 박스, 카드, 아코디언 등 작성 기능에 대한 설명 + + +--- + +## 5. 문체 및 용어 + +### 작성 표준, 용어 표기 원칙, 특수문자 기호 사용 규칙 등 + + diff --git a/samples/src/content/docs/guides/numbered-headings.md b/samples/src/content/docs/guides/numbered-headings.md new file mode 100644 index 0000000..905e52e --- /dev/null +++ b/samples/src/content/docs/guides/numbered-headings.md @@ -0,0 +1,34 @@ +--- +title: Numbered Headings 테스트 문서 +description: numberedHeadings 동작을 검증하기 위한 테스트 픽스처 문서 +sidebar: + order: 3 +numberedHeadings: true +--- + +## 개요 + +이 문서는 E2E 테스트에서 본문 헤딩 번호와 TOC 번호 노출을 검증하기 위한 기준 문서입니다. + +## 사용법 + +### 프론트매터 설정 + +문서 frontmatter에 `numberedHeadings: true`를 추가하면 H2~H4 헤딩에 번호가 부여됩니다. + +### 번호 규칙 + +H2는 `1.`, `2.` 형식으로 증가하고 하위 헤딩은 상위 번호를 이어받아 계층적으로 증가합니다. + +#### 깊이 리셋 규칙 + +새로운 H2가 시작되면 H3/H4 카운터는 초기화됩니다. + +## 운영 팁 + +테스트에서 번호 문자열을 하드코딩할 때는 실제 문서 구조 변경과 함께 항상 갱신해야 합니다. + +## 검토 체크리스트 + +- 본문 H2~H4에 `data-heading-number` 속성이 적용되는지 확인합니다. +- TOC에 동일한 계층 번호가 표시되는지 확인합니다. diff --git a/samples/src/content/docs/guides/slug-usage.md b/samples/src/content/docs/guides/slug-usage.md new file mode 100644 index 0000000..a72fee7 --- /dev/null +++ b/samples/src/content/docs/guides/slug-usage.md @@ -0,0 +1,60 @@ +--- +title: Slug 설정 및 사용 방법 +description: 문서의 URL 경로(Slug)를 설정하고 사용하는 방법에 대한 가이드입니다. +slug: guides/slug-usage +--- + +# Slug 설정 및 사용 방법 + +이 문서는 Starlight 프로젝트에서 문서의 URL 경로인 Slug를 설정하고 관리하는 방법을 설명합니다. + +## 1. 개요 + +Slug는 문서가 웹사이트에서 접근 가능한 URL의 경로를 의미합니다. 예를 들어, `https://example.com/guides/slug-usage`에서 `guides/slug-usage`가 Slug에 해당합니다. + +본 프로젝트에서는 두 가지 방식으로 Slug를 생성합니다: +1. **자동 생성 (기본값):** 파일명과 폴더 구조를 기반으로 자동으로 생성됩니다. +2. **수동 설정 (Frontmatter):** 문서의 상단(Frontmatter)에 명시적으로 지정하여 사용합니다. + +## 2. 자동 Slug 생성 규칙 + +프로젝트 설정(`astro.config.mjs`)에 포함된 플러그인이 파일 저장 시 자동으로 Slug를 계산하여 주입합니다. + +* **변환 규칙:** + * 파일명의 확장자(`.md`, `.mdx`)는 제거됩니다. + * 숫자 접두사(예: `01. `, `02-`)는 정렬 용도이므로 URL에서 제외됩니다. + * 공백, 점(.), 특수문자는 하이픈(`-`)으로 변환되거나 제거됩니다. + * 모든 문자는 소문자로 변환됩니다. + +* **예시:** + * 파일 경로: `src/content/docs/Civil DX/01. 소개.md` + * 자동 생성 Slug: `civil-dx/소개` + +## 3. 수동으로 Slug 설정하기 + +특정 URL을 사용하고 싶다면 문서 상단의 Frontmatter 영역에 `slug` 속성을 직접 작성하면 됩니다. + +```md +--- +title: 나의 문서 제목 +slug: my-custom-url-path +--- +``` + +위와 같이 설정하면 파일의 위치나 이름과 관계없이 `https://도메인/my-custom-url-path`로 접근하게 됩니다. + +> **주의:** 자동 생성 플러그인은 `slug` 필드가 이미 존재하면 덮어쓰지 않습니다. 수동으로 설정한 값이 우선순위를 가집니다. + +## 4. 링크 사용 방법 + +다른 문서에서 링크를 걸 때는 설정된 Slug를 절대 경로로 사용하세요. + +```md +[문서 바로가기](/civil-dx/소개) +[커스텀 문서](/my-custom-url-path) +``` + +## 5. 문제 해결 + +* **404 오류:** 링크한 Slug가 정확한지 확인하세요. 자동 생성된 Slug가 예상과 다를 수 있으므로, 해당 MD 파일을 열어 Frontmatter에 주입된 `slug` 값을 확인하는 것이 좋습니다. +* **Slug 중복:** 서로 다른 파일이 동일한 Slug를 가지면 빌드 오류가 발생할 수 있습니다. 수동 설정 시 고유한 값을 사용하세요. diff --git a/samples/src/content/docs/guides/가이드/00. 작성 가이드.mdx b/samples/src/content/docs/guides/가이드/00. 작성 가이드.mdx new file mode 100644 index 0000000..4bacedf --- /dev/null +++ b/samples/src/content/docs/guides/가이드/00. 작성 가이드.mdx @@ -0,0 +1,492 @@ +--- +title: 콘텐츠 작성 표준 가이드 +sidebar: + order: 0 +--- + + +본 문서는 **Civil Engineering Lab**의 자료를 작성할 때 준수해야 할 **기능적 규칙**과 **내용 작성 가이드**를 정의합니다. 모든 작성자는 이 기준을 따라 문서를 작성해 주시기 바랍니다. + +--- + +## 1. 개요 및 작성 표준 +**C.E.L**의 기본 구조 및 통일된 콘텐츠를 만들기 위해 콘텐츠 작성시 지켜야 하는 사항을 설명합니다. + +### 1.1 디렉토리 구조 및 파일명 + +C.E.L은 폴더 구조가 곧 **카테고리**가 되는 방식을 따릅니다. + +**폴더 구조도** +```text +src/ +├── assets/ +│ └── images/ # [이미지 저장소] +│ +└── content/ + └── docs/ # [문서 저장소] .mdx 파일은 여기에 위치합니다 + ├── 작성 가이드.mdx + ├── Civil DX/ # [상위 탭] 콘텐츠를 구분하는 가장 큰 범주입니다. + │ ├── BIM,DX의 이해/ # 폴더를 만들면 '카테고리'가 됩니다 + │ │ ├── 01. 개념 정의.mdx # 각 콘텐츠는 파일형태로 작성/저장됩니다. + │ │ └── 02. DX의 목표.mdx + │ ├── Civil DX 소개/ + └── 기반기술/ +``` + +**계층별 명명 규칙** + +* **상위 탭 (1단계 폴더)** + * `docs/` 바로 아래에 위치하는 폴더입니다. + * 사이드바의 가장 큰 탭이 되며, **이름(한글/영문)** 으로만 작성합니다. (번호 X) + * 예시: `Civil DX`, `기반기술` + +* **카테고리 (2단계 폴더)** + * 상위 탭 아래에 위치하는 폴더입니다. + * 관련된 문서들을 묶어주는 그룹 역할을 하며, **이름(한글/영문)** 으로만 작성합니다. + * 예시: `BIM,DX의 이해`, `Civil DX 소개` + +* ** 콘텐츠 (파일)** + * 실제 내용이 담긴 `.mdx` 파일입니다. + * 하나의 파일은 하나의 주제를 다루며, **이름(한글/영문)** 으로만 작성합니다. + * 예시: `개념 정의.mdx`, `DX의 목표.mdx` + +
+ +### 1.2 문체 및 용어 + +콘텐츠의 객관성과 신뢰도를 높이기 위해, 감정을 배제한 **평어체(설명조)** 형식을 사용합니다. 여러 작성자가 작성하더라도 마치 한 사람이 쓴 것처럼 일관성을 유지하는 것이 목표입니다. + +**문체 가이드** + +* **1. 문장 끝맺음 (종결어미)** + * 모든 문장은 **'~다', '~한다', '~된다'**로 명확하게 끝맺습니다. + * 존댓말(~입니다, ~해요)이나 구어체(~죠, ~네요)는 사용하지 않습니다. + * **Bad**: 버튼을 누르면 설정이 완료돼요. / 완료됩니다. + * **Good**: 버튼을 눌러 설정을 완료한다. + +* **객관적 서술 (No 추측)** + * 개인적인 의견이나 불확실한 추측(~인 것 같다, ~보인다)은 지양합니다. + * 근거에 기반하여 단정적인 어조를 사용합니다. + * **Bad**: A 방식이 더 효율적인 것 같다. + * **Good**: A 방식이 시간 단축 측면에서 더 효율적이다. + +* **간결한 문장** + * 한 문장이 2줄을 넘어가지 않도록 짧게 끊어서 작성합니다. + +**용어 표기 원칙** + +* **전문 용어 표기** + * 문서에서 처음 등장하는 핵심 용어는 **'한글(영문/약어)'** 형태로 병기합니다. + * 이후 반복될 때는 약어만 사용해도 무방합니다. + * *예시*: 처음에는 **디지털 전환(DX)** 으로 표기하고, 이후에는 **DX**로 표기. + +* **외래어 표기** + * 널리 통용되는 외래어는 한글 표기를 원칙으로 하되, 괄호 안에 원어를 적어 명확히 합니다. + * 단, 메뉴명이나 코드 변수는 영문 그대로 작성합니다. + * *예시*: **데이터베이스(Database)**, **인터페이스(Interface)** + * *예시*: `config.json` 파일, `User` 클래스 + +**작성 예시 비교** + +| 구분 | 잘못된 예시 (Bad) ❌ | 올바른 예시 (Good) ✅ | +| :--- | :--- | :--- | +| **어조** | BIM은 정말 중요한 기술입니다. | BIM은 건설 산업의 핵심 기술이다. | +| **지시** | 여기서 저장 버튼을 누르세요. | 저장 버튼을 눌러 변경 사항을 저장한다. | +| **용어** | Data를 관리하는 게 중요해요. | 데이터(Data) 관리의 중요성이 강조된다. | + +--- + +
+ +## 2. 본문 구조 및 목차 + +본문의 구조는 **헤더(Headings)** 태그(`##`)를 통해 결정됩니다. 헤더를 올바르게 작성해야 **우측 목차**가 자동으로 생성되어 열람자가 내용을 쉽게 파악할 수 있습니다. + +### 2.1 문서 설정 + +문서의 **가장 첫 줄**에는 반드시 페이지의 정보를 담은 프론트매터(Frontmatter)를 작성해야 합니다. + +```yaml +--- +title: 페이지 제목 # 화면 최상단 및 좌측 카테고리에 표시 +sidebar: + order: 10 # 좌측 카테고리 순서 (숫자가 낮은 순서대로 표시됨) +--- +``` + +### 2.2 제목 및 목차 계층 구조 + +우측 목차(On this page)는 **H2(`##`)부터 H3(`###`)까지** 수집하여 표시합니다. 문서의 구조를 쉽게 파악할 수 있도록 **번호 매기기**를 권장하며, 각 헤더의 역할과 목차 표시 여부는 아래와 같습니다. + +| 마크다운 | 레벨 | 번호 규칙 | 목차 표시 | 역할 | +| :--- | :--- | :--- | :---: | :--- | +| `#` | **H1** | (사용 금지) | **X (미표시)** | **문서 제목** (Frontmatter `title`로 대체) | +| `##` | **H2** | **1**, **2** | **O (1단계)** | **대주제** (가장 큰 챕터) | +| `###` | **H3** | **1.1**, **1.2.** | **O (2단계)** | **중주제** (하위 섹션) | +| `####` | **H4** | **1.1.1**, **1.1.2** | **O (3단계)** | **소주제** (본문 내 상세 설명용) | + + +:::danger[작성 금지 사항] +1. **`#` (H1) 사용 금지**: 페이지 제목은 자동으로 생성되므로 본문에 쓰지 않습니다. +2. **단계 건너뛰기 금지**: `##`(1.) 없이 바로 `###`(1.1.)을 사용하면 목차 구조가 틀어집니다. +::: + +
+**[제목 구조 예시]** +```markdown +## 1. DX에 대한 인식 (H2) + +### 1.1 국내 인식 (H3) + +#### 1.1.1 발주처의 인식 (H4) + +``` + + +
+### 2.3 문단 및 줄 바꿈 + +마크다운으로 콘텐츠 작성시 엔터키 한 번으로는 줄이 바뀌지 않습니다. 상황에 따라 아래 두 가지 방법을 구분해서 사용하세요. + +* **문단 나누기** : 내용의 호흡이 바뀔 때는 **빈 줄(Enter 2번)** 을 넣어 확실하게 띄웁니다. +* **단순 줄 바꾸기** : 같은 문단 안에서 줄만 바꿀 때는 문장 끝에 **공백 2칸(Space bar)** 을 입력합니다. +
+**[문단 바꿈 작성 예시]** +```markdown +1. 엔터를 한 번만 쳤을 때 (줄바꿈 X) +윗줄 내용입니다. +아랫줄 내용입니다. +-> 결과: 한 줄로 쭉 이어져서 나옵니다. + +2. 문단을 나눌 때 (Enter 2번) +윗줄 내용입니다. + +아랫줄 내용입니다. +-> 결과: 위아래 간격이 넓게 벌어집니다. +``` +
+**[줄바꿈 작성 예시]** +```markdown +1. 줄만 바꿀 때 (Space 2번) +윗줄 내용입니다. (여기 뒤에 공백 2칸 있음) +아랫줄 내용입니다. +-> 결과: 간격 없이 바로 아랫줄로 내려갑니다. +``` +
+### 2.4 목록 +내용을 나열할 때는 기호나 숫자를 사용하여 가독성을 높일 수 있습니다. + +- 순서 없는 목록 : - (하이픈) 또는`*`(별표)를 사용합니다. +- 순서 있는 목록 : `1.`과 같이 숫자와 점을 사용합니다.(제목과 달리 본문 크기로 적용됩니다.) +- 하위 목록(들여쓰기) : `Tab`키를 눌러 들여쓰기 합니다. + +
+**[목록 작성 예시]** +```markdown +1. 주요 공정 (Space 2번) + - (Tab) 터파기 + - (Tab) 기초 타설 +``` +> **[적용 예시]** +> 1. 주요 공정 (Space 2번) +> - (Tab) 터파기 +> - (Tab) 기초 타설 +
+### 2.4 주제 구분 +내용의 흐름이 크게 바뀌거나 섹션을 시각적으로 분리할 때 사용합니다. + +* **사용법**: 빈 줄에 하이픈 3개(`---`)를 입력합니다. +* **사용처**: `##`등 내용이 바뀔 때 사용합니다 `---`이후에 `
`을 넣어 주제간 공백을 둡니다. +* **주의사항**: 위아래로 **빈 줄**을 두어야 선이 깔끔하게 그려집니다. + +**[가로선 작성 예시]** + +```markdown +이전 주제에 대한 설명이 끝났습니다. + +--- +(가로선이 생기며 내용이 분리됩니다) + +여기서부터는 새로운 주제입니다. + +--- +``` +--- +
+ + +## 3. 텍스트 서식 및 컴포넌트 + +글자의 모양을 꾸미거나(기초), 박스 및 탭 기능(심화)을 사용하여 콘텐츠를 보기 좋게 구성하고 강조하고 싶은 핵심을 쉽게 전달할 수 있습니다. + +### 3.1 기초 텍스트 서식 (Basic Formatting) + +가장 자주 사용되는 글자 강조 규칙입니다. 문장 내에서 중요한 키워드나 용어를 돋보이게 할 때 사용합니다. + +* **굵게 (Bold)**: 별표 2개(`**`)로 감쌉니다. 핵심 키워드를 강조할 때 사용합니다. +* **기울임 (Italic)**: 별표 1개(`*`)로 감쌉니다. 용어의 영문 표기나 이미지 캡션에 주로 사용합니다. +* **취소선 (Strikethrough)**: 물결표 2개(`~~`)로 감쌉니다. 변경 전 내용을 남겨두거나 삭제됨을 표현할 때 사용합니다. +* **인라인 코드 (Inline Code)**: 백틱 1개(`)로 감쌉니다. 문장 중간에 명령어, 파일명, 단축키, 변수명 등을 언급할 때 사용합니다. + +**[작성 예시]** + +```markdown +1. **스타일 예시** + 이것은 **매우 중요한 내용**입니다. + 이것은 *보조 설명(Comment)*입니다. + 이것은 ~~삭제된 내용~~입니다. + +2. **인라인 코드 예시** + 저장하려면 `Ctrl + S` 키를 누르세요. + 설정 파일은 `config.json`입니다. +``` +> **[적용 예시]** +> 1. **스타일 예시** +> 이것은 **매우 중요한 내용**입니다. +> 이것은 *보조 설명(Comment)* 입니다. +> 이것은 ~~삭제된 내용~~입니다. +> +> 2. **인라인 코드 예시** +> 저장하려면 `Ctrl + S` 키를 누르세요. +> 설정 파일은 `config.json`입니다. + +
+ +### 3.2 인용 및 특수기호 + +문단 전체를 인용하거나, 문법 기호를 글자 그대로 표현할 때 사용합니다 + +* **인용문**: 문장 맨 앞에 `>`(부등호)를 붙입니다. +* **위첨자/아래첨자**: ``(위), ``(아래)를 사용해서 단위나 화학식을 표현할 수 있습니다. +* **이스케이프**: 마크다운 기호(*,#,[ 등)를 서식 기능 없이 글자 그대로 보여주려면 앞에 역슬래시 `\`를 붙입니다. + + + + +**[작성 예시]** +``` +1. **인용문 예시** + > "디지털 전환은 선택이 아닌 필수다." + +2. **첨자 예시** + 아파트 면적은 84m2이고, 물의 성분은 H2O입니다. + +3. **이스케이프 예시** + 별표 기호를 강조 없이 쓰려면 \*\*이렇게\*\* 작성합니다. +``` + +> **[적용 예시]** +> 1. **인용문 예시** +> > "디지털 전환은 선택이 아닌 필수다." +> +>2. **첨자 예시** +> 아파트 면적은 84m2이고, 물의 성분은 H2O입니다. +> +>3. **이스케이프 예시** +> 별표 기호를 강조 없이 쓰려면 \*\*이렇게\*\* 작성합니다. + +
+ +### 3.3 텍스트 박스 및 강조 + +본문과 구분되는 박스를 만들거나, 문장 중간에 특정 단어를 강조할 때 사용합니다. + +* **한 단어 강조 (Inline)** +문장 중간에 짧은 내용을 강조할 때 사용합니다. 숫자 1 옆에 있는 **백틱(`)** 기호 1개로 감쌉니다. + * **용도**: 파일명, 메뉴 이름, 키보드 단축키, 강조하고 싶은 짧은 값 +
+* **박스 강조 (Block)** +여러 줄의 내용을 박스 안에 담아 보여줄 때 사용합니다. 위아래를 **백틱 3개(` ``` `)** 로 감쌉니다. + * **용도**: 파일의 전체 내용, 폴더 구조, 복사해야 할 텍스트 데이터 + * **제목 달기**: 첫 줄 언어 이름 뒤에 `title="제목"`을 적으면 박스 위에 이름표가 붙습니다. + +**[작성 예시]** + +```markdown +1. **한 단어 강조** + 설정 파일은 `config.txt`에 저장됩니다. 저장하려면 `Ctrl + S`를 누르세요. + +2. **박스 강조** +```text title="공사개요.txt" +프로젝트명: 교량 건설공사 +착공일: 2026-01-02 +담당자: 김토목 과장 +위치: 서울특별시 ... +``` + +> **적용 예시** +> 1. **한 단어 강조** +> 설정 파일은 `config.txt`에 저장됩니다. 저장하려면 `Ctrl + S`를 누르세요. +> +> 2. **박스 강조** +> ```text title="공사개요.txt" +> 프로젝트명: 교량 건설공사 +> 착공일: 2026-01-01 +> 담당자: 김토목 과장 +> 위치: 서울특별시 ... +> ``` + +
+ +### 3.4 안내 박스 + +글을 읽는 도중 독자의 주의를 환기시키거나, 팁을 줄 때 사용합니다. 별도의 설정 없이 바로 사용할 수 있습니다. + +* **사용법**: 내용의 시작과 끝을 `:::` (콜론 3개)로 감쌉니다. +* **종류**: `note`(참고), `tip`(팁), `caution`(주의), `danger`(경고) 4가지가 있습니다. +* **제목 설정**: `:::tip[여기에 제목 입력]` 형식으로 대괄호 안에 제목을 변경할 수 있습니다. + +**[작성 예시]** + +```markdown +:::note[참고] +이 내용은 본문과 직접적인 관련은 없지만 알아두면 좋은 배경지식입니다. +::: + +:::tip[작업 팁] +작성도중 결과물을 확인하는 습관을 들이세요. +::: + +:::caution[주의 사항] +파일명을 변경하면 기존에 연결된 링크가 끊어질 수 있습니다. +::: + +:::danger[삭제 경고] +이 버튼을 누르면 데이터가 영구적으로 삭제되며 복구할 수 없습니다. +::: + +``` +>**적용 예시** +>:::note[참고] +>이 내용은 본문과 직접적인 관련은 없지만 알아두면 좋은 배경지식입니다. +>::: +> +>:::tip[작업 팁] +>작성도중 결과물을 확인하는 습관을 들이세요. +>::: +> +>:::caution[주의 사항] +>파일명을 변경하면 기존에 연결된 링크가 끊어질 수 있습니다. +>::: +> +>:::danger[삭제 경고] +>이 버튼을 누르면 데이터가 영구적으로 삭제되며 복구할 수 없습니다. +>::: + +
+ +### 3.5 링크 + +문서 간의 연결이나 외부 참고 자료를 명시할 때 사용합니다. + +* **내부 링크 (Internal)**: 같은 사이트 내 다른 문서로 이동할 때는 **상대 경로**(`../`, `./`)를 사용합니다. 파일 확장자(`.mdx`)는 생략 가능합니다. +* **외부 링크 (External)**: 다른 웹사이트로 이동할 때는 **전체 URL**(`https://...`)을 입력합니다. + +**작성 예시** + +```markdown +* **내부 링크**: [BIM의 정의 보러가기](../01-basic-concept) +* **외부 링크**: [건설기술연구원 홈페이지](https://www.kict.re.kr) +``` +**적용 예시** +* **내부 링크**: [BIM의 정의 보러가기](../01-basic-concept) +* **외부 링크**: [건설기술연구원 홈페이지](https://www.kict.re.kr) + +
+--- +
+ +## 4. 시각 자료 및 수식 + +콘텐츠 작성시 필요한 이미지, 도표, 수식 등의 작성 규칙을 정의합니다. + +### 4.1 이미지 + +모든 이미지 파일은 프로젝트의 `assets/images/` 경로에 저장한 후 불러옵니다. + +* **파일 경로**: `/assets/images/[파일명]` +* **캡션**: 이미지 바로 아래 줄에 `기울임꼴`로 설명을 작성하여 캡션처럼 보이게 합니다. + +**작성 예시** + +```markdown +![BIM 성숙도 단계](assets/images//bim-maturity.png) +*<그림 1> BIM 성숙도 4단계 모델* +``` + +
+ +### 4.2 표 + +데이터를 행과 열로 정리하여 보여줄 때 사용합니다. 마크다운 표는 **파이프 기호(`|`)**로 칸을 나누고, **하이픈(`-`)**으로 헤더(제목줄)를 구분하여 작성합니다. + +#### 4.2.1 기본 구조 만들기 +표를 만드는 3단계 순서입니다. + +1. **기둥 세우기**: `|` (Shift + 원화표시/백슬래시) 기호를 사용하여 열을 구분합니다. +2. **헤더 구분하기**: 첫 번째 줄(제목) 바로 아래에 `| --- | --- |` 처럼 하이픈을 넣어 제목줄과 본문을 나눕니다. +3. **내용 채우기**: 그 아래로 데이터를 입력합니다. + +#### 4.2.2. 정렬 방식 설정 +두 번째 줄(구분선)에 **콜론(`:`)**을 어디에 찍느냐에 따라 글자 정렬이 달라집니다. + +* **왼쪽 정렬** (기본값): `:---` (콜론을 왼쪽에) → *텍스트에 적합* +* **가운데 정렬**: `:---:` (콜론을 양쪽에) → *짧은 단어, 상태 표시에 적합* +* **오른쪽 정렬**: `---:` (콜론을 오른쪽에) → *숫자, 금액 데이터에 적합* + +#### 4.2.3 표 안에서 줄바꿈 +표의 셀 안에서는 엔터키로 줄을 바꿀 수 없습니다. 반드시 **HTML 태그 `
`**를 입력해야 줄이 바뀝니다. + +**작성 예시** + +```markdown +| 구분(가운데) | 설명(왼쪽) | 비고(오른쪽) | +| :---: | :--- | ---: | +| **BIM** | 3차원 형상 정보 중심 | 100% | +| **DX** | 데이터 기반 의사결정
(프로세스 혁신) | 50% | + +``` +> **적용 예시** +> | 구분(가운데) | 설명(왼쪽) | 비고(오른쪽) | +> | :---: | :--- | ---: | +> | **BIM** | 3차원 형상 정보 중심 | 100% | +> | **DX** | 데이터 기반 의사결정
(프로세스 혁신) | 50% | + +
+ +### 4.3 수식 +공학 공식이나 변수는 **KaTeX** 문법을 사용하여 표현합니다. + +* **인라인 수식 (Inline)**: 문장 중간에 변수나 짧은 식을 넣을 때는 `$` (달러 기호 1개)로 감쌉니다. +* **블록 수식 (Block)**: 별도의 줄에 수식을 크게 강조할 때는 `$$` (달러 기호 2개)로 감쌉니다. + + +**KaTeX 수식** + +```markdown +인라인 수식: $E = mc^2$ +블록 수식: + $$ + \int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi} + $$ +``` +> **적용 예시** +> - 인라인 수식: $E = mc^2$ +> - 블록 수식: +> +> $$ +> \int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi} +> $$ + +
+ +``` +복잡한 매크로나 패키지는 KaTeX에서 지원되지 않을 수 있으니, +반영 후 오류가 발생하면 대체 표기나 단순화된 수식을 사용하기 바랍니다. +``` + +:::note[참고] +* [**LaTex 문법**](https://katex.org/docs/supported.html) + +::: + diff --git a/samples/src/content/docs/guides/가이드/00. 작성 샘플.mdx b/samples/src/content/docs/guides/가이드/00. 작성 샘플.mdx new file mode 100644 index 0000000..42af0fc --- /dev/null +++ b/samples/src/content/docs/guides/가이드/00. 작성 샘플.mdx @@ -0,0 +1,166 @@ +--- +title: 작성 샘플 +sidebar: + order: 02 +--- + +이곳에 페이지의 요약(Intro)을 작성한다. 이 문서는 작성 규칙을 준수하여 모든 기능을 포함한 샘플이다. 모든 문장은 평어체(~한다)로 작성한다. + +--- +
+ +## 1. 텍스트 구조 (H2) + +대주제 제목은 `##`을 사용한다. 대주제 위에는 반드시 구분선(`---`)을 넣고, 아래에는 `
` 태그를 넣어 간격을 띄운다. + +### 1.1 중주제 (H3) + +중주제 제목은 `###`을 사용한다. 중주제 사이에는 `
` 태그만 사용하여 간격을 띄운다. + +#### 1.1.1 소주제 (H4) + +소주제 제목은 `####`을 사용한다. 본문 내에서 구체적인 항목을 설명할 때 사용한다. + +
+ +### 1.2 문단 및 줄 바꿈 테스트 + +엔터키를 한 번만 치면 줄이 바뀌지 않고 이어서 나온다. +(지금 엔터 한 번 친 상태) 결과는 한 줄로 이어진다. + +엔터키를 두 번 치면 문단이 나뉜다. (빈 줄 생성) + +같은 문단 안에서 줄만 바꾸고 싶다면
+문장 끝에 `SPACE 2번`을 입력하거나 `
` 태그를 사용한다. + +--- +
+ +## 2. 텍스트 서식 (H2) + +### 2.1 글자 강조 + +* 핵심 키워드는 **굵게(Bold)** 처리한다. +* 영문 용어나 캡션은 *기울임(Italic)* 처리한다. +* 삭제된 내용은 ~~취소선(Strikethrough)~~ 처리한다. +* 파일명이나 단축키는 `인라인 코드(Inline Code)` 처리한다. + +
+ +### 2.2 인용 및 특수문자 + +> 인용문은 이렇게 작성한다. 정의나 참고 문헌을 표기할 때 유용하다. + +
+ +### 2.3 기타 + +* 위첨자: m2 +* 아래첨자: H2O +* 이스케이프: 별표 기호(\*)를 그대로 출력한다. + +--- +
+ +## 3. 목록 및 코드 박스 (H2) + +### 3.1 목록 스타일 + +순서 없는 목록은 하이픈(`-`)이나 별표(`*`)를 사용한다. +* 첫 번째 항목 +* 두 번째 항목 + * 들여쓰기 된 하위 항목 (Tab 사용) + +순서 있는 목록은 숫자(`1.`)를 사용한다. +1. 첫 번째 단계 +2. 두 번째 단계 + +
+ +### 3.2 코드 블록 + +파일의 내용이나 코드를 보여줄 때는 코드 블록을 사용한다. `title` 속성을 사용하여 파일명을 명시할 수 있다. +(별도 텍스트 박스처럼도 활용 가능) + +```python title="example.py" +# 여기에 코드를 작성한다. +def hello(): + print("Hello, World!") +``` + +``` +별도 텍스트 박스처럼 사용할 수 있다. +``` + +--- +
+## 4. 안내 박스 (H2) + +내용의 중요도에 따라 4가지 안내 박스를 구분하여 사용한다. 단순한 강조가 아닌, 정보의 성격에 맞는 박스를 선택해야 한다. + +:::note[참고] +본문 흐름과 직접적인 관련은 없지만, 독자가 알아두면 좋은 부가 정보나 배경 지식을 작성한다. +::: + +:::tip[팁] +작업 속도를 높이거나 효율적으로 처리할 수 있는 노하우, 숨겨진 기능 등을 작성한다. +::: + +:::caution[주의] +사용자가 흔히 실수할 수 있는 부분이나, 주의하지 않으면 오류가 발생할 수 있는 사항을 작성한다. +::: + +:::danger[위험] +데이터 영구 삭제, 시스템 중단 등 돌이킬 수 없는 결과를 초래할 수 있는 치명적인 작업을 경고한다. +::: + +--- +
+ +--- +
+ +## 5. 시각 자료 및 링크 (H2) + +### 5.1 이미지 + +이미지 파일은 반드시 `/assets/images/01.png` 경로에 저장한 후 불러온다. +이미지 하단에는 캡션을 작성하여 부가 설명을 덧붙인다. + +![디지털전환 그림](/assets/images/01.png) +*(사진1) 디지털 전환* + +
+ +### 5.2 링크 + +외부 자료나 내부 문서를 연결할 때는 링크 문법을 사용한다. + +* **링크**: [구글 홈페이지](https://google.com) (전체 URL 사용) + +--- +
+ +## 6. 표와 수식 (H2) + +### 6.1 표 (Table) + +데이터를 비교하거나 정리할 때는 표를 사용한다. 헤더의 콜론(`:`) 위치를 조절하여 정렬 방식을 결정한다. + +| 항목(가운데) | 설명(왼쪽) | 비고(오른쪽) | +| :---: | :--- | ---: | +| 데이터 1 | 텍스트 내용을 작성한다 | 비고를 작성한다 | +| 데이터 2 | 내용이 길어지면 `
` 태그를
사용하여 줄을 바꾼다 | | + +
+ +### 6.2 수식 (LaTeX) + +공학 공식이나 변수는 LaTeX 문법을 사용하여 표현한다. + +* **인라인 수식**: 문장 중간에 변수($x$)나 짧은 식($a+b=c$)을 넣을 때 사용한다. +* **블록 수식**: 복잡한 공식을 별도의 줄에 강조할 때 `$$`를 사용한다. + +$$ +x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} +$$ \ No newline at end of file diff --git a/samples/src/content/docs/guides/콘텐츠 게시 절차 가이드.mdx b/samples/src/content/docs/guides/콘텐츠 게시 절차 가이드.mdx new file mode 100644 index 0000000..aff9f80 --- /dev/null +++ b/samples/src/content/docs/guides/콘텐츠 게시 절차 가이드.mdx @@ -0,0 +1,113 @@ +--- +title: 콘텐츠 게시 절차 가이드 +description: CEL 웹사이트용 콘텐츠를 작성하고 반영하는 기본 절차를 안내합니다. +sidebar: + order: 0 +--- + +## 1. 작업 환경 준비 + +먼저 Gitea 계정을 준비하고 VS Code를 설치한 뒤, CEL 저장소를 로컬로 연결합니다. + +1. **Gitea 가입**: [https://gitea.hmac.kr](https://gitea.hmac.kr) 로 접속하여 `가입하기`를 누릅니다. +2. **사내 계정 로그인**: `Sign in with hmfamily`를 누르고 ID, PW를 입력합니다. (`BEPs`의 ID, PW와 동일합니다.) +3. **VS Code 설치**: [Visual Studio Code 공식 사이트](https://code.visualstudio.com/)에서 설치 파일을 내려받습니다. +4. **Gitea 저장소 연결**: VS Code에서 `Ctrl + Shift + P`를 누른 뒤 `Git: Clone`을 실행하고 저장소 주소를 입력한 다음, 프로젝트를 저장할 폴더를 선택합니다. + +:::note[참고] +저장소 주소: `https://gitea.hmac.kr/tech-planning/civil-engineering-lab.git` +::: + +![Gitea 가입 또는 사내 계정 로그인 화면](/assets/images/cel-manual-01.png) +
[Gitea 가입 또는 사내 계정 로그인 화면]
+ +![VS Code 공식 다운로드 페이지](/assets/images/cel-manual-02.png) +
[VS Code 공식 다운로드 페이지]
+ +![`Git: Clone` 명령을 선택하는 화면](/assets/images/cel-manual-03.png) +
[`Git: Clone` 명령을 선택하는 화면]
+ +## 2. 브랜치 생성 및 로컬 사이트 확인 + +공용 메인 브랜치에 바로 작업하지 않고, 개인 브랜치를 만든 뒤 로컬에서 결과를 먼저 확인합니다. + +1. **브랜치 생성**: 터미널에서 `git checkout -b 원하는-이름`을 실행합니다. (예시: `git checkout -b kim-contents`) +2. **Node.js 설치**: [Node.js 공식 사이트](https://nodejs.org/ko/download/)에서 `Windows 설치 프로그램(.msi)`를 눌러 설치 파일을 내려받습니다. +3. **패키지 설치**: 터미널 창(`Ctrl + J`)에 `npm install`을 입력하고 `Enter`를 눌러 설치를 진행합니다. +4. **로컬 실행**: 설치가 완료된 후 `npm run dev`를 입력하고 `Enter`를 누릅니다. 로컬호스트 주소가 나오면 `Ctrl`을 누른 채로 링크를 누릅니다. + +:::note[참고] +- Branch는 실제 운영 중인 사이트에 영향을 주지 않는 개인 작업 공간입니다. +- VS Code에서 작업한 콘텐츠는 로컬 사이트에서 실시간으로 확인할 수 있습니다. +::: + +:::caution[주의 사항] +1. `npm install` 실행 시 권한 관련 오류가 발생하면 터미널에 `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` 명령어를 입력합니다. +2. "정책을 변경하시겠습니까?" 같은 문구가 나오면 Y 를 입력하고 Enter를 누릅니다. +::: + +![터미널에서 개인 브랜치 생성](/assets/images/cel-manual-04.png) +
[터미널에서 개인 브랜치 생성]
+ +![`npm run dev` 실행 후 로컬 주소 확인](/assets/images/cel-manual-05.png) +
[`npm run dev` 실행 후 로컬 주소 확인]
+ +## 3. MDX 파일 작성 + +지정된 콘텐츠 폴더에 새 `mdx` 파일을 만들고 내용을 작성합니다. + +1. **폴더 확인**: 콘텐츠는 보통 `src/content/docs` 하위의 카테고리별 폴더에 작성합니다. +2. **파일 작성**: 해당 폴더에 `.mdx` 파일을 새로 만들고, 본문을 작성한 뒤 `Ctrl + S`로 저장합니다. 이미 작성된 .mdx 파일이 있다면 해당 폴더로 마우스 드래그 앤 드롭하여 추가할 수 있습니다. +3. **콘텐츠 확인**: 작성된 콘텐츠를 로컬 사이트에서 최종적으로 확인합니다. + +:::note[참고] +- 파일 형식은 CEL 웹사이트에 업로드되어 있는 콘텐츠 또는 콘텐츠 작성 가이드를 참고합니다. +- 수정사항은 로컬 사이트에 바로 반영됩니다. 만약 변경 내용이 보이지 않는 경우, `F5`로 새로고침을 하거나 터미널에서 `Ctrl + C`로 실행을 중지한 뒤 `npm run dev`를 다시 실행합니다. +::: + +![MDX를 작성하는 예시](/assets/images/cel-manual-06.png) +
[MDX를 작성하는 예시]
+ +## 4. Gitea에 콘텐츠 업로드 + +파일 수정이 끝나면 변경 파일을 스테이징하고 커밋 메시지를 작성한 뒤 Gitea에 업로드합니다. + +1. **소스 제어 열기**: 좌측 사이드바의 소스 제어(점 세개가 이어져 있는 아이콘)를 누릅니다. +2. **스테이징**: 변경 사항 중 업로드할 파일에서 `+` 버튼(변경 내용 스테이징)을 누릅니다. +3. **메시지 작성**: `스테이징된 변경 사항`에 원하는 파일이 들어갔는지 확인하고, 변경 내용 메시지창에 내용을 간단히 작성합니다. +4. **커밋 및 푸시**: 커밋 드롭다운에서 `커밋 및 푸시`를 선택합니다. + +:::note[참고] +변경 사항 전체를 업로드해야 하는 경우에는 `변경 사항` 영역에서 `+` 버튼을 눌러 전체를 스테이징합니다. +::: + +![변경 파일 확인 후 + 버튼을 눌러 스테이징](/assets/images/cel-manual-07.png) +
[변경 파일 확인 후 `+` 버튼을 눌러 스테이징]
+ +![메시지 작성 후 드롭다운 메뉴에서 `커밋 및 푸시` 선택](/assets/images/cel-manual-08.png) +
[메시지 작성 후 드롭다운 메뉴에서 `커밋 및 푸시` 선택]
+ +## 5. CEL 웹사이트에 반영 요청 + +사용자가 작업한 콘텐츠를 제출하고, 관리자에게 검토 및 승인을 요청합니다. + +1. **저장소 이동**: Gitea 로그인 후, 탐색에서 `tech-planning/civil-engineering-lab`를 눌러 저장소로 이동합니다. +2. **content-pr 실행**: `Actions` 탭에서 `content-pr.yml`을 선택하고 `Run Workflow`를 누릅니다. +3. **브랜치명 입력**: `콘텐츠 브랜치 이름`에 본인의 브랜치명을 입력하고, `Run Workflow`를 누릅니다. +4. **반영 요청**: 관리자에게 검토 및 승인 요청을하고, 승인이되면 CEL 웹사이트에서 최종 결과를 확인합니다. + +:::note[참고] +- 브랜치명 입력에서 나머지 설정은 기본값을 유지하면 됩니다. +- 워크플로우가 정상 완료되면 표시가 뜹니다. +::: + +![탐색에서 저장소 찾기](/assets/images/cel-manual-09.png) +
[탐색에서 저장소 찾기]
+ +![`content-pr` 실행](/assets/images/cel-manual-10.png) +
[`content-pr` 실행]
+ +![브랜치명 입력](/assets/images/cel-manual-11.png) +
[브랜치명 입력]
+ + diff --git a/samples/src/content/docs/index.mdx b/samples/src/content/docs/index.mdx new file mode 100644 index 0000000..755a3ca --- /dev/null +++ b/samples/src/content/docs/index.mdx @@ -0,0 +1,41 @@ +--- +title: Welcome to Civil Engineering Lab +description: Guide for Civil Engineering Tools and Labs +template: splash +hero: + tagline: Your hub for detailed documentation and guides. + image: + file: ../../assets/cell_temp.svg + actions: + - text: Get Started + link: /guides/getting-started/ + icon: right-arrow + variant: primary +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; + +## Next Steps + + +
+ + Edit `src/content/docs/index.mdx` to see this page change. + +
+
+ + Add Markdown or MDX files to `src/content/docs` to automatically generate new pages. + +
+
+ + Edit `astro.config.mjs` to change the site configuration. + +
+
+ + Learn more in [the Starlight Docs](https://starlight.astro.build/). + +
+
diff --git a/samples/src/content/docs/기반기술/Analysis-Split.mdx b/samples/src/content/docs/기반기술/Analysis-Split.mdx new file mode 100644 index 0000000..521858e --- /dev/null +++ b/samples/src/content/docs/기반기술/Analysis-Split.mdx @@ -0,0 +1,20 @@ +--- +title: 기반기술 - 분석 (2분할) +sidebar: + order: 2 +--- + +import SplitCard from '../../../components/SplitCard.astro'; + +# 데이터 분석 기술 + + +
+ ## 포인트 클라우드 처리 + + 3D 스캔 데이터를 효율적으로 가공하여 노이즈를 제거하고 객체를 인식합니다. +
+
+ Point Cloud +
+
diff --git a/samples/src/content/docs/기반기술/Experiment-Grid.mdx b/samples/src/content/docs/기반기술/Experiment-Grid.mdx new file mode 100644 index 0000000..fac68f8 --- /dev/null +++ b/samples/src/content/docs/기반기술/Experiment-Grid.mdx @@ -0,0 +1,21 @@ +--- +title: 기반기술 - 실험 (그리드) +sidebar: + order: 3 +--- + +import GridGallery from '../../../components/GridGallery.astro'; +import GridItem from '../../../components/GridItem.astro'; + +# 실험실 갤러리 + + + + +
성능 최적화 테스트 결과
+
+ + +
병렬 처리 효율 분석
+
+
diff --git a/samples/src/content/docs/기반기술/Research.mdx b/samples/src/content/docs/기반기술/Research.mdx new file mode 100644 index 0000000..44a7810 --- /dev/null +++ b/samples/src/content/docs/기반기술/Research.mdx @@ -0,0 +1,15 @@ +--- +title: 기반기술 - 연구 (텍스트) +sidebar: + order: 4 +next: false +--- + +# 최신 연구 동향 + +기반기술 섹션에서는 핵심 알고리즘과 데이터 처리 기술을 다룹니다. + +## 연구 분야 +1. 기하 알고리즘 +2. 대용량 데이터 처리 +3. 클라우드 컴퓨팅 diff --git a/samples/src/content/docs/기반기술/index.md b/samples/src/content/docs/기반기술/index.md new file mode 100644 index 0000000..cbd6e5c --- /dev/null +++ b/samples/src/content/docs/기반기술/index.md @@ -0,0 +1,8 @@ +--- +title: 기반기술 소개 +sidebar: + order: 1 +prev: false +--- + +기반기술 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/기반기술/샘플페이지.mdx b/samples/src/content/docs/기반기술/샘플페이지.mdx new file mode 100644 index 0000000..fc3f793 --- /dev/null +++ b/samples/src/content/docs/기반기술/샘플페이지.mdx @@ -0,0 +1,20 @@ +--- +title: 샘플페이지도 잘되는건가? +sidebar: + order: 6 +--- + +import SplitCard from '../../../components/SplitCard.astro'; + +# 데이터 분석 기술 + + +
+ ## 포인트 클라우드 처리 + + 3D 스캔 데이터를 효율적으로 가공하여 노이즈를 제거하고 객체를 인식합니다. +
+
+ Point Cloud +
+
diff --git a/samples/src/content/docs/기반기술/코어기술/index.md b/samples/src/content/docs/기반기술/코어기술/index.md new file mode 100644 index 0000000..3366630 --- /dev/null +++ b/samples/src/content/docs/기반기술/코어기술/index.md @@ -0,0 +1,7 @@ +--- +title: 기반기술 중 코어기술 소개 +sidebar: + order: 1 +--- + +기반기술 하위 코어기술 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/기반기술/코어기술/핵심코어기반기술/index.md b/samples/src/content/docs/기반기술/코어기술/핵심코어기반기술/index.md new file mode 100644 index 0000000..ef8e5de --- /dev/null +++ b/samples/src/content/docs/기반기술/코어기술/핵심코어기반기술/index.md @@ -0,0 +1,7 @@ +--- +title: 핵심코어기반기술 +sidebar: + order: 1 +--- + +기반기술 하위 코어기술 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/설계/Detail-Grid.mdx b/samples/src/content/docs/설계/Detail-Grid.mdx new file mode 100644 index 0000000..ceecc97 --- /dev/null +++ b/samples/src/content/docs/설계/Detail-Grid.mdx @@ -0,0 +1,21 @@ +--- +title: 설계 - 상세도 (그리드) +sidebar: + order: 2 +--- + +import GridGallery from '../../../components/GridGallery.astro'; +import GridItem from '../../../components/GridItem.astro'; + +# 상세도 모음 + + + + +
철근 배근 상세
+
+ + +
강구조 접합부 상세
+
+
diff --git a/samples/src/content/docs/설계/Drawing-Split.mdx b/samples/src/content/docs/설계/Drawing-Split.mdx new file mode 100644 index 0000000..e86697f --- /dev/null +++ b/samples/src/content/docs/설계/Drawing-Split.mdx @@ -0,0 +1,20 @@ +--- +title: 설계 - 도면 (2분할) +sidebar: + order: 3 +--- + +import SplitCard from '../../../components/SplitCard.astro'; + +# 도면 자동화 + + +
+ ## 평면도 생성 + + 데이터베이스에서 평면도를 자동 추출합니다. +
+
+ +
+
diff --git a/samples/src/content/docs/설계/Guide.mdx b/samples/src/content/docs/설계/Guide.mdx new file mode 100644 index 0000000..5a19e48 --- /dev/null +++ b/samples/src/content/docs/설계/Guide.mdx @@ -0,0 +1,10 @@ +--- +title: 설계 - 가이드 (텍스트) +sidebar: + order: 4 +next: false +--- + +# 설계 표준 가이드 + +설계 파트에서는 표준화된 도면 작성 요령을 안내합니다. diff --git a/samples/src/content/docs/설계/index.md b/samples/src/content/docs/설계/index.md new file mode 100644 index 0000000..5012578 --- /dev/null +++ b/samples/src/content/docs/설계/index.md @@ -0,0 +1,8 @@ +--- +title: 설계 소개 +sidebar: + order: 1 +prev: false +--- + +설계 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/시공/Process-Split.mdx b/samples/src/content/docs/시공/Process-Split.mdx new file mode 100644 index 0000000..76a5abc --- /dev/null +++ b/samples/src/content/docs/시공/Process-Split.mdx @@ -0,0 +1,20 @@ +--- +title: 시공 - 공정 (2분할) +sidebar: + order: 2 +--- + +import SplitCard from '../../../components/SplitCard.astro'; + +# 공정 관리 + + +
+ ## 4D 시뮬레이션 + + 시간 경과에 따른 공정 진행 상황을 시각화합니다. +
+
+ +
+
diff --git a/samples/src/content/docs/시공/Safety.mdx b/samples/src/content/docs/시공/Safety.mdx new file mode 100644 index 0000000..e92c563 --- /dev/null +++ b/samples/src/content/docs/시공/Safety.mdx @@ -0,0 +1,9 @@ +--- +title: 시공 - 안전 (텍스트) +sidebar: + order: 3 +--- + +# 시공 안전 수칙 + +현장 안전 관리 가이드라인입니다. diff --git a/samples/src/content/docs/시공/Site-Grid.mdx b/samples/src/content/docs/시공/Site-Grid.mdx new file mode 100644 index 0000000..43ff604 --- /dev/null +++ b/samples/src/content/docs/시공/Site-Grid.mdx @@ -0,0 +1,22 @@ +--- +title: 시공 - 현장 (그리드) +sidebar: + order: 4 +next: false +--- + +import GridGallery from '../../../components/GridGallery.astro'; +import GridItem from '../../../components/GridItem.astro'; + +# 현장 사진 + + + + +
콘크리트 타설 전경
+
+ + +
아침 안전 조회 및 체조
+
+
diff --git a/samples/src/content/docs/시공/index.md b/samples/src/content/docs/시공/index.md new file mode 100644 index 0000000..35d7640 --- /dev/null +++ b/samples/src/content/docs/시공/index.md @@ -0,0 +1,8 @@ +--- +title: 시공 소개 +sidebar: + order: 1 +prev: false +--- + +시공 섹션의 메인 페이지입니다. diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/01. DX 도입배경(슬라이드).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/01. DX 도입배경(슬라이드).mdx new file mode 100644 index 0000000..0f88a0e --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/01. DX 도입배경(슬라이드).mdx @@ -0,0 +1,285 @@ +--- +title: DX도입 배경(슬라이드6:4) +sidebar: + order: 5 +tableOfContents: false +--- + + + +{/* 👇 슬라이드 컨테이너: 높이를 화면 크기에서 [제목+여백]만큼 뺀 값으로 자동 계산 */ +/* calc(100vh - 140px) : 140px은 상단 시스템 제목과 헤더가 차지하는 대략적인 높이입니다. */ +} +
+ + {/* 본문 영역 (6:4 분할) */} +
+ + {/* 🟢 [왼쪽 60%] */} +
+ +

+ 1. 건설산업의 낮은 생산성 +

+ +
+

+ * **건설산업** 생산성 성장률은 **1%**, 제조업(**3.6%**) 대비 **심각한 정체** 상태. + + + * 국내 건설기업의 **노동 생산성**또한 **제조업의 53.2%** 수준에 불과함. + + + * **건설산업**은 **효율성 혁신 지체**로, 여전히 전통적인 **노동 집약적 생산 방식**에 머물러 있음. + +
+
+

+ + + +
+ +

+ 2. 디지털화와 건설산업의 현재 +

+ +
+

+ * 세계적으로 산업별 **디지털화 수준과 생산성은 정비례**함. + + * 건설산업의 디지털화 지수는 **농업보다도 낮은 최하위권**에 머물러 있음. + + * 디지털 전환을 위한 **노력 부족**과 건설산업에 맞는 **디지털 기술 부족**이 그 원인. + + * 디지털 기술이 발전한 현재, 생산성 혁신을 위해 **건설산업 전반의 디지털 전환(DX)** 이 필요. +

+ + + +
+ +{/* ================= [핵심 요약] 박스 ================= */} +
+ {/* 제목 부분 */} +
+ 핵심 요약 +
+ + {/* 내용 부분 */} +
    +
  • + 건설산업은 디지털전환을 통해 Process의 혁신과 + Products의 변화를 일으켜야 한다. +
  • +
+
+ +
+ + {/* 🟠 [오른쪽 40%] */} +
+ + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 1] 국내외 건설산업 생산성 추이 (출처: McKinsey / 한국은행)*
+

+ +
+
+ + + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 2] 산업별 디지털화 지수 비교 (출처: McKinsey 보고서, 2018)*
+

+ +
+ +
+ +
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(스크롤).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(스크롤).mdx new file mode 100644 index 0000000..ceb674e --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(스크롤).mdx @@ -0,0 +1,60 @@ +--- +title: 정부 DX정책 추진현황(스크롤) +sidebar: + order: 2 +--- +## 1. 건설 정책 로드맵 및 목표 + +정부는 **디지털 전환(DX)** 을 통해 정체된 건설산업을 **국가 신성장 동력**으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다. + +
+ +![건설 정책 로드맵](/assets/images/04.png) +*[사진 1] 건설산업DX 정책 로드맵* + +## 2. 건설산업 BIM 기본 지침 + +2020년 「**건설산업 BIM 기본지침**」, 2022년 「**건설산업 BIM 시행지침**」을 발의하여 건설산업의 **생산성 향상**과 **품질, 안전 및 친환경의 극대화**를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 **디지털 전환을 가속화**하고자 한다. + +**정부 BIM 도입 개요 (건설산업 BIM 기본지침)** +* **비전**: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약 +* **목표**: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화 +* **기대 효과**: + * **비용/공기**: 건설 비용 감소 및 기간 단축 + * **품질/안전**: 설계·시공 오류 최소화, 프로젝트 리스크 저감 + * **협업**: 협업과 의사소통 강화, 건설정보 통합관리 + +
+ +![건설산업 BIM 기본 지침](/assets/images/09.png) +*[사진 1] 건설산업 BIM 기본 지침 및 시행지침* + + +
+ +--- + +## 3. 스마트 건설 활성화 방안 + +2022년 7월 국토교통부가 발표한 '**스마트 건설 활성화 방안**'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다. + +**스마트 건설 활성화 방안 주요내용** +| 구분 | 주요 내용 | +| :--- | :--- | +| **BIM**
(Building Information Modeling) | **건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구**
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함 | +| **OSC**
(Off-Site Construction) | **탈현장 건설 (공장 제작 시공)**
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식 | + +![스마트 건설 활성화 방안](/assets/images/05.png) +*[사진 2] 스마트 건설 활성화 방안* + + +
+ +--- + + + + +:::note[핵심 요약] +* 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다. +::: diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(슬라이드).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(슬라이드).mdx new file mode 100644 index 0000000..98387d8 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/02. 정부 DX정책 추진현황(슬라이드).mdx @@ -0,0 +1,255 @@ +--- +title: 정부 DX정책 추진현황(슬라이드 4:6) +sidebar: + order: 6 +tableOfContents: false +--- + + + +
+ + {/* 메인 컨테이너 */} +
+ + + {/* ================================================================================== */} + {/* 🟠 [왼쪽 40%] - 너비는 좁아졌지만 "왼쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 1. 건설 정책 로드맵 및 목표 +

+ + {/* 내용 */} +
+
    +
  • 디지털전환(DX)을 통한 건설산업의 **국가 신성장 동력** 재도약
  • +
  • 스마트건설 도입 및 디지털전환을 위한 **국가 R&D 및 정책**추진
  • +
+
+ +
+ 건설산업DX 정책 로드맵 +

+ *[사진 1] 건설산업DX 정책 로드맵* +

+
+ + {/* 핵심 요약 */} +
+
ℹ️ 핵심 요약
+
    +
  • 정부는 건설산업의 디지털 전환을 지속적으로 추진하고 있으며 현재는 디지털화(BIM), 자동화(OCS)를 목표로 삼고있다.
  • +
+
+ +
+ + + {/* ================================================================================== */} + {/* 🟢 [오른쪽 60%] - 너비는 넓어졌지만 "오른쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 2. 건설산업 BIM 기본 지침 [국토교통부, 2020] +

+ + {/* 내용 */} +
+

+ **정부 BIM 도입 개요 (건설산업 BIM 기본지침)** + * **비전**: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약 + * **목표**: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화 + * **기대 효과**: + * **비용/공기**: 건설 비용 감소 및 기간 단축 + * **품질/안전**: 설계·시공 오류 최소화, 프로젝트 리스크 저감 + * **협업**: 협업과 의사소통 강화, 건설정보 통합관리 +

+ +

+ 3. 스마트 건설 활성화 방안 [국토교통부, 2022] +

+ + {/* 내용 */} +
+

+ **스마트 건설 활성화 방안 주요내용** + | 구분 | 주요 내용 | + | :--- | :--- | + | **BIM**
(Building Information Modeling) | **건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구**
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함 | + | **OSC**
(Off-Site Construction) | **탈현장 건설 (공장 제작 시공)**
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식 | + +

+
+ +
+ + + + + +
+ +
+
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX(스크롤0122).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX(스크롤0122).mdx new file mode 100644 index 0000000..9e15eaa --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX(스크롤0122).mdx @@ -0,0 +1,107 @@ +--- +title: 건설산업 DX의 올바른 이해 +sidebar: + order: 0 +--- + +## 1. 배경 및 현황 + +건설산업의 디지털 전환(DX)을 이야기할 때, **BIM(Building Information Modeling)** 과 **스마트 건설(Smart Construction)**, **DX(Digital Transformation) 의 개념을 혼용**해서 사용하곤 한다. 이로 인해 **DX의 명확한 방향성을 설정하는 데 어려움**을 겪거나, BIM의 도입이 곧 DX를 달성하는 것처럼 생각하기도 한다. + +따라서 건설산업의 DX를 살펴보기 앞서 **각 용어를 명확히 정의**하고 **상호 관계를 구분**하는 것은 **건설산업**이 나아가야 할 올바른 **디지털전환의 방향을 이해하는 첫걸음**이 된다. + + +--- +
+ +## 2 DX와 스마트건설 + +건설산업의 DX와 스마트건설은 상호 밀접한 연관은 있지만 동일한 개념은 아니다. 두 개념은 산업의 혁신을 바라보는 **관점**과 **범위**에서 차이가 있다. + + +### 2.1 디지털전환(DX) +>**DX(Digital Transformation)** 란 **디지털 기술과 도구를 활용**하여, 고객과 시장의 변화에 대응하며 새로운 가치를 창출하고 **산업생태계 및 업무수행방식(Process)을 혁신하는 과정과 그 결과**를 말한다. +> 이를통해 고객 가치를 재구성하고 비즈니스 모델을 변혁하여 **산업 전반의 방향을 재정립**하는 것이 핵심이다. +> +> *Digital Transformation, IBM Institute for Business Value, 2011* +> *What is Digital Transformation?, Agile Elephant, 2015* + +### 2.2 스마트건설(Smart Construction) +>전통적인 건설에 **디지털모델링·사물인터넷·인공지능·드론·로봇·플랫폼** 등 **혁신기술을 접목**하여 데이터 기반 엔지니어링, 건설장비 자동화, 가상건설, 안전관제 등을 구현하고 **건설 모든 단계의 디지털 전환**을 도모하여 건설 **생산성과 안전성을 획기적으로 향상**시키는 건설 방식을 말한다. +> +>*스마트건설 연구성과 총람, 국토교통과학기술진흥원, 2025* + +### 2.3 DX와 스마트건설의 관계 + +| 구분 | 디지털 전환 (DX) | 스마트 건설 (Smart Construction) | +| :---: | :--- | :--- | +| **성격** | **산업 패러다임 전환**
(Process 혁신) | **혁신기술 적용 및 개발**
(3D, 자동화 로봇, OSC 등) | +| **목적** | 산업생태계 및 업무수행방식 혁신 | 생산성 및 안전성 획기적 향상 | + +*스마트 건설 활성화 방안, 국토교통부, 2022* + +* 지향하는 목적의 차이는 존재하나 상호 **배타적인 개념은 아님** +* **DX**와 **스마트건설**은 **BIM**이라는 교집합을 통해 연결됨 +* **BIM**은 **스마트건설을 위한 혁신기술**이자 **건설산업의 DX**를 위해 필요한 디지털 도구이기 때문 + +![DX, 스마트건설 관계](/assets/images/01.png) +*[그림 1] DX와 스마트건설의 관계* + + + +--- +
+ +## 3. DX와 BIM + +**건설산업의 DX**는 **BIM(데이터와 도구)** 을 기반으로 **DX(혁신적 체계)** 를 구축하는 것으로 달성할 수 있다. 즉 **BIM은 DX를 달성하기 위한 기술적 도구**이다. + +### 3.1 건설정보모델링(BIM) +>**BIM (Building Information Modeling)** 은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 **디지털전환(DX) 체계**를 의미한다. +> +> *건설산업 BIM 기본지침, 국토교통부, 2020* +### 3.2. BIM vs DX 핵심 비교 + +| DX | 구분 | BIM | +| :--- | :---: | ---: | +| **BIM << DX**
(Engineering + Management 통합) | **범위** | **Only 3D**
(형상 구현 중심) | +| **제작 및 운영**(상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등] | **S/W** | **모델 제작용 상용 SW**
[Revit, Civil 3D, Navisworks, Autocad] | +| **근본적 문제의식을 통한 개선** | **프로세스** | **기존 2D 설계 방식 유지** | +| **공학 정보 및 콘텐츠 연계에 집중**
**도면, 수량, 시공계획 등 일식** | **성과품** | **3D 모델 중심**
**기존 성과품 유지** | +| **설계/시공 생산성 혁신**(개념의 재정립) | **활용** | **3D 모델에 의한 일반적 이해 향상** | +| **전 생애주기 활용 시스템** | **확장성** | **(설계/시공/운영) 분야별 단절** | +| **구체화(복잡) - 적극적/구체적 실현 방안** | **수행 개념** | **단순화(오류) - 수동적/집단적 동질화** | +| **적극적, 주체적인 기술 접목/융합** | **CIVIL + IT** | **소극적, 상용 기술에 의존** | +| **자체 수행 능력 - 지속가능성 확보** | **주체** | **S/W 제작사 판매 정책에 의존** | +| **차별화 및 경쟁력 확보, 해외 진출** | **발주처** | **평준화, 국내 중심** | +| **IT + CIVIL ENG 220명 운영 + 기술 개발** | **설계사** | **소규모 BIM팀 운영 + 단순교육에 집중** | +| **분야 확장 모델 및 시스템** | **시공사** | **국내 토목 소극적/해외 토목증가** | + +--- +
+ + +## 4. 건설산업 DX의 구현 +**건설산업의 DX**는 **디지털 트윈(DT)**, **BIM**, **GIS**의 기술 융합을 통해서만 실현 또는 구현가능하다. + + +특히 **인프라시설**의 **DT**는 실제 인프라시설 **위치정보(GIS)** 에 기반한 인프라시설의 **건설정보**가 포함된 **3D모델(BIM)** 을 생성하는 것이 필수적이다. + +> * **GIS (위치 정보)**: 인프라 시설의 지리적 데이터 제공 +> * **BIM (형상/내용 정보)**: 건설 정보 기반의 Process와 Products 제공 +> * **DT (통합 구현)**: 위 요소들을 가상 공간에 통합하여 시뮬레이션 및 제어 + + +![건설산업 디지털전환 개념도](/assets/images/그림5.png) +*[그림 2] 건설산업의 디지털전환* + + + +
+ +:::note[핵심 요약] +* **DX**는 **BIM**과 같은 **도구**를 기반으로 산업 전반의 **프로세스를 혁신**하는 **상위 개념**이다. +* **건설산업의 DX**는 **DT(구현) + BIM(정보) + GIS(위치)** 의 **기술 융합**을 통해서만 완성된다. +::: + + diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX1(슬라이드).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX1(슬라이드).mdx new file mode 100644 index 0000000..37e0ec2 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX1(슬라이드).mdx @@ -0,0 +1,248 @@ +--- +title: 건설산업의 DX 1 (슬라이드 6:4) +sidebar: + order: 3 +tableOfContents: false +--- + + + +
+ + {/* 메인 컨테이너 */} +
+ + + {/* ================================================================================== */} + {/* 🟢 [왼쪽 60%] */} + {/* ================================================================================== */} +
+ + {/* 1. 제목 (marginTop: '0' 추가로 높이 맞춤) */} +

+ 1. 개요 +

+ + {/* 2. 텍스트 내용 */} +
+

+ * **BIM(Building Information Modeling)** 과 **DX(Digital Transformation) 의 개념이 혼용** 사용됨 + * **각 용어의 정의를 재정립**하고 **상호 관계를 명확히 구분**하여야 함 + + + ### 1.1 건설산업 + + * 다양한 시설물을, 각 산업마다의 **광범위한 기술을 통합 및 융합**하여 만들어 내는 종합산업 + * 건설산업의 시설물 완성 목표 + * **최단기간**, **최소한의 비용** + * **편리**, **안전**, **우수한 성능** + + ### 1.2 디지털 전환 (DX) + + * 디지털 기술과 도구를 활용하여, 고객과 시장의 변화에 대응하며 새로운 가치 창출 + * **산업생태계 및 업무수행방식(Process)을 혁신하는 과정과 그 결과** + * 고객 가치를 재구성하고 새로운 비즈니스 모델을 창출하여 **산업 전반의 방향을 재정립** + + ### 1.3 건설정보모델링 (BIM) + + * 시설물의 생애주기 동안 발생하는 모든정보를 3D 모델 기반으로 통합 + * 건설정보와 절차를 표준화된 방식으로 상호 연계 + * 디지털 협업이 가능하게 하는 **디지털전환(DX) 체계**를 의미 + +

+ +
+ + + + {/* 4. 핵심 요약 */} +
+
ℹ️ 핵심 요약
+
    +
  • 건설산업의 DX는 DT(구현) + BIM(정보) + GIS(위치) 의 기술 융합을 통해서만 완성된다.
  • +
+
+ +
+ + + {/* ================================================================================== */} + {/* 🟠 [오른쪽 40%] */} + {/* ================================================================================== */} +
+ + {/* 1. 제목 (marginTop: '0' 추가) */} +

+ 2. 건설산업 DX의 의미 +

+ + {/* 2. 텍스트 내용 */} +
+

+ **건설산업의 DX**는 **디지털 트윈(DT)**, **BIM**, **GIS**의 기술 융합을 통해서만 실현 또는 구현가능하다. + 특히 **인프라시설**의 **DT**는 실제 인프라시설 **위치정보(GIS)** 에 기반한 인프라시설의 **건설정보**가 포함된 **3D모델(BIM)** 을 생성하는 것이 필수적이다. + * **GIS (위치 정보)**: 인프라 시설의 지리적 데이터 제공 + * **BIM (형상/내용 정보)**: 건설 정보 기반의 Process와 Products 제공 + * **DT (통합 구현)**: 위 요소들을 가상 공간에 통합하여 시뮬레이션 및 제어 +

+
+ + {/* 3. 이미지 & 캡션 */} +
+ 건설산업의 디지털전환 +

+ *[그림 1] 건설산업의 디지털전환* +

+
+ + + +
+ +
+
+ + +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX2(슬라이드).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX2(슬라이드).mdx new file mode 100644 index 0000000..fa8aa82 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/03. BIM-DX2(슬라이드).mdx @@ -0,0 +1,242 @@ +--- +title: 건설산업의 DX 2 (슬라이드 4:6) +sidebar: + order: 4 +tableOfContents: false +--- + + + +
+ + {/* 메인 컨테이너 */} +
+ + + {/* ================================================================================== */} + {/* 🟠 [왼쪽 40%] - 너비는 좁아졌지만 "왼쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 1. BIM과 DX의 관계 +

+ + {/* 내용 */} +
+
    + * **BIM(도구)** 로 **DX(혁신 체계)** 를 구축하여 건설산업의 디지털 전환 달성 + * **BIM (기술)**: 형상/속성 정보를 담은 3D모델로 **디지털 기초 데이터** 생성 + * **DX (체계)**: 생성데이터를 비즈니스 전반에 연동, **프로세스 혁신** 실현 +
+
+ +
+ 디지털 전환 개념도 +

+ *[사진 1] 디지털 전환 개념도* +

+
+ + {/* 핵심 요약 */} +
+
ℹ️ 핵심 요약
+
    +
  • **DX**는 **BIM**과 같은 **도구**를 기반으로 산업 전반의 **프로세스를 혁신**하는 **상위 개념**이다.
  • +
+
+ +
+ + + {/* ================================================================================== */} + {/* 🟢 [오른쪽 60%] - 너비는 넓어졌지만 "오른쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 2. BIM VS DX +

+ + {/* 내용 */} +
+

+ | BIM | 구분 | DX | + | :--- | :---: | ---: | + | **Only 3D**
(형상 구현 중심) | **범위** | **BIM << DX**
(Engineering + Management 통합) | + | **모델 제작용 상용 SW**
[Revit, Civil 3D, Navisworks, Autocad] | **S/W** | **제작 및 운영**(상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등] | + | **기존 2D 설계 방식 유지** | **프로세스** | **근본적 문제의식을 통한 개선** | + | **3D 모델 중심**
**기존 성과품 유지** | **성과품** | **공학 정보 및 콘텐츠 연계에 집중**
**도면, 수량, 시공계획 등 일식** | + | **3D 모델에 의한 일반적 이해 향상** | **활용** | **설계/시공 생산성 혁신**(개념의 재정립) | + | **(설계/시공/운영) 분야별 단절** | **확장성** | **전 생애주기 활용 시스템** | + | **단순화(오류) - 수동적/집단적 동질화** | **수행 개념** | **구체화(복잡) - 적극적/구체적 실현 방안** | + | **소극적, 상용 기술에 의존** | **CIVIL + IT** | **적극적, 주체적인 기술 접목/융합** | + | **S/W 제작사 판매 정책에 의존** | **주체** | **자체 수행 능력 - 지속가능성 확보** | + | **평준화, 국내 중심** | **발주처** | **차별화 및 경쟁력 확보, 해외 진출** | + | **소규모 BIM팀 운영 + 단순교육에 집중** | **설계사** | **IT + CIVIL ENG 220명 운영 + 기술 개발** | + | **국내 토목 소극적/해외 토목증가** | **시공사** | **분야 확장 모델 및 시스템** | +

+ + +
+ + + + + +
+ +
+
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/04. DX의 핵심목표 및 기대효과.mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/04. DX의 핵심목표 및 기대효과.mdx new file mode 100644 index 0000000..82a3bf1 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/04. DX의 핵심목표 및 기대효과.mdx @@ -0,0 +1,213 @@ +--- +title: DX의 목표와 필수요건 +sidebar: + order: 7 +--- + +## DX 목표 +
+ + +### 고객 편익 목표 + **안전과 품질** + * **안전성 제고** : 시설물의 요구성능 만족, 건설 및 운영중인 안전확보 + * **품질 향상** : copy & paste로 하향 평준화된 기존 성과물의 품질 향상 +
+ + **혁신과 효율** + * **신속,정확성 증진** : Analogue 기반 업무를 digital화 하는 Process 혁신 + * **비용저감, 부가가치 창출** : 건설비용 및 유지관리비 감소, 인력투입 최소화 등 생산성 향상 +
+ + **소통과 신뢰** + * **소통, 이해 원활** : 성과품과 Solution등의 사용 편리성, 협업 및 의사소통 강화 + * **신뢰, 투명성 강화** : 3D모델을 통한 오류 최소화 및 Claim 예방 +
+ + +![고객편익목표 그림](/assets/images/02.png) + +
+
+ +### 정책 목표 +
+![정책목표 그림](/assets/images/03.png) +
+
+ +
+ ✅ 공기/공사비
+ 30% 절감 +
+ +
+ ✅ 안전사고
+ 40% 감소 +
+ +
+ ✅ 국가 신성장
+ 동력 재도약 +
+ +
+ ✅ 고부가가치
+ 산업 전환 +
+ +
+ +## DX 성공을 위한 필수 요건 + +
+ + {/* 1. 기술 (Blue) */} +
+

+ 🛠️ 기술 (Digital) +

+ +
+
+ 건설산업·토목에 대한 깊은 기반 지식 +
    +
  • 건설 단계별 분야에서의 근본적인 이해와 지식 및 경험
  • +
  • 최신 토목 기술 트렌드와 표준 기준 등에 대한 높은 지식
  • +
+
+
+ 높은 S/W 기술 (Digital Technology) +
    +
  • 다양한 기술적 도구(S/W, H/W)와 Process의 효과적인 통합
  • +
  • 프로젝트 전반에 걸친 업무 프로세스의 연결 및 조율
  • +
+
+
+
+ + {/* 2. 사람 (Orange) */} +
+

+ 👥 사람 (역량) +

+ +
+
+ 분야별 전문지식 역량을 갖춘 기술자 +
    +
  • 엔지니어의 Know-how와 디지털 지식의 융합
  • +
  • 혁신적 사고방식과 창의적 문제 해결 능력
  • +
+
+
+ 디지털화 역량 및 개발경험 많은 개발자 +
    +
  • 다양한 Solution S/W를 개발할 수 있는 역량을 갖춘 Programmer
  • +
  • 사용자 중심의 생각과 시행 착오를 포함한 DX 수행 경험
  • +
+
+
+
+ + {/* 3. 여건 (Green) */} +
+

+ 🌏 여건 (환경) +

+ +
+
+ 받아들일 수 있는 사회·기업·제도 등의 여건 +
    +
  • 목표만 제시하는 지침이 아닌, 수행사례와 효과검증을 통한 시행
  • +
  • 기존 수행방식, 사고의 틀, 관습 등에 의한 접근 방식 탈피
  • +
+
+
+ 지속적·장기적 투자를 수행할 능력과 의지 +
    +
  • 기술 개발을 위한 대규모 투자 및 Process 혁신을 위한 지속적인 투자
  • +
  • 변화와 혁신을 통한 부가가치 창출을 위한 실행 의지와 실행력
  • +
+
+
+
+ +
+ +### 시행 주체별 필요 역량 및 이점 + +
+ + {/* 1. 발주자 (Client) - 청록색 */} +
+ {/* 헤더 */} +
+

👨‍💼 발주자

+ (실행 의지와 합리적 판단 역량 확보 후) +
+ {/* 내용 */} +
+
    +
  • 설계변경, 민원, 재작업, 소송 등의 사전 예방 및 최소화
  • +
  • 3D 모델을 통한 직관적 시각화로 품질 향상 및 안전성 제고
  • +
  • 건설단계별 상태에 대한 쉬운 이해로 관리 편의성 증진
  • +
  • 실무자와 발주자의 원활한 의사소통으로 오류 최소화
  • +
  • 행정서류의 자동 생성 및 최소화로 업무 생산성 향상
  • +
  • 디지털 환경 구축 후 건설정보 통합관리로 활용성 강화
  • +
  • 인프라시설 전 생애주기에 걸친 효율적 디지털 자산 관리
  • +
+
+
+ + {/* 2. 시공자 (Constructor) - 남색 */} +
+ {/* 헤더 */} +
+

👷‍♂️ 시공자

+ (기술투자와 운영 역량 확보 후) +
+ {/* 내용 */} +
+
    +
  • 설계/시공 오류 예방 및 의사소통으로 공사 Risk 최소화
  • +
  • 직관적 시각화로 안전성 제고 및 품질 향상
  • +
  • 중간태, 완성태 측량을 통한 시·공간적 관리의 편리성 향상
  • +
  • 체계적 공정 및 기성 관리로 신뢰성 확보 및 생산성 향상
  • +
  • 체계적 행정서류 감소를 통한 의사소통 강화
  • +
  • Model 활용을 통해 시공상세도 등의 관련도서 작성 용이
  • +
  • System 구축 시 품질·안전 등에 필요한 도서 작성 용이
  • +
+
+
+ + {/* 3. 설계자 (Designer) - 보라색 */} +
+ {/* 헤더 */} +
+

👨‍💻 설계자

+ (기술개발 투자에 의한 S/W 역량 확보 후) +
+ {/* 내용 */} +
+
    +
  • 직관적 시각화에 의한 업무협의 등에서 원활한 소통
  • +
  • 3D 모델 활용으로 설계 오류 최소화 및 Claim 예방
  • +
  • 설계 신뢰도 확보, 발주자 이익 기여로 상호신뢰 증진
  • +
  • 기술개발을 통한 기술력 보유 시 획기적 설계 생산성 향상
  • +
  • 다양한 성과물과 정보물 생산으로 추가적 부가가치 창출
  • +
  • 목적물 생산의 보조자에서 고부가가치 창출 산업으로 전환
  • +
  • 프로젝트 정보의 일관성 유지 및 관리를 통한 오류 최소화
  • +
+
+
+ +
+ + +{/* 하단 결론 메시지 */} +
+ * 고품질의 성과품, 비용 절감, 시간 단축, 의사소통 강화 등에 도움이 안되면 BIM/DX가 아니다. + * bIM과 DX의 시행주체는 얻을 수 있는 이점을 명확히 이해하고, 필요한 역량을 갖춘 후 시행해야만 그 효과를 기대할 수 있다. +
\ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/05. 국내 BIMDX 실태.mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/05. 국내 BIMDX 실태.mdx new file mode 100644 index 0000000..4f86233 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/05. 국내 BIMDX 실태.mdx @@ -0,0 +1,151 @@ +--- +title: 국내 BIM/DX 실태 +sidebar: + order: 6 +--- + +## 1. DX(BIM)에 대한 현장의 인식 + +--- + +### ① 기술 및 소프트웨어 이해도 +> **"무슨 말인지 잘 모르겠다, 어디까지 어떻게 해야 하는지 모르겠다"** + +* 기본지침, 시행지침 등 새롭게 알아야 할 게 너무 많다. +* 우리가 필요한 것은 쉽고 간단한 건데, 왜 이렇게 복잡하게 만들까? + +### ② 효과와 효율성 +> **"2D 설계 후 전환설계를 수행하는데 효과는 모르겠고, 효율은 낮다"** + +* 성과품 작성은 기존과 같게 하고, 추가 업무만 발생해 효율이 낮다. +* 결과적으로 큰 차이를 못 느끼겠고, 이런 노력이 정말 가치 있는 일이야? + +### ③ 인력 및 교육 +> **"수행 인력이 부족하고, 기존 직원들은 어떻게 교육해야 하나"** + +* 교육시간 손실로 일손이 더 필요해지고, 적응하는데도 시간이 걸린다. +* 여러 회사의 S/W별 사용법이 달라 새로운 S/W에 적응에 시간이 필요하다. + +### ④ 경제적 부담 +> **"S/W 구독료만 크게 발생되고, 비용 보전은 안 된다"** + +* 사용해야 할 S/W의 종류가 너무 많고 복잡한데 모두 필요한가? +* 모든 Project에 적용되는 것도 아닌데, 다수의 S/W 구독료를 내야 한다. + +### ⑤ 실용성 및 적용 +> **"실무적 사용에 의한 효율성 증진보다는 홍보, PQ용으로 사용한다"** + +* 구체적 적용에 의한 비용, 시간, 품질 등의 효과 사례가 없다. +* 지형, 선형, 도로, 교량 Model을 만드는 S/W가 모두 달라 효율성이 낮다. + +
+ +--- + +## 2. 주체별 대응 현황 (발주처 vs 업계) + +이러한 부정적 인식 속에서 발주처와 설계·시공 업계는 서로 다른 형태의 소극적 대응을 보이고 있다. + +### 🏛️ 발주처 반응 +발주처는 실질적인 효과보다는 **형식과 절차**를 강조하는 경향을 보인다. + +* **평준화** : 특성보다는 형식적 통일을 강조함 +* **보여주기** : 성과/활용보다 보고·홍보용에 치중함 +* **밀어붙이기** : 충분한 준비 없이 강제로 추진함 + +![발주처 반응](/assets/images/06.png) + +### 🏗️ 설계·시공업계 반응 +업계는 변화를 수용하기보다 **기존 방식을 고수하거나 회피**하려는 성향이 강하다. + +* **눈치보기** : 정책 동향과 분위기만 살핌 +* **시간끌기** : 기술·제도 미비를 핑계 삼음 +* **버티기** : 기존 방식에 고착돼 변화를 거부함 + +![업계 반응](/assets/images/07.png) +
+ +--- + +{/* 하단 결론 메시지 */} +
+ 국내 DX[BIM]는 실용성이 낮게 인식되고 있으며, 발주처와 업계 모두 소극적·형식적 대응에 머물고 있다. +
+ +--- + +## 3.정책 및 교육의 한계 + +--- + +### 정책 집행의 문제점 (근본 취지의 이해 부족) + +현재 건설 정책은 근본적인 취지에 대한 이해 없이, 형식적인 수행 능력과 보여주기식 성과에 치중되어 있다. + +#### ① 인정주의 정책 집행 +* 수행 능력이 없는 업체 선정 후 성과품의 수준을 낮추어 시행한다. +* 모든 설계사가 할 수 있다는 전제하에 정책을 시행한다. +* 발주처의 책임회피를 위한 제도로 운영된다. + +#### ② 적용 효과가 있는 사례도 없이 방침부터 만들어 시행 +* 시행 경험과 효과 검증도 없는 지침부터 만들고 보는 현실이다. +* BIM/DX 적용효과를 판단할 사례가 부족하다. +* 대부분 홍보 목적으로 적용한 사례로, 실제 투자 대비 효과가 없다. + +#### ③ 기술투자(R&D) 없는 성과 창출 기대 +* DX가 초기 PC 도입과 유사하다고 판단, CAD의 확장·발전된 형식으로 단순 BIM S/W만 구입하면 된다는 안일한 생각을 가지고 있다. +* 기술개발 투자 노력 없이 남들이 하는 대로 하면 된다는 착각에 빠져 있다. + +#### ④ 엔지니어링 S/W에 대한 개념 부재 +* 다양한 엔지니어링 S/W의 특성에 대한 깊은 이해 없이 범용 S/W를 선택한다. +* 비용 절감에 치우친 단기적 사용성 선택으로, 중·장기적 성과 기대가 곤란하다. +* 대형 Global S/W 회사에 대한 과도한 의존과 이에 예속되는 방침을 남발한다. + +
+ +--- + +### 수행 개념의 부재 (지속 투자 의지 부재) + +업계는 공학적 혁신보다는 기존의 타성에 젖어 근본적인 역할 변화를 회피하고 있다. + +#### ① 공학적 개념 정립 부재 +* BIM을 DX로 정의하고, 3D 모델 제작 S/W 사용에 예속되는 개념으로 이해한다. +* 인프라시설의 DX의 기본은 단순 모델이 아닌 위치기반 3D 모델(BIM)을 활용한 과정(Process)의 혁신이라는 개념이 부재하다. + +#### ② '본업 기술력 확보' 우선의 개념 부재 +* 깊은 기반지식 바탕의 기술이 축적된 자신만의 Manual, In-House S/W에 대한 중요성 및 필요성에 대한 이해가 부족하다. +* 자체 기술개발 없이 국내 발주처의 지침과 방침에만 의존한 낮은 기술력에 머물러 있다. + +#### ③ 근본적인 역할 회피 +* 엔지니어의 근본적인 역할인 과정의 혁신과 결과물의 변화에 대한 고민이 부재하다. +* 기술자가 직접 3D 모델을 만들고 계획을 수정하며 설계를 수행해야 하지만, 정작 모델 제작은 인건비가 낮은 전문업체에게 외주 처리한다. + +#### ④ 과거의 타성에 머무르고 있는 업계 +* 설계/감리/시공 임직원들의 디지털 무지와 전략적 무지가 만연하다. +* S/W 판매업체의 기능적 사용법을 BIM 교육으로 착각한다. +* 교육과 학습을 통한 인재양성보다는 타사 인력 빼오기에 집중한다. + +
+ +--- + +### 교육 및 도입의 현실적 한계 + +현재의 교육과 도입 방식은 창의적인 엔지니어링 역량 강화보다는 특정 도구의 기능 습득에 머물러 있다. + +![교육 및 도입 현황](/assets/images/08.png) + +* **BIM 교육 = Autodesk S/W 교육**: 특정 외산 소프트웨어 사용법 교육을 BIM 교육으로 동일시함. +* **단순 기능직 교육**: 창의적 학습과 문제 해결 능력 배양이 아닌, 단순 툴 조작법 위주의 교육. +* **현실적 요건 미고려**: 실무 환경과 현실적인 여건이 충분히 고려되지 않은 상태에서의 무리한 BIM 도입. +* **이해관계 상충**: 발주자, 설계자, 시공자 등 참여 주체 간의 이해관계가 달라 통합된 목표 설정이 어려움. + +
+ +--- + +{/* 하단 결론 메시지 */} +
+ 정책과 교육은 형식적 수준에 머무르고, 업계는 외산 S/W 의존과 단기 대응에서 벗어나지 못하고 있다. +
\ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/06. 건설산업의 향후 전망.mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/06. 건설산업의 향후 전망.mdx new file mode 100644 index 0000000..301c719 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/06. 건설산업의 향후 전망.mdx @@ -0,0 +1,72 @@ +--- +title: 건설산업의 향후 전망 +sidebar: + order: 7 +--- +## 1. BIM기반 도서작성 현황 및 S/W의 필요성 + +현재 건설산업의 BIM 도입 현황은 개념의 부재와 잘못된 접근 방식으로 인해 여러 한계점에 봉착해 있다. 이를 해결하기 위해서는 현장의 문제점을 직시하는 것부터 시작해야 한다. + +### ① 개념 및 방향성의 부재 +* **개념 부재**: BIM을 Digital Transformation(DX)의 개념이 아닌, CAD의 확장판으로 해석하여 3D를 그리는 수단 정도로만 인식한다. +* **잘못된 접근방식**: 단순 업무효율 증진을 위한 도구로만 인식하여, 기술자들이 도구로서 사용만 할 수 있도록 교육시키면 된다고 판단한다. +* **방향성 상실**: 대형 S/W 개발 및 판매회사에서 제시된 내용과 방향대로 따라함으로써, 국내는 자체적 목표설정 기능을 상실했다. +* **전제조건 오류**: 건축과 토목이 유사하다는 전제하에 Library를 활용하는 건축 수행 방식을 토목에도 동일하게 적용하려 한다. + +### ② 수행 주체와 방식의 혼란 +* **수행주체 혼란**: 학자, 발주처 중심으로 S/W 판매회사에서 제시한 기술수행 방식의 변화를 주도하며, 실제 실행주체인 기업과 기술자들은 기존의 방식을 고수하면서 눈치만 보는 실정이다. +* **수행방식 무지**: 기존 2D 설계의 결과가 옳다는 전제와 3D 설계를 수행/검토해본 경험이 없어, 전환설계의 개념으로 수행함으로써 비용과 시간이 추가로 소요되고 높은 수준의 품질확보가 불가하다. + +### ③ 기술 예속 및 인프라 미비 +* **외산S/W 기술예속**: 단순 외산 범용 S/W만 사용하면 BIM이 될 수 있을 것이라는 안일한 생각으로 접근하므로 외국 대형 S/W 회사에 기술예속이 가속화된다. +* **H/W 미비**: 도면작성 중심의 기존 설계방식과 동일한 개념으로 생각하여, 탁상용 개인 PC, Monitor 사용기반 정도에 머물러 있어 실무적용에 필요한 높은 수준의 모델 등의 표출은 한계가 있다. + +
+ +--- + +## 2. 엔지니어링 산업의 고부가가치 산업으로의 전환 + +단순한 도구 도입을 넘어, 건설산업이 고부가가치 산업으로 전환하기 위해서는 근본적인 체질 개선과 목표 설정이 필요하다. + + +### ✅ 핵심 목표 +* 고부가가치 산업 전환을 목표로 **전면 BIM 설계 도입** +* 디지털전환을 통해 **편리하고 직관적으로 업무 환경 개선** +* 프로세스를 혁신하여 **높은 수준의 성과물 생성**을 도움 + +### ✅ 필요한 노력 +> * 단순 반복되는 **노동집약형 업무 탈피** +> * 업무 본질에 대한 높은 이해를 바탕으로 **창의적 아이디어 발현** + +### ✅ 결론적 요구사항 +위 목표를 달성하기 위해 **건설산업의 디지털전환을 돕는 S/W 개발 및 지속적 고도화**가 필요하며, 이에 대한 충분한 **대규모 투자와 적극적인 동참**이 필수적이다. + +
+ +--- + +## 3. 구체적 실행 방안 및 요건 + +DX를 위한 전면 BIM 설계를 실현하기 위해서는 다음과 같은 구체적인 실행 방안과 제반 요건이 갖춰져야 한다. + +### 🛠️ 실행 방안 (Action Plan) +1. **요구사항 분석**: 디지털 전환을 통해 비즈니스 목표를 명확히 하고, 최종 사용자의 요구사항을 수집하여 S/W 기능을 정리함. +2. **S/W 개발**: 건설산업이 디지털전환이 되도록 하는 S/W를 만들고 지속해서 upgrade 및 update를 수행함. +3. **System 통합**: 기존 시스템과의 호환성을 분석하고 통합 솔루션을 개발하며, 시스템간의 데이터 통합을 위해 API로 데이터 흐름을 원활히 함. +4. **교육 / 피드백 및 개선**: 사용자 교육 프로그램 및 기술지원 체계를 구축하고, 지속적인 모니터링 & 기능개선 및 보안 업데이트를 수행함. + +### 📋 실행 요건 (Requirements) +* **인프라**: 디지털 기술(S/W, H/W)과 업무 Process의 통합능력 확보. +* **인력**: 건설단계 분야별 전문지식(설계, 시공, 유지관리 등) 보유 및 사용자 중심의 생각과 시행 착오를 포함한 DX 수행 경험. +* **조직문화**: 디지털 혁신에 대한 긍정적인 태도와 수용성 확보, 혁신적 사고방식과 창의적 문제 해결 능력 및 협업 환경 조성. +* **예산**: DX에 따른 비용 대비 효과 분석(ROI 분석)을 통해 지속적인 투자가치 평가. + +
+ +--- + +{/* 하단 결론 메시지 */} +
+ DX를 위한 전면 BIM설계가 추진되고 있으나, 이를 실현하기 위해서는 엔지니어링 지식과 기술을 통합한 맞춤형 S/W 개발이 반드시 필요하다. +
\ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/10. 개념 정의.mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/10. 개념 정의.mdx new file mode 100644 index 0000000..fda11b4 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/10. 개념 정의.mdx @@ -0,0 +1,55 @@ +--- +title: 개념 정의(이전작업) +sidebar: + order: 20 +--- +## 1. 기초 용어 정의 + +건설산업에서 BIM, DX를 이해하려면 각각의 용어가 무엇을 뜻하는지 명확히 구분하여야 한다. + +### 1.1 건설산업 + +수요자가 요구하는 다양한 시설물을, 각 산업마다의 **광범위한 기술을 통합 및 융합**하여 만들어 내는 종합산업으로, 목적 시설물의 품질에 대한 욕구를 충족 시키면서 **최단기간** 내에 **최소한의 비용**으로 **편리**하고 **안전**하며 **우수한 성능**의 **시설물을 완성**하는 것을 목표로 하는산업을 의미한다. + +### 1.2 BIM(building information modeling, 건설정보모델링) +BIM은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 **디지털전환(DX, Digital Transformation) 체계**를 의미한다. + +### 1.3 DX(digital Transformation, 디지털 전환) +**디지털 기술과 도구**를 활용하여, 고객과 시장의 변화에 대응하고 **새로운 가치를 창출**하며 산업생태계, 비지니스 모델(B.M) 및 업무수행 방식(Process)을 혁신하는 과정과 전환을 말한다. + +
+ + +![디지털전환 그림](/assets/images/01.png) + +--- + +
+## 2. BIM vs DX 비교 + +흔히 BIM과 DX를 혼용하여 사용하곤 한다. 하지만 BIM이 3D 형상 구현을 위한 도구적 성격이 강하다면, DX는 이를 기반으로 데이터와 프로세스 전반을 혁신하는 체계라는 점에서 **엄연히 다른 개념**이다. + +| BIM | 구분 | DX | +| :--- | :---: | :--- | +| **Only 3D** | **BIM/DX** | **BIM << DX** (ENG. + Management 포함) | +| **모델 제작용 상용 S/W**
[Civil 3D, Revit, Navisworks, Autocad] | **S/W** | **제작 및 운영** (상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등] | +| 기존 2D 설계방식 유지 | **프로세스** | **근본적 문제의식**을 통한 개선 | +| **3D 모델 중심**
기존 성과품 유지 | **성과품** | **공학 정보 및 콘텐츠 연계**에 집중
도면, 수량, 시공계획 등 일식 | +| 3D 모델에 의한 일반적 이해 향상 | **활용** | **설계/시공의 혁신** (개념의 재정립) | +| (설계/시공/운영) 분야별 단절 | **확장성** | **전 생애주기** 활용 시스템 | +| **단순화(오류)**
수동적/집단적 동질화 | **수행개념** | **구체화(복잡)**
적극/구체적 실현 방안 | +| 소극적, 상용 기술에 의존 | **CIVIL + IT** | **적극적**, 주체적인 기술 접목/융합 | +| S/W 제작사 판매 정책에 의존 | **주체** | **자체 수행능력** - 지속가능성 확보 | +| 평준화, 국내 중심 | **발주처** | **차별화 및 경쟁력 확보**, 해외 진출 | +| 소규모 BIM팀 운영 + 단순교육에 집중 | **설계사** | **IT + CIVIL ENG 220명 운영** + 기술 개발 | +| 국내 토목 소극적 / 해외 토목증가 | **시공사** | **분야 확장 모델 및 시스템** | + + + + + +--- +
+:::note + BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다. + ::: \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/11. 기본 개념 슬라이드.mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/11. 기본 개념 슬라이드.mdx new file mode 100644 index 0000000..d3f4dea --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/11. 기본 개념 슬라이드.mdx @@ -0,0 +1,291 @@ +--- +title: 기본 개념(슬라이드_이전작업) +sidebar: + order: 10 +--- + +{/* 스타일 커스텀: 슬라이드 레이아웃 적용 */} + + +
+ + {/* 1. 상단 제목 */} +
+

기본 개념

+
+ + {/* 2. 메인 콘텐츠 (좌우 2분할) */} +
+ + {/* [왼쪽 패널] BIM vs DX 비교표 */} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIM구분DX
Only 3DBIM/DXBIM << DX (ENG. + Management 포함)
모델 제작용 상용 S/W
[Civil 3D, Revit, Navisworks 등]
S/W제작 및 운영 (상용 + 전용 40~80개)
[Rhino, Blender] + [EG-BIM 등]
기존 2D 설계방식 유지프로세스근본적 문제의식을 통한 개선
3D 모델 중심
기존 성과품 유지
성과품공학 정보 및 콘텐츠 연계에 집중
도면, 수량, 시공계획 등 일식
3D 모델 이해 향상활용설계/시공의 혁신 (개념의 재정립)
분야별 단절확장성전 생애주기 활용 시스템
단순화(오류)
수동적/집단적 동질화
수행개념구체화(복잡)
적극적/구체적 실현 방안
소극적, 상용 기술 의존CIVIL+IT적극적, 주체적인 기술 접목/융합
S/W 판매 정책 의존주체자체 수행능력 - 지속가능성 확보
평준화, 국내 중심발주처차별화 및 경쟁력 확보, 해외 진출
소규모 팀 / 단순교육설계사IT + CIVIL ENG 220명 운영 + 기술 개발
국내 토목 소극적시공사분야 확장 모델 및 시스템
+
+
+ + {/* [오른쪽 패널] 정의(상단) + 이미지(하단) */} +
+ + {/* 1. 상단: 3가지 정의 (카드형) */} +
+ {/* 건설산업 */} +
+

🏗️ 건설산업

+

+ 다양한 기술을 융합하여 시설물을 완성하는 종합산업.
+ 목표: 최단기간, 최소비용, 편리하고 안전한 고성능 시설물 완성. +

+
+ + {/* BIM */} +
+

💻 BIM (건설정보모델링)

+

+ 생애주기 정보를 3D 모델 기반으로 통합.
+ 건설정보 표준화 및 디지털 협업이 가능하게 하는 디지털전환 체계. +

+
+ + {/* DX */} +
+

🚀 DX (디지털 전환)

+

+ 디지털 기술과 도구를 활용하여 새로운 가치를 창출하고, 산업생태계 및 업무수행 방식(Process)을 혁신하는 과정. +

+
+
+ + {/* 2. 하단: 이미지 박스 */} +
+ 디지털전환 그림 +
+ [그림] 디지털 전환(DX)의 개념적 흐름 +
+
+ +
+ +
+ + {/* 3. 하단 결론 바 */} +
+ BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다. +
+ +
\ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (4_6).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (4_6).mdx new file mode 100644 index 0000000..bba221c --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (4_6).mdx @@ -0,0 +1,145 @@ +--- +title: 슬라이드 템플릿(4:6) +sidebar: + order: 99 +tableOfContents: false +--- + + +
+ +
+ + {/* 🟠 [왼쪽 40%] 서브 영역 */} +
+ +

+ 1. 왼쪽(40%) 제목 +

+ + {/* 본문 내용 */} +
+

내용을 입력하세요.

+
+ + {/* 이미지 */} +
+ 설명 +
+ +
+ + + {/* 🟢 [오른쪽 60%] 메인 영역 */} +
+ +

+ 2. 오른쪽(60%) 제목 +

+ + {/* 본문 내용 */} +
+
    +
  • 내용을 입력하세요.
  • +
+
+ + {/* 이미지 */} +
+ 설명 +
+ + {/* 핵심 요약 박스 */} +
+
ℹ️ 핵심 요약
+
    +
  • 요약 내용을 입력하세요.
  • +
+
+ +
+ +
+
+ +{/* 👇 [기능] 이미지 팝업 스크립트 (수정 불필요) */} + +
×
+ \ No newline at end of file diff --git a/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (6_4).mdx b/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (6_4).mdx new file mode 100644 index 0000000..f46c913 --- /dev/null +++ b/samples/src/content/docs/작업폴더/콘텐츠 작업중/99 슬라이드 (6_4).mdx @@ -0,0 +1,145 @@ +--- +title: 슬라이드 템플릿(6:4) +sidebar: + order: 99 +tableOfContents: false +--- + + +
+ +
+ + {/* 🟢 [왼쪽 60%] 메인 영역 */} +
+ +

+ 1. 왼쪽(60%) 제목 +

+ + {/* 본문 내용 */} +
+
    +
  • 내용을 입력하세요.
  • +
+
+ + {/* 이미지 */} +
+ 설명 +
+ +
+ + + {/* 🟠 [오른쪽 40%] 서브 영역 */} +
+ +

+ 2. 오른쪽(40%) 제목 +

+ + {/* 본문 내용 */} +
+

내용을 입력하세요.

+
+ + {/* 이미지 */} +
+ 설명 +
+ + {/* 핵심 요약 박스 */} +
+
ℹ️ 핵심 요약
+
    +
  • 요약 내용을 입력하세요.
  • +
+
+ +
+ +
+
+ +{/* 👇 [기능] 이미지 팝업 스크립트 (수정 불필요) */} + +
×
+ \ No newline at end of file diff --git a/samples/src/content/sub/block/block01.astro b/samples/src/content/sub/block/block01.astro new file mode 100644 index 0000000..29ba67a --- /dev/null +++ b/samples/src/content/sub/block/block01.astro @@ -0,0 +1,84 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 블록/속성블록/외부참조(이미지)를 + 도면에 생성하고 통합 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : BLOCK
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  블록  >    블록 만들기  >  블록 통합 관리창 +
+
+
+
+ + +
+
+  + + + +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/block/block02.astro b/samples/src/content/sub/block/block02.astro new file mode 100644 index 0000000..cdf5736 --- /dev/null +++ b/samples/src/content/sub/block/block02.astro @@ -0,0 +1,100 @@ +--- +import { IMAGE_BASE_PATH, VIDEO_BASE_PATH } from '../config'; +import VideoModal from './../../../components/VideoModal.astro'; + +const videoModals = [ + { id: 'modal-add', videoSrc: `${VIDEO_BASE_PATH}/video/block_add.mp4` }, +]; +--- + +
+ +
+
+ +

+ 작업화면에서 객체를 선택하여  + 블록을 생성하고  + 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : BLOCK
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  블록  >    블록 만들기  >  블록 통합 관리창 +
+
+
+
+ + +
+
+  + +
    +
  • + +
  • + +
  • +
    +
    블록 LIST
    +
    현재 파일에 사용 가능한 블록의 LIST
    +
    블록의 이름과 설명으로 구성
    + +
    블록 선택
    +
    클릭으로 표시 여부 설정
    +
    마우스 우클릭으로 제거
    + +
    선택한 블록 미리보기
    + +
    선택한 블록 기본속성 수정
    +
    클릭 시 블록 기본속성 수정 가능
    +
    이름 : 블록의 이름
    +
    설명 : 블록에 대한 설명
    +
    레이어 : 블록이 속한 레이어
    +
    색상 : 블록을 구성하는 객체의 색상
    + +
    설정
    +
    삽입 시 블록 분해 허용 : 삽입 후 Explode 명령어 허용 여부 설정
    +
    뷰포트 스케일에 맞는 배율 적용(주석배율 적용) : 뷰포트 스케일에 맞게 블록 형상에 대한 스케일 조정 가능
    +
    외부참조 추가 시 삽입점 화면에서 직접지정 : 체크 해제시 0,0,0 좌표로 블록 삽입
    +
    +
  • +
+ +
+
+ + + {videoModals.map(modal => ( + + ))} +
+ + diff --git a/samples/src/content/sub/block/block03.astro b/samples/src/content/sub/block/block03.astro new file mode 100644 index 0000000..c91421f --- /dev/null +++ b/samples/src/content/sub/block/block03.astro @@ -0,0 +1,113 @@ +--- +import { IMAGE_BASE_PATH, VIDEO_BASE_PATH } from '../config'; +import VideoModal from './../../../components/VideoModal.astro'; + +const videoModals = [ + { id: 'modal-add', videoSrc: `${VIDEO_BASE_PATH}/video/atrbBlock_add.mp4` }, +]; +--- + +
+ +
+
+ +

+ 블록의 문자내용를 변경해가며 사용 할 수 있는  + 속성블록을 생성하고 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : BLOCK
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  블록  >    블록 만들기  >  블록 통합 관리창 +
+
+
+
+ + +
+
+  + +
    +
  • + +
  • + +
  • +
    +
    속성 블록 LIST
    +
    현재 파일에 사용 가능한 속성블록의 LIST
    +
    속성블록의 이름과 설명으로 구성
    + +
    속성 블록 선택
    +
    클릭으로 표시 여부 설정
    +
    마우스 우클릭으로 삭제
    + +
    속성 블록 삽입
    +
    1) 더블클릭 시 작업화면에 추가
    +
    2) 작업화면에 드래그&드롭
    + +
    선택한 블록 미리보기
    + +
    선택한 속성블록 기본속성 수정
    +
    클릭 시 속성블록 기본속성 수정 가능
    +
    이름 : 속성블록의 이름
    +
    설명 : 속성블록에 대한 설명
    +
    레이어 : 속성블록이 속한 레이어
    +
    색상 : 속성블록을 구성하는 객체의 색상
    + +
    설정
    +
    삽입 시 블록 분해 허용 : 삽입 후 Explode 명령어 허용 여부 설정
    +
    뷰포트 스케일에 맞는 배율 적용(주석배율 적용) : 뷰포트 스케일에 맞게 블록 형상에 대한 스케일 조정 가능
    +
    외부참조 추가 시 삽입점 화면에서 직접지정 : 체크 해제시 0,0,0 좌표로 블록 삽입
    + +
    속성블록 속성값 설정
    +
    태그 : 속성을 식별하는 꼬리표
    +
    프롬프트 : 문자값의 내용에 대한 설명
    +
    문자값 : 보여지는 문자내용에 해당하는 값
    +
    클릭 시 속성블록 속성값 수정 가능
    + +
    +
  • +
+ +
+
+ + + {videoModals.map(modal => ( + + ))} +
+ + diff --git a/samples/src/content/sub/block/block04.astro b/samples/src/content/sub/block/block04.astro new file mode 100644 index 0000000..0187afe --- /dev/null +++ b/samples/src/content/sub/block/block04.astro @@ -0,0 +1,98 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 현재 작업파일에 다른 파일을 연결하여  + 외부참조를 생성하고 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : BLOCK
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  블록  >    블록 만들기  >  블록 통합 관리창 +
+
+
+
+ + +
+
+  + +
+
+
외부참조 추가하기
+
탐색기에서 외부참조 파일 선택 후 삽입점 지정 * 삽입 가능한 외부참조 파일 형식 + Standard Drawing File (*.dwg) + GRIMI Drawing File (*.grm) + Drawing Exchange Format (*.dxf) + Drawing Template (*.dwt) + PDF Files (*.pdf) + DGN Files (*.dgn) + Image Files (*.gif, *.jpg, *.jpeg, *.png, *.tif, *.tiff, *.wbmp, *.wmf, *.emf, *.j2k, *.jp2, *.jpg, *.bmp, *.) +
+ +
외부참조 선택
+
클릭으로 표시 여부 설정
+
마우스 우클릭으로 분리·열기
+ + +
외부참조 삽입
+
1) 더블클릭 시 작업화면에 추가
+
2) 작업화면에 드래그&드롭
+ +
외부참조 LIST
+
현재 파일에 사용 가능한 외부참조의 LIST
+
외부참조 파일 이름과 파일형식 표시
+ +
외부참조 미리보기
+ +
외부참조 파일정보
+
이름 : 외부참조 파일 이름(수정 가능)
+
종류 : 외부참조 파일 형식
+
크기 : 외부참조 파일 용량
+
날짜 : 외부참조 파일 생성 날짜
+
설정 : 체크 해제시 0,0,0 좌표로 삽입
+ +
연결방식 및 경로
+
연결방식 : “명령어 전체보기 > 블록 > 다른파일을 블록으로 연결 > 연결방식 *XRFTYPE ”에서 설정
+
다중 연결 : 다른 파일에 외부참조 될 때도 유지(부착)
+
현재 파일 : 현재 도면에만 연결(중첩)
+
경로유형 - 절대경로 : 최상위 폴더부터 해당파일까지 모든 경로 + - 상대경로 : 현재파일의 폴더를 기준 현재 파일까지 경로 + - 경로없음 : 파일경로 사라짐 +
+
+ 경로 - 현재 참조된 파일의 위치를 보여주며, 경로 변경도 가능 +- 새로고침 버튼 클릭 시 파일 변경사항 업데이트 +
+ +
외부참조 보기 설정
+
가시성 : Raster Image 처리 여부 설정
+
화면이동시 Raster Image 처리
+
테두리 표시 : 이미지의 테두리 표시 여부 *파일 형식이 이미지 및 pdf 파일인 경우
+
출력 : 출력시 테두리 표시 여부 * IMAGEFRAME : 이미지 테두리 옵션 설정
+
페이드 : 불투명도 수치를 조절 및 주로 외부참조 객체임을 표시
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/block/block05.astro b/samples/src/content/sub/block/block05.astro new file mode 100644 index 0000000..8848429 --- /dev/null +++ b/samples/src/content/sub/block/block05.astro @@ -0,0 +1,67 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 건설분야에서 공통적으로 사용되는 다양한 블록을 분야별로 구분하여 제공 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : BLIBRARY
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  블록  >    여러가지 방법으로 블록 + 불러오기  >  블록 라이브러리 +
+
+
+
+ + +
+
+  + + + +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/command/command01.astro b/samples/src/content/sub/command/command01.astro new file mode 100644 index 0000000..ea955e9 --- /dev/null +++ b/samples/src/content/sub/command/command01.astro @@ -0,0 +1,73 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + + +
+ +
+
+ +

+ EG-BIM에서 사용할 수 있는 모든 명령어를  + 12개 그룹 및 실행·설정 명령어로 분류 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 아이콘바  >  명령어 전체보기
+
+
+
방식 2
+
명령어 아이콘바  >  + 아이콘 추가
+
+
+
+ + +
+
+  + +
    +
  • + + 선형/횡단 + +
  • + +
  • + + 구조/배근 + +
  • +
  • +
    +
    명령어 그룹
    +
    기능별로 구분하여 12개 그룹으로 구성
    + +
    해당 명령어의 옵션창
    + +
    명령어 옵션 설정
    +
    * 옵션 선택 및 컨트롤바 조절 예시
    + +
    단축키 수정
    +
    좌·우클릭 시 별칭 및 단축키 수정
    + +
    명령어 실행
    +
    명령어 클릭
    +
    입력창에 입력 시 적용
    + +
    명령어 아이콘 등록
    +
    명령어 아이콘 바로 드래그&드롭
    +
    +
  • + +
+ +
+
+
diff --git a/samples/src/content/sub/command/command02.astro b/samples/src/content/sub/command/command02.astro new file mode 100644 index 0000000..0ae1bb0 --- /dev/null +++ b/samples/src/content/sub/command/command02.astro @@ -0,0 +1,70 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

토목/도로분야의 도면 작업시 자주 사용되는 특화 명령어

+ +
+
+

How to use

+
+
방식 1
+
+ 명령어 아이콘바  >  명령어 + 전체보기  >  선형/횡단 +
+
+
+
+ + +
+
+  + +
+
+
EL 구하기
+
도면작업 시 필요한 EL값 계산
+ +
비탈면 그리기 및 경사표기 하기
+
비탈면 or 교량 구조물 등의 앞성토 그리는 작업 시 사용
+ +
시설물 및 차선 그리기
+
횡단보도, 테이퍼 등 도로 시설물 그리기 작업 시 사용
+ +
시설물 및 차선 그리기
+
횡단보도, 테이퍼 등 도로 시설물 그리기 작업 시 사용
+ +
현황 수정 및 표고점 생성하기
+
표고점, 등고선 등 현황 수정과 생성 시 사용
+ +
평면선형 측점 및 거리 표시하기
+
측점 생성, 선형 측점 조회 등 평면선형 작업 시 사용
+ +
비탈면 그리기 및 경사표기 하기
+
비탈면 or 교량 구조물 등의 앞성토 그리는 작업 시 사용
+ +
횡단면도 작성하기
+
쌓기, 깎기부 비탈면 등 횡단면도 그리기 작업 시 사용
+ +
선형 그리기
+
도로 설계에서 사용되는 완화 곡선, 접선 등 선형을 편리하게 그릴 때 사용
+ +
종단선형 작성 및 계획고 찾기
+
도로의 종단 선형을 계산하고 그리는 작업 시 사용
+ +
측구 설치하기
+
V형 측구와 산마루 측구 생성
+
+ +
+ +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/command/command03.astro b/samples/src/content/sub/command/command03.astro new file mode 100644 index 0000000..2fdc577 --- /dev/null +++ b/samples/src/content/sub/command/command03.astro @@ -0,0 +1,93 @@ +--- +import { IMAGE_BASE_PATH, VIDEO_BASE_PATH } from '../config'; + + +import VideoModal from './../../../components/VideoModal.astro'; + +const videoModals = [ + { id: 'modal-rebar', videoSrc: `${VIDEO_BASE_PATH}/video/rebar_detail.mp4` }, +]; +--- +
+ +
+
+ +

+ 작업량이 많고 작업 시간이 긴 구조/배근도,  + 특화명령어로 초보자도 쉽게 +

+ +
+
+

How to use

+
+
방식 1
+
+ 명령어 아이콘바  >  명령어 + 전체보기  >  구조/배근 +
+
+
+
+ + +
+
+  + +
    +
  • + +
  • +
  • +
    +
    도면축척 설정하기
    +
    철근, 마킹블록 및 재료표 등의 크기가 도면축척에 맞게 생성되도록 값을 먼저 입력
    + +
    철근마킹블록 넣기
    +
    점 철근 및 선 철근에 대한 철근 마킹 블록 작성
    +
    철근 C.T.C 표시 및 철근상세 표기 가능
    + +
    철근배근도 그리기
    + +
    철근 길이 조회 및 마킹블록 수정
    + +
    건설CALS 표준레이어 불러오기
    +
    리스트에 원하는 레이어를 체크 후 적용하기 버튼으로 레이어창에 체크 항목을 추가
    + +
    철근재료표 만들기
    +
    철근제원 및 재료표의 상세 옵션 설정 확인 후 작성
    +
    +
  • + +
+ +
+
+ + + {videoModals.map(modal => ( + + ))} +
+ + diff --git a/samples/src/content/sub/config.ts b/samples/src/content/sub/config.ts new file mode 100644 index 0000000..d34cbf8 --- /dev/null +++ b/samples/src/content/sub/config.ts @@ -0,0 +1,3 @@ +export const IMAGE_BASE_PATH = "/help/images"; + +export const VIDEO_BASE_PATH = "/help/"; diff --git a/samples/src/content/sub/customize/customize01.astro b/samples/src/content/sub/customize/customize01.astro new file mode 100644 index 0000000..93225a8 --- /dev/null +++ b/samples/src/content/sub/customize/customize01.astro @@ -0,0 +1,77 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+

+ 사용자가 원하는대로 작업환경 및 명령어 + 아이콘바를 구성 +

+
+
+ + +
+
+  + +
    +
  • + + 보조기능 전체보기 +
    그리드·객체스냅 등 보조기능 설정(토글 버튼으로 ON/OFF 모드)
    +
    +
  • + +
  • + + 명령어 전체보기 +
    EG-BIM의 모든 명령어 보기
    +
    +
  • +
  • +
    +
    보조기능 아이콘바
    +
    그리드·객체스냅 등 보조기능 설정(아이콘 색상으로 ON/OFF 모드)
    +
    최대 6개 명령 등록 가능(총 15종 제공)
    +
    우클릭 시 아이콘 삭제
    + +
    보조기능 아이콘 등록
    +
    보조기능 아이콘바로 드래그&드롭
    + +
    아이콘바 길이 조절
    + +
    명령어 아이콘바
    +
    그룹별 최대 16개 아이콘 등록 가능
    +
    우클릭 시 아이콘 삭제
    + +
    기본 그룹
    +
    같은 그룹의 명령어만 등록 가능
    +
    삭제 및 이름 변경 불가
    + +
    아이콘 및 그룹 이동
    +
    원하는 위치로 드래그&드롭
    + +
    명령어 아이콘 등록
    +
    같은 그룹의 명령어 등록 시 대표 아이콘 등록
    +
    명령어 아이콘 바로 드래그&드롭
    + +
    명령어 아이콘 추가
    +
    아이콘 추가를 위한 명령어 전체보기 팝업
    + +
    사용자 그룹 생성
    +
    모든 그룹의 명령어 등록 가능
    +
    우클릭 시 그룹 삭제 및 이름 변경
    + +
    그룹 추가
    +
    클릭 시 사용자 그룹 생성
    +
    +
  • +
+ +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/customize/customize02.astro b/samples/src/content/sub/customize/customize02.astro new file mode 100644 index 0000000..876ff40 --- /dev/null +++ b/samples/src/content/sub/customize/customize02.astro @@ -0,0 +1,62 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 사용자 작업 스타일에 맞게  + 기본적인 프로그램 환경을 설정 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : OPTIONS
+
+
+
방식 2
+
+ 홈메뉴  >  사용자 + 설정  >  Display&Mouse +
+
+
+
+ + +
+
+  +
+
+
작업화면 디스플레이
+
+
+
마우스 기능 설정
+
휠 스크롤 : 화면의 확대/축소량 설정
+
휠 클릭 : 화면 초점 이동 or 객체스냅 선택 적용
+
왼쪽/오른쪽 클릭 : 객체 선택·명령 진행 시 기본·편집 메뉴 or 마지막 명령 반복 선택
+ +
도면공간
+
새 도면공간(Layout) 생성 시 뷰포트창 자동 생성 여부 선택
+ +
파일 보안 및 저장
+
도면 형식 및 저장 버전 선택
+
프록시 객체 알림 및 표시 설정
+ +
자동 저장 및 백업
+
프로그램 다운에 대비한 저장 간격·경로 지정으로 백업 및 임시파일 관리
+ +
프로그램 종료 시 파일 설정
+
여러 파일 열림 상태에서 창 닫기 시 옵션 활성화 여부
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/customize/customize03.astro b/samples/src/content/sub/customize/customize03.astro new file mode 100644 index 0000000..fe7180d --- /dev/null +++ b/samples/src/content/sub/customize/customize03.astro @@ -0,0 +1,166 @@ +--- +import { IMAGE_BASE_PATH, VIDEO_BASE_PATH } from '../config'; + + +import VideoModal from './../../../components/VideoModal.astro'; + +const videoModals = [ + { id: 'modal-grid', videoSrc: `${VIDEO_BASE_PATH}/video/grid.mp4` }, + { id: 'modal-grip', videoSrc:`${VIDEO_BASE_PATH}/video/selected_object_grip.mp4` }, + { id: 'modal-ortho', videoSrc: `${VIDEO_BASE_PATH}/video/orthogonal_mode.mp4` }, + { id: 'modal-iso', videoSrc: `${VIDEO_BASE_PATH}/video/isometric_drawing.mp4` }, + { id: 'modal-overlap', videoSrc: `${VIDEO_BASE_PATH}/video/selection_of_overlapping_objects.mp4` }, + { id: 'modal-osnap', videoSrc: `${VIDEO_BASE_PATH}/video/object_snap.mp4` }, + { id: 'modal-dynamic', videoSrc: `${VIDEO_BASE_PATH}/video/dynamic_input.mp4` }, + { id: 'modal-angle', videoSrc: `${VIDEO_BASE_PATH}/video/angle_snap_tracking.mp4` }, + { id: 'modal-efct', videoSrc: `${VIDEO_BASE_PATH}/video/selection_visual_effects.mp4` }, +]; +--- + +
+ +
+
+ +

+ 작업상황에 따라 원하는 기능을 켜고 끄며  + 작업환경을 설정 +

+ +
+
+

How to use

+
+
방식 1
+
보조기능 아이콘바  >  보조기능 전체보기
+
+
+
방식 2
+
+ 명령어 아이콘바  >  명령어 + 전체보기  >  보조기능 +
+
+
+
+ + +
+
+  + +
    +
  • + +
  • + +
  • + +
  • + +
  • +
    +
    객체스냅 추적
    +
    스냅점으로부터 직교 방향의 가이드 라인 표시
    + +
    뷰큐브 표시
    +
    작업화면 우상단에 뷰 방향을 조절하는 뷰큐브 표시 여부
    +
    +
  • +
  • + +
  • + +
  • +
    +
    선 가중치
    +
    그리드 스냅
    +
    커서 움직임을 설정된 스냅 간격으로 잡아주는 기능
    +
    +
  • + +
  • + +
  • + +
  • +
    +
    명령어 자동완성
    +
    명령어 입력 시 연관 명령어 리스트 표시 및 리스트에서 선택된 명령어 자동 입력
    +
    커서 좌표값 표시
    +
    +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • +
+ +
+
+ + + {videoModals.map(modal => ( + + ))} + +
+ + \ No newline at end of file diff --git a/samples/src/content/sub/customize/customize04.astro b/samples/src/content/sub/customize/customize04.astro new file mode 100644 index 0000000..a8377eb --- /dev/null +++ b/samples/src/content/sub/customize/customize04.astro @@ -0,0 +1,55 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 명령어별 별칭 또는 단축키 설정해 명령어를 간단히 실행 +

+ +
+
+

How to use

+
+
방식 1
+
+ 명령어 아이콘바  >  명령어 + 전체보기  >  단축키 +
+
+
+
+ + + +
+
+  +
+
+
명령어 검색
+
영문 명령어 or 별칭으로 검색
+ +
명령어 그룹 선택
+ +
명령어 선택
+ +
별칭
+
영문 or 숫자 / 영문 + 숫자 조합 가능
+
명령어당 최대 2개 지정
+
우클릭 시 별칭 제거
+ +
단축키
+
조합키(CTRL·ALT·SHIFT) + 영문 or 숫자 / 기능키(F1~F12)로 설정
+
명령어당 최대 1개 지정
+
우클릭 시 단축키 제거
+
+
+
+
+
+ \ No newline at end of file diff --git a/samples/src/content/sub/feature/feature01.astro b/samples/src/content/sub/feature/feature01.astro new file mode 100644 index 0000000..3937007 --- /dev/null +++ b/samples/src/content/sub/feature/feature01.astro @@ -0,0 +1,69 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 선택된 객체의 모든 속성 정보를 확인하고  + 수정 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : PROPERTIES
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  선택/조회  >   +   객체 + 특성조회  >  Properties +
+
+
+
방식 3
+
상단 우측 상세보기의 속성창 클릭
+
+
+
+ + +
+
+  +
+
+
속성Bar(속성바)
+
선택된 객체의 주요 속성정보가 표시되며 수정 가능
+ +
속성창
+ +
Quick Select
+
선택된 객체를 조건으로 필터링하여 원하는 객체만 선택
+ +
기본정보
+
모든 객체가 가지고 있는 기본 특성
+ +
형상정보
+
선택된 객체의 종류에 따른 크기, 면적, 길이, 각도 등의 형상 정보 표
+ +
위치정보
+
선택된 객체의 종류에 따른 시종점 및 정점 등의 좌표 정보 표시
+ +
다중 선택
+
같은 종류의 객체를 다중 선택 시 객체 수 표시
+
다른 종류의 객체를 다중 선택 시 목록으로 표시 * 다른 종류의 객체를 다중 선택 시
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/feature/feature02.astro b/samples/src/content/sub/feature/feature02.astro new file mode 100644 index 0000000..d945355 --- /dev/null +++ b/samples/src/content/sub/feature/feature02.astro @@ -0,0 +1,62 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 적용할 색상을 선택하고 선택 색상에 대한  + 속성 값 확인 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : COLOR
+
+
+
방식 2
+
+ 상단 바  >  색상  >  색상 + 상세보기 +
+
+
+
+ + +
+
+  +
+
+
속성Bar(속성바)
+
선택된 객체의 주요 속성정보가 표시되며 수정 가능
+ +
속성창
+ +
Quick Select
+
선택된 객체를 조건으로 필터링하여 원하는 객체만 선택
+ +
기본정보
+
모든 객체가 가지고 있는 기본 특성
+ +
형상정보
+
선택된 객체의 종류에 따른 크기, 면적, 길이, 각도 등의 형상 정보 표
+ +
위치정보
+
선택된 객체의 종류에 따른 시종점 및 정점 등의 좌표 정보 표시
+ +
다중 선택
+
같은 종류의 객체를 다중 선택 시 객체 수 표시
+
다른 종류의 객체를 다중 선택 시 목록으로 표시 * 다른 종류의 객체를 다중 선택 시
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/floorplan/floorplan01.astro b/samples/src/content/sub/floorplan/floorplan01.astro new file mode 100644 index 0000000..25d5e3d --- /dev/null +++ b/samples/src/content/sub/floorplan/floorplan01.astro @@ -0,0 +1,92 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 선택된 폴더 내의 도면 파일을 한 눈에 보면서 탐색하고  정보 열람이 가능 +

+ +
+
+

How to use

+
+
방식 1
+
+ 상단 바 우측  >   꾸러미 +
+
+
+
+ + +
+
+  + + +
    +
  • + + 도면정보수정 +
    도면명, 도면번호 등 정보 수정
    +
    +
  • + +
  • + + 다중출력 +
    출력 옵션 설정 및 여러 도면 일괄 출력
    +
    +
  • + +
  • + + 그리미 열기 +
    도면 작업공간 실행
    +
    +
  • + +
  • +
    +
    사용자 지정 폴더
    + +
    사용자 지정 폴더 추가
    +
    사용자 지정 폴더로 드래그&드롭
    + +
    파일 탐색기
    + +
    도면 찾기
    +
    선택된 폴더 내에서 도면 검색
    +
    도면명, 도면번호 등 표시된 도면정보 내에서 키워드 검색
    + +
    도면정보
    +
    파일명, 도면명, 도면번호 등 건설 CALS 기준의 도면정보 제공
    +
    열림 : 현재 그리미에 실행 중인 파일 표시
    +
    우클릭 시 이동, 복사, 삽입, 삭제 및 열기 명령 실행
    +
    더블클릭 시 그리미에서 해당 도면 실행
    + +
    미리보기 화면 분리
    + +
    미리보기 크기 조절
    + +
    화면 확장
    + +
    미리보기
    +
    선택된 폴더 내 도면파일 미리보기
    +
    열림 : 현재 그리미에서 실행 중인 파일 표시
    +
    +
  • +
+ +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/floorplan/floorplan02.astro b/samples/src/content/sub/floorplan/floorplan02.astro new file mode 100644 index 0000000..760eba9 --- /dev/null +++ b/samples/src/content/sub/floorplan/floorplan02.astro @@ -0,0 +1,56 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 도면정보를 선택해 수정하며,  + 수정된 항목은 도면에 자동 적용 +

+ +
+
+

How to use

+
+
방식 1
+
+ 꾸러미  >  상단 + 좌측  >  도면정보수정 +
+
+
+
+ + +
+
+  + + + + +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/floorplan/floorplan03.astro b/samples/src/content/sub/floorplan/floorplan03.astro new file mode 100644 index 0000000..7617722 --- /dev/null +++ b/samples/src/content/sub/floorplan/floorplan03.astro @@ -0,0 +1,49 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 도곽의 여러 정보들 중에서 + 원하는 정보를 선택하여 표시 가능 +

+ +
+
+

How to use

+
+
방식 1
+
+ 꾸러미  >  상단 + 좌측  >  도면정보수정 +
+
+
+
+ + +
+
+  +
+
+
도면정보 항목 선택
+
도곽에 있는 도면정보 항목들을 표시
+
원하는 정보를 체크하여 도면정보 항목 편집(예 : 고정 항목, 편집 가능 항목)
+ +
수정 중인 항목 선택창에 표시
+
도면정보 항목 선택창에서도 수정하고자 하는 항목 선택 가능
+ +
수정 종료
+ +
도면정보 항목
+
중간 저장 / 수정 중 취소
+
+
+
+
+
diff --git a/samples/src/content/sub/interface/information.astro b/samples/src/content/sub/interface/information.astro new file mode 100644 index 0000000..15ea2eb --- /dev/null +++ b/samples/src/content/sub/interface/information.astro @@ -0,0 +1,90 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +import LoginCarousel from '../../../components/LoginCarousel.astro'; + +const slides = [ + { + image: `${IMAGE_BASE_PATH}/interface/3x_information.png`, + title: '로그인 화면', + body: '아이디/비밀번호 입력 후 실행하며 오프라인 인증 유지 기간을 확인합니다.', + }, + { + image: `${IMAGE_BASE_PATH}/interface/3x_information.png`, + title: '회원가입 및 비밀번호 재설정', + body: '홈페이지에서 계정을 만들거나 비밀번호를 재설정한 뒤 인증을 갱신합니다.', + }, + { + image: `${IMAGE_BASE_PATH}/interface/3x_information.png`, + title: '로그아웃', + body: '열린 도면을 모두 닫은 뒤 로그아웃하고 라이선스 만료일을 확인합니다.', + }, +]; +--- + + + diff --git a/samples/src/content/sub/interface/interface01.astro b/samples/src/content/sub/interface/interface01.astro new file mode 100644 index 0000000..b5b64e2 --- /dev/null +++ b/samples/src/content/sub/interface/interface01.astro @@ -0,0 +1,171 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + + +
+ +
+
+

+ 필수요소들의 효율적인 화면구성 & + 넓은 작업공간 +

+
+
+ + +
+
+  + + + +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/interface/interface02.astro b/samples/src/content/sub/interface/interface02.astro new file mode 100644 index 0000000..bd95bbb --- /dev/null +++ b/samples/src/content/sub/interface/interface02.astro @@ -0,0 +1,108 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 파일 관련 기본 기능 및  사용자 설정에 + 관한 기능 +

+ +
+
+

How to use

+
+
방식 1
+
+ 상단 바 좌측  >  EG-BIM + 로고  >  홈메뉴 +
+
+
+
+ + +
+
+  + +
    +
  • +
    +
    홈메뉴
    +
    클릭 시 기본 특성 메뉴 ↔ 홈메뉴 변경
    + +
    작업중인 파일
    +
    저장 : 현재 작업 중인 내용 저장
    +
    복사저장 : 다른 이름으로 파일을 복사하여 저장
    +
    + 내보내기 : 다른 형식으로 내보내기(PDF, SVG 등)
    + * 내보내기 가능한 파일형식
    + Portable Document Format (*.pdf)
    + Scalable Vector Graphics (*.svg)
    + Bitmap file (*.bmp)
    + Windows meta File (*.wmf)
    + Enhanced Windows Meta File (*.emf)
    + Design Web Format (*.dwf)
    + Stereolithography (*.stl)
    + COLLAborative Design Activity (*.dae)
    + MicroStation Design File (*.dgn)
    + Wavefront Object format (*.obj) +
    +
    도면묶기 : 외부참조 파일과 도면을 묶어 패키지로 만들기
    + +
    다른파일 열기
    +
    찾아열기 : PC or 네트워크 경로에서 저장된 파일을 찾아 열기
    +
    최근파일 : 최근 작업파일 표시(최대 10개)
    +
    새 파일 : 새 파일 생성
    + +
    Open 된 파일
    + +
    미리보기
    +
    최근파일에 마우스 오버 시 미리보기 확인
    + +
    파일 손상 시
    +
    복구하기 : 손상된 도면 파일 복구
    +
    임시파일 : 자동저장된 임시파일 폴더 바로가기
    + +
    사용자 설정
    +
    Display&Mouse : 디스플레이 환경 및 마우스 설정
    +
    저장하기 : 현재 사용자가 설정한 환경값 저장(화면, 마우스, 단축키 등)
    +
    불러오기 : 이전에 저장한 사용자 설정값을 불러와 적용
    + +
    궁금하면
    +
    설명보기 : 프로그램 이용가이드 보기
    +
    문의하기 : 이지빔 홈페이지 FAQ 이동
    +
    S/W 정보 : 라이센스 및 버전 정보 확인
    + +
    +
  • +
  • + + 홈메뉴 +
    열기, 저장 등의 파일 관련 메뉴 모음
    +
    +
  • +
  • +
    +
    궁금하면
    +
    설명보기 : 프로그램 이용가이드 보기
    +
    문의하기 : 이지빔 홈페이지 FAQ 이동
    +
    +
  • +
  • + + S/W 정보 +
    라이센스 및 버전 정보 확인
    +
    +
  • + +
+ +
+
+
diff --git a/samples/src/content/sub/interface/interface03.astro b/samples/src/content/sub/interface/interface03.astro new file mode 100644 index 0000000..acdd4f2 --- /dev/null +++ b/samples/src/content/sub/interface/interface03.astro @@ -0,0 +1,44 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 사용자가 설정한 환경값 백업 및 복원 +

+ +
+
+

How to use

+
+
방식 1
+
+ 상단 바 좌측  >  EG-BIM + 로고  >  홈메뉴  >  사용자 설정 +
+
+
+
+ + +
+  + +
+
+
홈메뉴
+
클릭 시 기본 특성 메뉴 ↔ 홈메뉴 변경
+ +
사용자 설정
+
저장하기 : “사용자 설정을 내보냈습니다.” 알림창이 뜨며 현재 사용자가 설정한 환경값 저장(화면, 마우스, 단축키 등)
+
불러오기 : “사용자 설정을 가져왔습니다.” 메세지 알림창이 뜨며 백업한 사용자 설정 불러오기
+
+
+ +
+ +
diff --git a/samples/src/content/sub/layer/layer01.astro b/samples/src/content/sub/layer/layer01.astro new file mode 100644 index 0000000..40f729e --- /dev/null +++ b/samples/src/content/sub/layer/layer01.astro @@ -0,0 +1,93 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + + +
+ +
+
+ +

+ 각각의 레이어를 생성하여  + 색상, 선 종류, 선 가중치, 투명도, 출력 등을 + 레이어별로  + 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : LAYER
+
+
+
방식 2
+
+ 명령어 + 전체보기  >  레이어  >   +   레이어 관리  >  layer +
+
+
+
방식 3
+
+ 상단 바  >  선 + 스타일  >  선스타일 상세 +
+
+
+
+ + +
+
+  +
+
+
레이어 검색
+ +
모든 레이어 그룹
+ +
레이어 그룹
+
레이어 설정 : 더블클릭 시 레이어명 수정, 현재 작업 레이어 설정 (라디오버튼 클릭)
+
레이어 그룹 설정 : 다중 선택 가능
+ +
레이어 그룹 설정
+ +
새로운 레이어 추가
+ +
그룹 추가
+ +
레이어 스타일 세트 추가
+
최대 3세트, 다양한 스타일 설정 가능
+ +
레이어 상세 항목
+
각 명칭 클릭 시 순서 재정렬
+ +
레이어 삭제 및 분리
+
우클릭 시 명령 실행
+
Delete(레이어 삭제) : 해당 레이어에 속한 객체가 없을 경우 삭제
+
Force Delete(레이어 강제 삭제) : 레이어 삭제, 속한 객체는 0 레이어로 변경
+
Force Delete With Records(객체만 삭제) : 레이어 유지, 해당 레이어에 속한 객체 모두 삭제
+
Isolate Selected Layers(해당 레이어 객체 분리) : 해당 레이어의 객체만 분리되어 보여짐
+ +
레이어 스타일 설정
+
색상 / 선스타일 / 선가중치 / 투명도 : 값 지정 가능(클릭 시 수정)
+
선가중치(LineWeight) 입력 범위 : 0.00, 0.05, 0.09, 0.13, 0.15, 0.18, 0.20 0.25, 0.30, 0.35, 0.40, 0.50, 0.53, 0.60, 0.70, 0.80, 0.90, 1.00, 1.06, 1.20, 1.40, 1.58, 2.00, 2.11
+
투명도(Transparency) 입력 범위 : 0~90 / 투명도 20% / 투명도 50% / 투명도 90%
+ +
레이어 표시상태 조정
+
작업화면 표시 여부 : ON / OFF
+
동결/해제 : 불필요한 레이어를 동결해 작업 속도 향상
+
잠금/해제 : 잠금 시 해당 레이어에 있는 객체는 수정 불가능(페이드값으로 선명도 조절 가능)
+
출력 여부 : ON / OFF
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/multi/multi01.astro b/samples/src/content/sub/multi/multi01.astro new file mode 100644 index 0000000..563ab21 --- /dev/null +++ b/samples/src/content/sub/multi/multi01.astro @@ -0,0 +1,73 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + + +
+ + +
+
+ +

+ 작업 도면과 참고 도면을 함께 보면서  + 동시 작업 +

+ +
+
+

How to use

+
+
방식 1
+
+ 파일 탭  >  파일 드래그 & + 드롭  >  단축키 +
+
+
+
+ + +
+
+  + +
    +
  • +
    +
    듀얼모드 동시 작업(읽기전용창)
    +
    읽기전용창과 작업창을 각각 띄워 참고 도면 확인과 작업 도면 편집을 동시에 작업
    +
    화면 밖으로 드래그&드롭하여 읽기전용창 생성
    + +
    레이어
    +
    레이어 표시 상태 조정
    + +
    +
    화면 확대, 축소, 초점 이동 등 뷰 조정
    + +
    조회
    +
    거리, 면적, 각도 조회 및 객체특성 조회
    + +
    작업환경 설정
    +
    그리드 표시 및 객체스냅 조정
    + +
    레이어
    +
    레이어 확인 및 레이어 표시상태 조정
    + +
    Read Only 파일 탭
    +
    Read Only 파일 리스트 확인
    +
    창 종료 시 작업화면으로 복귀
    +
    +
  • +
  • + + 속성창 +
    선택된 객체의 모든 속성정보 확인
    +
    +
  • + +
+ +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/multi/multi02.astro b/samples/src/content/sub/multi/multi02.astro new file mode 100644 index 0000000..1fc904f --- /dev/null +++ b/samples/src/content/sub/multi/multi02.astro @@ -0,0 +1,42 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ Layout(도면공간) 탭 화면분리로 Model공간과 Layout공간  + 동시 작업 +

+ +
+
+

How to use

+
+
방식 1
+
작업공간 탭  >  Layout 드래그 & 드롭
+
+
+
+ + +
+
+  +
+
+
듀얼모드 동시 작업(Layout 공간)
+
Model 공간 & Layout 공간 / Layout 공간 & Layout 공간 동시 작업
+
화면 밖으로 드래그&드롭하여 Layout 공간 생성
+ +
Layout 탭 분리
+
Layout 탭이 분리되어 Layout 공간이 별도로 생성됨
+
기존 작업화면과 동일하게 모든 기능 사용 가능
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/multi/multi03.astro b/samples/src/content/sub/multi/multi03.astro new file mode 100644 index 0000000..88fa47a --- /dev/null +++ b/samples/src/content/sub/multi/multi03.astro @@ -0,0 +1,59 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 넓은 화면의 3D 뷰포트 지원으로 2D와  3D 동시 작업 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : VPS3D
+
+
+
방식 2
+
+ 명령어 전체보기  >  뷰  >  3d   3D뷰어 및 3D 작업공간 열기  >  VPS3D +
+
+
+
+ + + +
+
+  +
+
+
2D 작업화면
+
VPORTS 명령어를 이용해 뷰포트 구성 및 뷰 스타일 설정 가능
+ +
듀얼모드 동시 작업
+
3D Space 지원으로 2D와 3D 동시 작업
+
3D Space 창 닫기→ 초기 평면 뷰로 복귀
+ +
3D SPACE
+
기존 작업화면과 동일하게 모든 기능 사용 가능
+ +
뷰 방향 및 비주얼 스타일 설정
+
선택한 뷰포트에서만 활성화
+ +
뷰 방향 및 비주얼 스타일 설정
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/print/multiprint01.astro b/samples/src/content/sub/print/multiprint01.astro new file mode 100644 index 0000000..d54f8ee --- /dev/null +++ b/samples/src/content/sub/print/multiprint01.astro @@ -0,0 +1,65 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 도면파일을 폴더 단위 및 개별선택하여 옵션 설정 및  + 다중출력 가능 +

+ +
+
+

How to use

+
+
방식 1
+
+ 꾸러미  >  상단 좌측  >  다중 + 출력 +
+
+
+
+ + +
+
+  + + + + +
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/print/multiprint02.astro b/samples/src/content/sub/print/multiprint02.astro new file mode 100644 index 0000000..b2dba1b --- /dev/null +++ b/samples/src/content/sub/print/multiprint02.astro @@ -0,0 +1,65 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + + +
+ +
+
+ +

+ 다중 출력을 위한 인쇄  + 옵션을 설정하고  + 미리보기  또는 종이 및 파일로  출력 +

+ +
+
+

How to use

+
+
방식 1
+
+ 꾸러미  >  상단 좌측  >  다중 + 출력 +
+
+
+
+ + +
+
+  + +
+
+
프린터/플로터
+
프린터 : 프린터 및 플로터 선택
+
파일출력 : PDF, JPG, PNG 중 선택
+ +
용지
+
용지 방향 선택
+
기기별 출력 가능한 용지 리스트
+
사용자 용지 설정
+ +
플롯 스타일
+
레이어 플롯 스타일 or 플롯 스타일(CTB) 선택 적용
+
초기화 버튼 클릭 시 레이어 플롯 스타일로 변경
+ +
용지 여백
+
여백값을 클릭하여 사용자가 수정값 입력 or Center 버튼 클릭시 용지 중심으로 자동 맞춤 가능부
+ +
출력 페이지 표시
+
출력영역을 도곽맞춤 선택 후 전체출력 체크 시 페이지 수 표시
+ +
용지 크기
+
사용자 용지 0 x 0(mm) 경우에만 크기 조절 가능
+ +
인쇄 미리보기
+
설정 변경 시 새로고침 버튼을 눌러 변경사항 반영
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/print/print01.astro b/samples/src/content/sub/print/print01.astro new file mode 100644 index 0000000..45ab1e2 --- /dev/null +++ b/samples/src/content/sub/print/print01.astro @@ -0,0 +1,81 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 출력을 위한 인쇄 옵션을 설정하고 +  미리보기 또는 종이 및 파일로 출력 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : PLOT
+
+
+
방식 2
+
+ 상단 바 우측  >   인쇄 버튼 +
+
+
+
+ + +
+
+  +
+
+
페이지 설정
+
미리 지정한 페이지 설정값 or 이전 플롯값 사용
+ +
프린터/플로터
+
프린터 : 프린터 및 플로터 선택
+
파일출력 : PDF, JPG, PNG 중 선택
+ +
용지
+
용지 방향 선택
+
기기별 출력 가능한 용지 리스트
+
사용자 용지 설정
+ +
출력 영역
+
도곽맞춤 : 도곽영역 자동인식
+
도곽지정 : 사용자도곽 추가
+
영역지정 : 원하는 영역 지정
+
모든 객체영역 : 모든 객체를 포함하는 영역
+
전체출력 : 도곽 모두 출력
+
용지맞춤 : 용지맞춤 및 스케일 입력
+ +
플롯 스타일
+
레이어 플롯 스타일 or 플롯 스타일(CTB) 선택 적용
+
초기화 버튼 클릭 시 레이어 플롯 스타일로 변경
+ +
실시간 미리보기
+
인쇄 설정 변경시 변경사항에 대한 실시간 미리보기 사용 여부
+ +
용지 여백
+
여백값을 클릭하여 사용자가 수정값 입력 or Center 버튼 클릭시 용지 중심으로 자동 맞춤 가능부
+ +
출력 페이지 표시
+
출력영역을 도곽맞춤 선택 후 전체출력 체크 시 페이지 수 표시
+ +
용지 크기
+
사용자 용지 0 x 0(mm) 경우에만 크기 조절 가능
+
+
+
+
+
\ No newline at end of file diff --git a/samples/src/content/sub/style/style01.astro b/samples/src/content/sub/style/style01.astro new file mode 100644 index 0000000..2703df0 --- /dev/null +++ b/samples/src/content/sub/style/style01.astro @@ -0,0 +1,83 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 사용자 스타일로 선 스타일 생성 및  + 수정, 관리 +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : LINETYPE
+
+
+
방식 2
+
+ 명령어 전체보기  >  도형  >   +   선 스타일 생성 + 및 수정하기  >  선 스타일 작성 +
+
+
+
방식 3
+
+ 상단바  >  선 스타일  >  선 + 스타일 상세 +
+
+
+
+ + +
+  +
+
+
건설 CALS 선꼴 확인
+
기본 선꼴과 5개 분야로 구분하여 분야별 표준 선꼴 제공
+ +
LIN 파일 불러오기
+ +
건설 CALS 선꼴 검색창
+ +
선꼴 선택
+
더블클릭으로 선택해 선스타일 LIST에 추가
+ +
기본정보
+
모든 객체가 가지고 있는 기본 특성
+ +
선 스타일 LIST에 추가
+ +
선 스타일 LIST
+
기본 3가지 선꼴 제공 (Continous, CENTER. HIDDEN)
+
우클릭 시 선 스타일 제거
+ +
선 스타일 선택
+ +
선꼴 수치 입력
+ +
블록 상세 설정
+ +
문자 상세 설정
+ +
선 스타일 수정
+
수정 → 취소/적용
+ +
스타일 선택
+
선꼴 : 선, 문자, 블록의 조합으로 선의 형상 선택
+
블록 : 선택한 선꼴에 블록이 포함된 경우 활성화
+
문자스타일 : 선택한 선꼴에 문자가 포함된 경우 활성화, 현재 파일에서 사용 중인 문자스타일 로드
+
+
+
+ +
\ No newline at end of file diff --git a/samples/src/content/sub/style/style02.astro b/samples/src/content/sub/style/style02.astro new file mode 100644 index 0000000..ddef132 --- /dev/null +++ b/samples/src/content/sub/style/style02.astro @@ -0,0 +1,76 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 원하는 스타일로  문자스타일 생성  및 +  상세 설정  +

+ +
+
+

How to use

+
+
방식 1
+
명령어 입력창  >  Command : STYLE
+
+
+
방식 2
+
+ 명령어 전체보기  >  문자  >   +   문자 스타일 + 작성/번경  >  문자 스타일 작성 +
+
+
+
방식 3
+
+ 상단바  >  문자 스타일  >  문자 + 스타일 상세 +
+
+
+
+ + +
+
+  +
+
+
치수 스타일 LIST
+
기본 2가지 스타일 제공 (Standard, ISO-25)
+
우클릭 시 치수 스타일 제거
+ +
치수 스타일 선택
+ +
치수 스타일 추가
+ +
설정 미리보기
+
설정값 변화에 따른 형상 미리보기
+
마우스 휠로 확대, 축소, 초점 이동 가능
+ +
치수 스타일 수정
+
수정 → 취소/적용
+ +
스케일 설정
+
치수 스케일 : 치수 형상 크기 조절을 위한 스케일값 입력
+
치수전체 : 치수 형상 크기를 치수 스케일값을 적용해 조정
+
도면공간 : 모형 공간과 도면공간(Layout) 사이의 축척을 기준으로 결정
+
뷰포트 스케일 맞춤 : 뷰포트에 맞게 치수 형상에 대한 스케일 조정 가능
+
측정 스케일 : 치수 측정값에 적용할 스케일값 입력
+ +
치수 스타일 상세 설정
+
치수 단위 : 1차, 2차 치수 단위 등 상세 설정
+
치수 문자 : 치수 형상에 표시되는 치수문자 상세 설정
+
치수 형상 : 화살촉, 치수선 길이 등 치수 형상 상세 설정
+
+
+
+
+
diff --git a/samples/src/content/sub/style/style03.astro b/samples/src/content/sub/style/style03.astro new file mode 100644 index 0000000..7d340cf --- /dev/null +++ b/samples/src/content/sub/style/style03.astro @@ -0,0 +1,86 @@ +--- +import { IMAGE_BASE_PATH } from '../config'; +--- + +
+ +
+
+ +

+ 원하는 스타일로 치수스타일 생성 및  + 수정 +

+ +
+
+

How to use

+
+
방법 1
+
명령어 입력창  >  Command : DIMSTYLE
+
+
+
방법 2
+
+ 명령어 + 전체보기  >  치수/연산  >   +   치수 스타일 + 작성 / 번경  >  치수 스타일 작성 / 편집 +
+
+
+
방법 3
+
+ 상단바  >  치수 스타일  >  치수 + 스타일 상세 +
+
+
+
+ + +
+
+  +
+
+
문자 스타일 LIST
+
기본 2가지 글꼴 제공 (Standard[Arial], Dotum[돋움])
+
우클릭 시 문자 스타일 제거
+ +
문자 스타일 선택
+ +
없는 글꼴 표시
+
(!)현재 없는 글꼴, 화면상 정상 표시 안됨을 안내
+ +
문자 스타일 추가
+ +
문자 스타일값 입력
+
문자 스타일명과 글꼴 표시 및 수정
+
문자 크기 상세 설정능
+ +
치수 스타일 수정
+
자리 맞추기 : 높낮이가 다른 문자의 높이 기준 설정
+
꾸밈 형식 : 기울기와 문자 굵기 설정
+
문자 스케일 : 뷰포트 맞춰 문자 형상의 스케일 조정 가능
+
문자 방향 : 문자의 방향을 설정
+
큰 글꼴 : 아시아권에서 많이 사용하는 문자 지원, 캐드 전용 폰트인 .SHX 폰트를 쓸때 활성화
+ +
문자 스타일 수정
+
수정 → 취소/적용
+ +
글꼴 검색
+ +
글꼴 선택
+
현재 선택된 스타일에 적용 할 글꼴을 선택
+ +
사용 중인 글꼴
+
문자 스타일 LIST에 등록되어 있는 글꼴 (●) 표시
+ +
글꼴 그룹
+
10가지 글꼴 그룹으로 구분하여 제공
+
+
+
+
+
diff --git a/samples/src/layouts/RedirectLayout.astro b/samples/src/layouts/RedirectLayout.astro new file mode 100644 index 0000000..2bf9bd2 --- /dev/null +++ b/samples/src/layouts/RedirectLayout.astro @@ -0,0 +1,16 @@ +--- +const { frontmatter } = Astro.props; +--- + + + + + + {frontmatter.title} + + + +

{frontmatter.title}

+

자동으로 이동되지 않으면 이 링크를 클릭해주세요.

+ + \ No newline at end of file diff --git a/samples/src/lib/aptabase.debug.js b/samples/src/lib/aptabase.debug.js new file mode 100644 index 0000000..e41714e --- /dev/null +++ b/samples/src/lib/aptabase.debug.js @@ -0,0 +1,175 @@ +"use strict"; +var aptabase = (() => { + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // src/index.ts + var src_exports = {}; + __export(src_exports, { + init: () => init, + trackEvent: () => trackEvent + }); + + // ../shared.ts + var defaultLocale; + var defaultIsDebug; + var isInBrowser = typeof window !== "undefined" && typeof window.fetch !== "undefined"; + var isInBrowserExtension = typeof chrome !== "undefined" && !!chrome.runtime?.id; + var _sessionId = newSessionId(); + var _lastTouched = /* @__PURE__ */ new Date(); + var _hosts = { + US: "https://us.aptabase.com", + EU: "https://eu.aptabase.com", + DEV: "https://localhost:3000", + SH: "" + }; + function inMemorySessionId(timeout) { + let now = /* @__PURE__ */ new Date(); + const diffInMs = now.getTime() - _lastTouched.getTime(); + const diffInSec = Math.floor(diffInMs / 1e3); + if (diffInSec > timeout) { + _sessionId = newSessionId(); + } + _lastTouched = now; + return _sessionId; + } + function newSessionId() { + const epochInSeconds = Math.floor(Date.now() / 1e3).toString(); + const random = Math.floor(Math.random() * 1e8).toString().padStart(8, "0"); + return epochInSeconds + random; + } + function validateAppKey(appKey) { + const parts = appKey.split("-"); + if (parts.length !== 3 || _hosts[parts[1]] === void 0) { + console.warn(`The Aptabase App Key "${appKey}" is invalid. Tracking will be disabled.`); + return false; + } + return true; + } + function getApiUrl(appKey, options) { + const region = appKey.split("-")[1]; + if (region === "SH") { + if (!options?.host) { + console.warn(`Host parameter must be defined when using Self-Hosted App Key. Tracking will be disabled.`); + return; + } + return `${options.host}/api/v0/event`; + } + const host = options?.host ?? _hosts[region]; + return `${host}/api/v0/event`; + } + async function sendEvent(opts) { + if (!isInBrowser && !isInBrowserExtension) { + console.warn(`Aptabase: trackEvent requires a browser environment. Event "${opts.eventName}" will be discarded.`); + return; + } + if (!opts.appKey) { + console.warn(`Aptabase: init must be called before trackEvent. Event "${opts.eventName}" will be discarded.`); + return; + } + try { + const response = await fetch(opts.apiUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + "App-Key": opts.appKey + }, + credentials: "omit", + body: JSON.stringify({ + timestamp: (/* @__PURE__ */ new Date()).toISOString(), + sessionId: opts.sessionId, + eventName: opts.eventName, + systemProps: { + locale: opts.locale ?? getBrowserLocale(), + isDebug: opts.isDebug ?? getIsDebug(), + appVersion: opts.appVersion ?? "", + sdkVersion: opts.sdkVersion + }, + props: opts.props + }) + }); + if (response.status >= 300) { + const responseBody = await response.text(); + console.warn(`Failed to send event "${opts.eventName}": ${response.status} ${responseBody}`); + } + } catch (e) { + console.warn(`Failed to send event "${opts.eventName}"`); + console.warn(e); + } + } + function getBrowserLocale() { + if (defaultLocale) { + return defaultLocale; + } + if (typeof navigator === "undefined") { + return void 0; + } + if (navigator.languages.length > 0) { + defaultLocale = navigator.languages[0]; + } else { + defaultLocale = navigator.language; + } + return defaultLocale; + } + function getIsDebug() { + if (defaultIsDebug !== void 0) { + return defaultIsDebug; + } + if (true) { + defaultIsDebug = true; + return defaultIsDebug; + } + if (typeof location === "undefined") { + defaultIsDebug = false; + return defaultIsDebug; + } + defaultIsDebug = location.hostname === "localhost"; + return defaultIsDebug; + } + + // src/index.ts + var SESSION_TIMEOUT = 1 * 60 * 60; + var sdkVersion = `aptabase-web@${"0.4.3"}`; + var _appKey = ""; + var _apiUrl; + var _options; + function init(appKey, options) { + if (!validateAppKey(appKey)) + return; + _apiUrl = options?.apiUrl ?? getApiUrl(appKey, options); + _appKey = appKey; + _options = options; + } + async function trackEvent(eventName, props) { + if (!_apiUrl) + return; + const sessionId = inMemorySessionId(SESSION_TIMEOUT); + await sendEvent({ + apiUrl: _apiUrl, + sessionId, + appKey: _appKey, + isDebug: _options?.isDebug, + appVersion: _options?.appVersion, + sdkVersion, + eventName, + props + }); + } + return __toCommonJS(src_exports); +})(); +//# sourceMappingURL=aptabase.debug.js.map \ No newline at end of file diff --git a/samples/src/lib/aptabase.min.js b/samples/src/lib/aptabase.min.js new file mode 100644 index 0000000..01d3b6a --- /dev/null +++ b/samples/src/lib/aptabase.min.js @@ -0,0 +1,2 @@ +"use strict";var aptabase=(()=>{var a=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var I=(e,n)=>{for(var t in n)a(e,t,{get:n[t],enumerable:!0})},A=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of y(n))!S.call(e,s)&&s!==t&&a(e,s,{get:()=>n[s],enumerable:!(o=w(n,s))||o.enumerable});return e};var E=e=>A(a({},"__esModule",{value:!0}),e);var k={};I(k,{init:()=>T,trackEvent:()=>$});var r,i,D=typeof window<"u"&&typeof window.fetch<"u",O=typeof chrome<"u"&&!!chrome.runtime?.id,p=g(),c=new Date,u={US:"https://us.aptabase.com",EU:"https://eu.aptabase.com",DEV:"https://localhost:3000",SH:""};function f(e){let n=new Date,t=n.getTime()-c.getTime();return Math.floor(t/1e3)>e&&(p=g()),c=n,p}function g(){let e=Math.floor(Date.now()/1e3).toString(),n=Math.floor(Math.random()*1e8).toString().padStart(8,"0");return e+n}function b(e){let n=e.split("-");return n.length!==3||u[n[1]]===void 0?(console.warn(`The Aptabase App Key "${e}" is invalid. Tracking will be disabled.`),!1):!0}function m(e,n){let t=e.split("-")[1];if(t==="SH"){if(!n?.host){console.warn("Host parameter must be defined when using Self-Hosted App Key. Tracking will be disabled.");return}return`${n.host}/api/v0/event`}return`${n?.host??u[t]}/api/v0/event`}async function v(e){if(!D&&!O){console.warn(`Aptabase: trackEvent requires a browser environment. Event "${e.eventName}" will be discarded.`);return}if(!e.appKey){console.warn(`Aptabase: init must be called before trackEvent. Event "${e.eventName}" will be discarded.`);return}try{let n=await fetch(e.apiUrl,{method:"POST",headers:{"Content-Type":"application/json","App-Key":e.appKey},credentials:"omit",body:JSON.stringify({timestamp:new Date().toISOString(),sessionId:e.sessionId,eventName:e.eventName,systemProps:{locale:e.locale??V(),isDebug:e.isDebug??N(),appVersion:e.appVersion??"",sdkVersion:e.sdkVersion},props:e.props})});if(n.status>=300){let t=await n.text();console.warn(`Failed to send event "${e.eventName}": ${n.status} ${t}`)}}catch(n){console.warn(`Failed to send event "${e.eventName}"`),console.warn(n)}}function V(){if(r)return r;if(!(typeof navigator>"u"))return navigator.languages.length>0?r=navigator.languages[0]:r=navigator.language,r}function N(){return i!==void 0||(i=!0),i}var x=1*60*60,U="aptabase-web@0.4.3",h="",d,l;function T(e,n){b(e)&&(d=n?.apiUrl??m(e,n),h=e,l=n)}async function $(e,n){if(!d)return;let t=f(x);await v({apiUrl:d,sessionId:t,appKey:h,isDebug:l?.isDebug,appVersion:l?.appVersion,sdkVersion:U,eventName:e,props:n})}return E(k);})(); +//# sourceMappingURL=aptabase.min.js.map \ No newline at end of file diff --git a/samples/src/lib/componentLoader.ts b/samples/src/lib/componentLoader.ts new file mode 100644 index 0000000..228bd89 --- /dev/null +++ b/samples/src/lib/componentLoader.ts @@ -0,0 +1,17 @@ +// 상대 경로를 정확하게 맞춰야 합니다 +// utils 폴더에서 content/sub로 가는 경로 +const allComponents = import.meta.glob("../content/sub/**/*.astro"); + +export async function loadComponent(path: string) { + // path 앞에 ../ 추가 + const componentPath = `../content/sub/${path}.astro`; + const loader = allComponents[componentPath]; + + if (!loader) { + console.error("Available paths:", Object.keys(allComponents)); + console.error("Requested path:", componentPath); + throw new Error(`Component not found: ${componentPath}`); + } + + return (await loader()).default; +} diff --git a/samples/src/lib/markdownToHtml.js b/samples/src/lib/markdownToHtml.js new file mode 100644 index 0000000..798ebe5 --- /dev/null +++ b/samples/src/lib/markdownToHtml.js @@ -0,0 +1,39 @@ +import { unified } from "unified"; +import remarkParse from "remark-parse"; +import remarkGfm from "remark-gfm"; +import remarkRehype from "remark-rehype"; +import rehypeStringify from "rehype-stringify"; +import rehypeEnhancer from "./rehypeEnhancer.js"; +import { resolveImagePath } from "./markdownUtils.js"; + +export async function markdownToHtml(raw) { + const cleaned = raw + .replace(/^import\s+.*from\s+['"].*['"];?$/gm, "") + // 🔹 참조 스타일 이미지 정의를 저장 + .replace( + /\[([^\]]+)\]:\s*\.\.\/.*assets\/images\/(.+)/g, + (_, ref, path) => `[${ref}]: /civil-engineering-lab/images/${path}` + ) + // 🔹 참조 스타일 이미지 사용 시 클래스 추가 + .replace( + /!\[\]\[([^\]]+)\]\{\.([a-zA-Z0-9-_]+)\}/g, + (match, ref, className) => { + // ![][image1]{.my-class} → HTML로 변환 + return ``; + } + ) + .replace( + /!\[([^\]]*)\]\((@img\/[^)]+)\)/g, + (_, alt, path) => `![${alt}](${resolveImagePath(path)})` + ); + + return String( + await unified() + .use(remarkParse) + .use(remarkGfm) + .use(remarkRehype) + .use(rehypeEnhancer) + .use(rehypeStringify) + .process(cleaned) + ); +} diff --git a/samples/src/lib/markdownUtils.js b/samples/src/lib/markdownUtils.js new file mode 100644 index 0000000..29c2db2 --- /dev/null +++ b/samples/src/lib/markdownUtils.js @@ -0,0 +1,22 @@ +// /src/utils/markdownUtils.js +const imageCache = new Map(); + +export function resolveImagePath(src) { + if (!src) return src; + if (src.startsWith("@img/")) { + return src.replace("@img/", "/civil-engineering-lab/images/"); + } + if (src.startsWith("../assets/images/")) { + return src.replace("../assets/images/", "/civil-engineering-lab/images/"); + } + return src; +} + +/** + * href가 외부 링크인지 확인 + * - http://, https://, // 로 시작하면 외부 링크로 판단 + */ +export function isExternalLink(href) { + if (!href) return false; + return /^https?:\/\//.test(href) || href.startsWith("//"); +} diff --git a/samples/src/lib/modalController.ts b/samples/src/lib/modalController.ts new file mode 100644 index 0000000..66a38db --- /dev/null +++ b/samples/src/lib/modalController.ts @@ -0,0 +1,72 @@ +// modalController.ts + +let isInitialized = false; +let escapeHandler: ((e: KeyboardEvent) => void) | null = null; + +export function initModalController() { + if (isInitialized) { + return; // 이미 초기화되었으면 재초기화하지 않음 + } + + isInitialized = true; + + // 버튼 클릭 이벤트 위임 + document.addEventListener("click", (e) => { + const target = (e.target as HTMLElement).closest("[data-modal]"); + if (target) { + const modalId = target.getAttribute("data-modal"); + if (modalId) openModal(modalId); + document.querySelector(".nav-wrap")?.classList.add("open"); + } + + // 모달 닫기 버튼 클릭 + const closeBtn = (e.target as HTMLElement).closest(".modal .close"); + if (closeBtn) { + const modal = closeBtn.closest(".modal") as HTMLElement; + if (modal) closeModal(modal); + document.querySelector(".nav-wrap")?.classList.remove("open"); + } + + // 모달 외부 클릭 + const modalEl = (e.target as HTMLElement).closest(".modal"); + if (modalEl && e.target === modalEl) { + closeModal(modalEl); + document.querySelector(".nav-wrap")?.classList.remove("open"); + } + }); + + // ESC 키 이벤트 + escapeHandler = (e: KeyboardEvent) => { + if (e.key === "Escape") { + const activeModals = document.querySelectorAll(".modal"); + activeModals.forEach((modal) => { + if (modal.style.display === "block") closeModal(modal); + }); + } + }; + + document.addEventListener("keydown", escapeHandler); +} + +function openModal(modalId: string) { + const modal = document.getElementById(modalId) as HTMLElement; + if (!modal) return; + + const video = modal.querySelector("video") as HTMLVideoElement; + modal.style.display = "block"; + + if (video) { + video.currentTime = 0; + video.play(); + } +} + +function closeModal(modal: HTMLElement) { + const video = modal.querySelector("video") as HTMLVideoElement; + modal.style.display = "none"; + + if (video) { + video.pause(); + video.currentTime = 0; + } +} diff --git a/samples/src/lib/navigation.ts b/samples/src/lib/navigation.ts new file mode 100644 index 0000000..296a57b --- /dev/null +++ b/samples/src/lib/navigation.ts @@ -0,0 +1,118 @@ +// ✅ /help 경로용 컴포넌트 네비게이션만 정의 +export const navigation = [ + { + label: "인터페이스", + directory: "interface", + type: "component" as const, + items: [ + { slug: "information", title: "로그인/로그아웃" }, + { slug: "interface01", title: "메인화면구성" }, + { slug: "interface02", title: "기본기능" }, + { slug: "interface03", title: "사용자 설정 백업 & 복원" }, + ], + }, + { + label: "사용자화", + directory: "customize", + type: "component" as const, + items: [ + { slug: "customize01", title: "명령어아이콘바" }, + { slug: "customize02", title: "시스템설정" }, + { slug: "customize03", title: "작업환경설정" }, + { slug: "customize04", title: "단축키설정" }, + ], + }, + { + label: "멀티작업공간", + directory: "multi", + type: "component" as const, + collapsed: true, + items: [ + { slug: "multi01", title: "파일탭 분리" }, + { slug: "multi02", title: "Layout 탭 분리" }, + { slug: "multi03", title: "3D 작업 전용" }, + ], + }, + { + label: "명령어 전체보기", + directory: "command", + type: "component" as const, + collapsed: true, + items: [ + { slug: "command01", title: "명령어 전체보기 구성" }, + { slug: "command02", title: "토목/도로 특화명령어" }, + { slug: "command03", title: "구조/배근 특화명령어" }, + ], + }, + { + label: "스타일 관리", + directory: "style", + type: "component" as const, + items: [ + { slug: "style01", title: "선스타일 상세보기" }, + { slug: "style02", title: "면스타일 상세보기" }, + { slug: "style03", title: "문자스타일 상세보기" }, + ], + }, + { + label: "객체특성관리", + directory: "feature", + type: "component" as const, + items: [ + { slug: "feature01", title: "속성바,속성창" }, + { slug: "feature02", title: "색상상세보기" }, + ], + }, + { + label: "레이어관리", + directory: "layer", + type: "component" as const, + items: [{ slug: "layer01", title: "레이어 상세보기" }], + }, + { + label: "통합블록관리", + directory: "block", + type: "component" as const, + items: [ + { slug: "block01", title: "블록의 종류" }, + { slug: "block02", title: "블록" }, + { slug: "block03", title: "속성블록" }, + { slug: "block04", title: "외부참조" }, + { slug: "block05", title: "블록 라이브러리" }, + ], + }, + { + label: "인쇄", + directory: "print", + type: "component" as const, + items: [ + { slug: "print01", title: "인쇄창 화면구성" }, + { slug: "multiprint01", title: "도면 출력 옵션 설정" }, + { slug: "multiprint02", title: "다중 인쇄창 화면 구성" }, + ], + }, + { + label: "도면관리", + directory: "floorplan", + type: "component" as const, + items: [ + { slug: "floorplan01", title: "도면탐색 및 정보열람" }, + { slug: "floorplan02", title: "도면정보 수정" }, + { slug: "floorplan03", title: "도면정보항목선택" }, + ], + }, +]; + +// ✅ component 라우트만 생성 +export const pageRoutes = navigation.flatMap((section) => + section.items.map((item) => ({ + slug: item.slug, + title: `가이드-${item.title}`, + type: section.type, + path: `${section.directory}/${item.slug}`, + group: section.directory, + sectionLabel: section.label, + })) +); + +export const defaultPage = pageRoutes[0]; diff --git a/samples/src/lib/rehypeEnhancer.js b/samples/src/lib/rehypeEnhancer.js new file mode 100644 index 0000000..d201de1 --- /dev/null +++ b/samples/src/lib/rehypeEnhancer.js @@ -0,0 +1,21 @@ +// src/utils/rehypeEnhancer.js +import { visit } from "unist-util-visit"; +import { resolveImagePath, isExternalLink } from "./markdownUtils.js"; + +export default function rehypeEnhancer() { + return (tree) => { + visit(tree, "element", (node) => { + // 이미지 경로 처리 + if (node.tagName === "img" && node.properties?.src) { + node.properties.src = resolveImagePath(node.properties.src); + node.properties.loading = "lazy"; + } + + // 외부 링크 처리 + if (node.tagName === "a" && isExternalLink(node.properties?.href)) { + node.properties.target = "_blank"; + node.properties.rel = "noopener noreferrer"; + } + }); + }; +} diff --git a/samples/src/lib/remarkNumberedHeadings.js b/samples/src/lib/remarkNumberedHeadings.js new file mode 100644 index 0000000..3304104 --- /dev/null +++ b/samples/src/lib/remarkNumberedHeadings.js @@ -0,0 +1,57 @@ +import { visit } from "unist-util-visit"; + +const parseFlag = (value, fallback = false) => { + if (typeof value === "boolean") return value; + if (typeof value === "string") { + const normalized = value.trim().toLowerCase(); + if (["true", "1", "yes", "y", "on"].includes(normalized)) return true; + if (["false", "0", "no", "n", "off"].includes(normalized)) return false; + } + return fallback; +}; + +/** + * Attach hierarchical numbers (e.g., 1, 1.1, 1.1.1) to heading nodes. + * Numbers are stored in data-heading-number and can be rendered via CSS/TOC. + */ +export default function remarkNumberedHeadings(options = {}) { + const { + minLevel = 2, + maxLevel = 4, + frontmatterField = "numberedHeadings", + defaultEnabled = false, + } = options; + + return (tree, file) => { + const frontmatter = + file?.data?.astro?.frontmatter ?? + file?.data?.frontmatter ?? + file?.data?.matter ?? + {}; + const enabled = parseFlag(frontmatter?.[frontmatterField], defaultEnabled); + if (!enabled) return; + + const counters = Array.from({ length: maxLevel + 2 }, () => 0); + + visit(tree, "heading", (node) => { + const level = node.depth ?? 0; + if (level < minLevel || level > maxLevel) return; + + counters[level] += 1; + for (let i = level + 1; i < counters.length; i += 1) { + counters[i] = 0; + } + + const parts = []; + for (let i = minLevel; i <= level; i += 1) { + if (counters[i] === 0) break; + parts.push(String(counters[i])); + } + const number = `${parts.join(".")}.`; + + node.data = node.data ?? {}; + node.data.hProperties = node.data.hProperties ?? {}; + node.data.hProperties["data-heading-number"] = number; + }); + }; +} diff --git a/samples/src/lib/searchIndex.js b/samples/src/lib/searchIndex.js new file mode 100644 index 0000000..4f3fcdd --- /dev/null +++ b/samples/src/lib/searchIndex.js @@ -0,0 +1,143 @@ +import fs from 'fs'; +import path from 'path'; +import { getCollection } from 'astro:content'; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkGfm from 'remark-gfm'; +import remarkRehype from 'remark-rehype'; +import rehypeStringify from 'rehype-stringify'; +import { pageRoutes } from './navigation.js'; + +/* ------------------------------- + * Markdown → 순수 텍스트 + * ------------------------------- */ +export async function extractPlainText(markdown) { + if (!markdown) return ''; + + const cleaned = markdown + .replace(/^import\s+.*from\s+['"].*['"];?$/gm, '') + .replace(//g, '') + .replace(/<[^>]+>/g, '') + .trim(); + + const result = await unified() + .use(remarkParse) + .use(remarkGfm) + .use(remarkRehype) + .use(rehypeStringify) + .process(cleaned); + + return String(result) + .replace(/<[^>]+>/g, ' ') + .replace(/&[a-zA-Z#0-9]+;/g, ' ') + .replace(/\s{2,}/g, ' ') + .trim(); +} + +/* ------------------------------- + * Astro 파일 → 순수 텍스트 + * ------------------------------- */ +export function extractAstroText(fileContent) { + return fileContent + .replace(/---[\s\S]*?---/g, '') + .replace(//gi, '') + .replace(//gi, '') + .replace(//g, '') + .replace(/\{[\s\S]*?\}/g, '') + .replace(/<[^>]+>/g, ' ') + .replace(/ /gi, ' ') + .replace(/\s{2,}/g, ' ') + .trim(); +} + +/* ------------------------------- + * 폴더 재귀 탐색 + * ------------------------------- */ +function getAstroFiles(dir) { + if (!fs.existsSync(dir)) return []; + const entries = fs.readdirSync(dir, { withFileTypes: true }); + let results = []; + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + if (entry.isDirectory()) results = results.concat(getAstroFiles(fullPath)); + else if (entry.isFile() && entry.name.endsWith('.astro')) results.push(fullPath); + } + return results; +} + +/* ------------------------------- + * 전체 검색 데이터 생성 + * ------------------------------- */ +export async function generateSearchData() { + // ① Docs 전부 + const allDocs = await getCollection('docs'); + const mdxSearchData = await Promise.all( + allDocs.map(async (doc) => { + const plain = await extractPlainText(doc.body); + const text = plain.toLowerCase(); + const slugPath = (doc.slug || doc.id).replace(/^ko\//, ''); + const url = `/${slugPath}${slugPath.endsWith('/') ? '' : '/'}`; + return { + id: slugPath, + title: doc.data.title || slugPath, + titleLower: (doc.data.title || slugPath).toLowerCase(), + content: plain.slice(0, 500), + fullContent: plain, + fullLower: text, + url, + category: 'mdx', + type: 'mdx' + }; + }) + ); + + // ② 메뉴 + const menuSearchData = pageRoutes + .filter(r => r.path?.startsWith('/')) + .map(route => { + const rawTitle = route.title || path.basename(route.path); + const titleText = rawTitle.startsWith('가이드-') ? rawTitle.substring(4) : rawTitle; + return { + id: route.path, + title: titleText, + titleLower: titleText.toLowerCase(), + content: '', + fullContent: '', + fullLower: '', + url: `/help${route.path}`, + category: 'menu', + type: 'menu' + }; + }); + + // ③ 실제 Astro 파일 + const subRoot = path.resolve('./src/content/sub'); + const subFiles = getAstroFiles(subRoot); + const subSearchData = subFiles.map(filePath => { + const content = fs.readFileSync(filePath, 'utf-8'); + const text = extractAstroText(content); + const fileName = path.basename(filePath, '.astro'); + + // ✅ navigation/pageRoutes에서 title 가져오기 + const route = pageRoutes.find(r => r.path.endsWith(fileName)); + let title = route + ? route.title.startsWith('가이드-') ? route.title.substring(4) : route.title + : content.match(/(.*?)<\/title>/i)?.[1] || + content.match(/<h1[^>]*>(.*?)<\/h1>/i)?.[1] || + fileName; + + return { + id: fileName, + title, + titleLower: title.toLowerCase(), + content: text.slice(0, 500), + fullContent: text, + fullLower: text.toLowerCase(), + url: `/help/${fileName}`, + category: 'astro-file', + type: 'astro-file' + }; + }); + + return [...mdxSearchData, ...menuSearchData, ...subSearchData]; +} diff --git a/samples/src/pages/civil-dx/big-room/01-설치-근거-및-필요성.astro b/samples/src/pages/civil-dx/big-room/01-설치-근거-및-필요성.astro new file mode 100644 index 0000000..d469094 --- /dev/null +++ b/samples/src/pages/civil-dx/big-room/01-설치-근거-및-필요성.astro @@ -0,0 +1,296 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + +<StarlightPage frontmatter={{ title: '기초 용어 정의', tableOfContents: false }}> + +<style is:global> + .sl-markdown-content, + .content-panel, + .sl-container, + [data-pagefind-body], + main { + max-width: 100% !important; + padding: 0 !important; + margin: 0 !important; + width: 100% !important; + } + .sl-markdown-content h2, + .sl-markdown-content h3 { all: unset; display: block; } + .sl-markdown-content table { all: unset; display: table; width: 100%; border-collapse: collapse; } + .sl-markdown-content th, + .sl-markdown-content td { all: unset; display: table-cell; } + .sl-markdown-content ul, + .sl-markdown-content ol { all: unset; display: block; } + .sl-markdown-content li { all: unset; display: list-item; } + .sl-markdown-content img { all: unset; } + .sl-markdown-content p { all: unset; display: block; } + + @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap'); + body { font-family: 'Noto Sans KR', sans-serif; } + + table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 0.9rem; } + th { background: #f1f3f5; border: 1px solid #ddd; padding: 8px; text-align: center; } + td { border: 1px solid #ddd; padding: 8px; vertical-align: middle; } + ul { padding-left: 20px; margin-top: 5px; } + li { margin-bottom: 5px; } + img { max-width: 100%; border-radius: 8px; } + blockquote { margin: 10px 0; padding: 10px 15px; border-left: 4px solid #0056b3; background: #f8f9fa; } + + /* 컬럼 리사이즈 핸들 */ + .col-resize-handle { + width: 6px; + cursor: col-resize; + background: transparent; + flex-shrink: 0; + position: relative; + z-index: 10; + transition: background 0.2s; + } + .col-resize-handle:hover, .col-resize-handle.dragging { + background: #0056b3; + border-radius: 3px; + } + .col-resize-handle::after { + content: '⋮'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #999; + font-size: 14px; + pointer-events: none; + } + .col-resize-handle:hover::after, .col-resize-handle.dragging::after { + color: #fff; + } + + /* 표 리사이즈 */ + table { + position: relative; + } + .table-wrapper { + position: relative; + margin-top: 10px; + } + .table-col-grip { + position: absolute; + top: 0; + width: 8px; + height: 100%; + cursor: col-resize; + z-index: 10; + background: transparent; + } + .table-col-grip:hover { + background: rgba(0, 86, 179, 0.25); + } + .table-row-grip { + position: absolute; + left: 0; + width: 100%; + height: 8px; + cursor: row-resize; + z-index: 10; + background: transparent; + } + .table-row-grip:hover { + background: rgba(0, 86, 179, 0.25); + } + +</style> + + +<div style="height: 100%; width: 100%; overflow: hidden; display: flex; flex-direction: column; padding: 15px 40px; box-sizing: border-box;"> +<div id="colContainer" style="flex: 1 1 auto; display: flex; align-items: stretch; margin-top: 10px; margin-bottom: 10px;"> +<div id="leftCol" style="flex: 4; display: flex; flex-direction: column; + padding-right: 20px; + overflow-y: auto; padding-top: 5px;"> +<h2 style="font-size: 1.5rem; font-weight: bold; border-bottom: 2px solid #333; + padding-bottom: 10px; margin-bottom: 15px; margin-top: 7px;">1. 기초 용어 정의</h2> +<div style="font-size: 1rem; line-height: 1.6; color: #333;"><p>건설산업에서 BIM, DX를 이해하려면 각각의 용어가 무엇을 뜻하는지 명확히 구분하여야 한다.</p> +<h3 style="font-size:1.1rem; margin: 15px 0 8px 0;">1.1 건설산업</h3> +<p>수요자가 요구하는 다양한 시설물을, 각 산업마다의 <strong>광범위한 기술을 통합 및 융합</strong>하여 만들어 내는 종합산업으로, 목적 시설물의 품질에 대한 욕구를 충족 시키면서 <strong>최단기간</strong> 내에 <strong>최소한의 비용</strong>으로 <strong>편리</strong>하고 <strong>안전</strong>하며 <strong>우수한 성능</strong>의 <strong>시설물을 완성</strong>하는 것을 목표로 하는산업을 의미한다.</p> +<h3 style="font-size:1.1rem; margin: 15px 0 8px 0;">1.2 BIM(building information modeling, 건설정보모델링)</h3> +<p>BIM은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 <strong>디지털전환(DX, Digital Transformation) 체계</strong>를 의미한다.</p> +<h3 style="font-size:1.1rem; margin: 15px 0 8px 0;">1.3 DX(digital Transformation, 디지털 전환)</h3> +<p><strong>디지털 기술과 도구</strong>를 활용하여, 고객과 시장의 변화에 대응하고 <strong>새로운 가치를 창출</strong>하며 산업생태계, 비지니스 모델(B.M) 및 업무수행 방식(Process)을 혁신하는 과정과 전환을 말한다.</p> +<div style="text-align: center; margin: 15px 0;"> +<img alt="디지털전환 그림" src="/assets/images/01.png" style="max-height: 35vh; object-fit: contain;"/> +<p style="font-size: 0.9rem; color: #666; margin-top: 5px;"></p> +</div> +</div> +</div> +<div class="col-resize-handle" id="colResizeHandle"></div> +<div id="rightCol" style="flex: 6; display: flex; flex-direction: column; padding-left: 20px; overflow-y: auto;"> +<h2 style="font-size: 1.5rem; font-weight: bold; border-bottom: 2px solid #333; + padding-bottom: 10px; margin-bottom: 15px; margin-top: -3px;">2. BIM vs DX 비교</h2> +<div style="font-size: 1rem; line-height: 1.6; color: #333;"><p>흔히 BIM과 DX를 혼용하여 사용하곤 한다. 하지만 BIM이 3D 형상 구현을 위한 도구적 성격이 강하다면, DX는 이를 기반으로 데이터와 프로세스 전반을 혁신하는 체계라는 점에서 <strong>엄연히 다른 개념</strong>이다.</p> +<div class="table-wrapper"><table style="width:100%; border-collapse:collapse; margin-top:10px; font-size:0.9rem; table-layout:fixed;"><thead><tr><th style="background: rgb(241, 243, 245); border: 1px solid rgb(221, 221, 221); padding: 8px; text-align: left; width: 328px;">BIM</th><th style="background: rgb(241, 243, 245); border: 1px solid rgb(221, 221, 221); padding: 8px; text-align: left; width: 164px;">구분</th><th style="background: rgb(241, 243, 245); border: 1px solid rgb(221, 221, 221); padding: 8px; text-align: center; width: 625px;">DX</th></tr></thead><tbody><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;"><strong>Only 3D</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>BIM/DX</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>BIM << DX</strong> (ENG. + Management 포함)</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;"><strong>모델 제작용 상용 S/W</strong><br/>[Civil 3D, Revit, Navisworks, Autocad]</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>S/W</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>제작 및 운영</strong> (상용 + 전용 40~80개)<br/>[Rhino, Sketchup, Blender..] + [EG-BIM 등]</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">기존 2D 설계방식 유지</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>프로세스</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>근본적 문제의식</strong>을 통한 개선</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;"><strong>3D 모델 중심</strong><br/>기존 성과품 유지</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>성과품</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>공학 정보 및 콘텐츠 연계</strong>에 집중<br/>도면, 수량, 시공계획 등 일식</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">3D 모델에 의한 일반적 이해 향상</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>활용</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>설계/시공의 혁신</strong> (개념의 재정립)</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">(설계/시공/운영) 분야별 단절</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>확장성</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>전 생애주기</strong> 활용 시스템</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;"><strong>단순화(오류)</strong><br/>수동적/집단적 동질화</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>수행개념</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>구체화(복잡)</strong><br/>적극/구체적 실현 방안</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">소극적, 상용 기술에 의존</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>CIVIL + IT</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>적극적</strong>, 주체적인 기술 접목/융합</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">S/W 제작사 판매 정책에 의존</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>주체</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>자체 수행능력</strong> - 지속가능성 확보</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">평준화, 국내 중심</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>발주처</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>차별화 및 경쟁력 확보</strong>, 해외 진출</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">소규모 BIM팀 운영 + 단순교육에 집중</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>설계사</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>IT + CIVIL ENG 220명 운영</strong> + 기술 개발</td></tr><tr><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 328px;">국내 토목 소극적 / 해외 토목증가</td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: left; width: 164px;"><strong>시공사</strong></td><td style="border: 1px solid rgb(221, 221, 221); padding: 8px; vertical-align: middle; text-align: center; width: 625px;"><strong>분야 확장 모델 및 시스템</strong></td></tr></tbody></table><div class="table-col-grip" data-col-index="0" style="left: 342px; height: 605px;"></div><div class="table-col-grip" data-col-index="1" style="left: 524px; height: 605px;"></div><div class="table-row-grip" data-row-index="0" style="top: 37px; width: 1173px;"></div><div class="table-row-grip" data-row-index="1" style="top: 78px; width: 1173px;"></div><div class="table-row-grip" data-row-index="2" style="top: 142px; width: 1173px;"></div><div class="table-row-grip" data-row-index="3" style="top: 183px; width: 1173px;"></div><div class="table-row-grip" data-row-index="4" style="top: 247px; width: 1173px;"></div><div class="table-row-grip" data-row-index="5" style="top: 288px; width: 1173px;"></div><div class="table-row-grip" data-row-index="6" style="top: 329px; width: 1173px;"></div><div class="table-row-grip" data-row-index="7" style="top: 393px; width: 1173px;"></div><div class="table-row-grip" data-row-index="8" style="top: 434px; width: 1173px;"></div><div class="table-row-grip" data-row-index="9" style="top: 475px; width: 1173px;"></div><div class="table-row-grip" data-row-index="10" style="top: 516px; width: 1173px;"></div><div class="table-row-grip" data-row-index="11" style="top: 557px; width: 1173px;"></div></div> +<p>:::note</p> +<p>BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다.</p> +<p>:::</p></div> +</div> +</div> +</div> + + + +</StarlightPage> + +<script is:inline> +document.addEventListener('DOMContentLoaded', function() { + +// ===== 1. 컬럼 리사이즈 ===== +(function() { + var handle = document.getElementById('colResizeHandle'); + if (!handle) return; + + var container = document.getElementById('colContainer'); + var leftCol = document.getElementById('leftCol'); + var rightCol = document.getElementById('rightCol'); + if (!leftCol || !rightCol) return; + + var dragging = false; + + handle.addEventListener('mousedown', function(e) { + e.preventDefault(); + dragging = true; + handle.classList.add('dragging'); + document.body.style.cursor = 'col-resize'; + document.body.style.userSelect = 'none'; + }); + + document.addEventListener('mousemove', function(e) { + if (!dragging) return; + var rect = container.getBoundingClientRect(); + var x = e.clientX - rect.left; + var totalW = rect.width; + var leftRatio = (x / totalW) * 10; + leftRatio = Math.max(2, Math.min(8, leftRatio)); + var rightRatio = 10 - leftRatio; + leftCol.style.flex = leftRatio.toFixed(1); + rightCol.style.flex = rightRatio.toFixed(1); + }); + + document.addEventListener('mouseup', function() { + if (!dragging) return; + dragging = false; + handle.classList.remove('dragging'); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + }); +})(); + +// ===== 2. 표 셀 리사이즈 (오버레이 방식) ===== +(function() { + document.querySelectorAll('table').forEach(function(table) { + table.style.tableLayout = 'fixed'; + + // 테이블을 wrapper로 감싸기 + var wrapper = document.createElement('div'); + wrapper.className = 'table-wrapper'; + table.parentNode.insertBefore(wrapper, table); + wrapper.appendChild(table); + + function createGrips() { + // 기존 그립 제거 + wrapper.querySelectorAll('.table-col-grip, .table-row-grip').forEach(function(g) { g.remove(); }); + + var rows = table.querySelectorAll('tr'); + if (rows.length === 0) return; + + // 컬럼 그립 - 첫 행의 셀 경계에 배치 + var cells = rows[0].querySelectorAll('th, td'); + var cumX = 0; + for (var i = 0; i < cells.length - 1; i++) { + cumX += cells[i].offsetWidth; + var grip = document.createElement('div'); + grip.className = 'table-col-grip'; + grip.style.left = (cumX - 4) + 'px'; + grip.style.height = table.offsetHeight + 'px'; + grip.dataset.colIndex = i; + wrapper.appendChild(grip); + + (function(colIdx, gripEl) { + var startX, startW, nextStartW, col, nextCol; + gripEl.addEventListener('mousedown', function(e) { + e.preventDefault(); + startX = e.clientX; + col = []; + nextCol = []; + rows.forEach(function(row) { + var c = row.querySelectorAll('th, td'); + if (c[colIdx]) col.push(c[colIdx]); + if (c[colIdx + 1]) nextCol.push(c[colIdx + 1]); + }); + startW = col[0] ? col[0].offsetWidth : 100; + nextStartW = nextCol[0] ? nextCol[0].offsetWidth : 100; + document.body.style.cursor = 'col-resize'; + document.body.style.userSelect = 'none'; + + function onMove(ev) { + var diff = ev.clientX - startX; + var newW = Math.max(40, startW + diff); + var newNextW = Math.max(40, nextStartW - diff); + col.forEach(function(c) { c.style.width = newW + 'px'; }); + nextCol.forEach(function(c) { c.style.width = newNextW + 'px'; }); + } + function onUp() { + document.removeEventListener('mousemove', onMove); + document.removeEventListener('mouseup', onUp); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + createGrips(); + } + document.addEventListener('mousemove', onMove); + document.addEventListener('mouseup', onUp); + }); + })(i, grip); + } + + // 행 그립 - 각 행 하단에 배치 + var cumY = 0; + for (var r = 0; r < rows.length - 1; r++) { + cumY += rows[r].offsetHeight; + var rowGrip = document.createElement('div'); + rowGrip.className = 'table-row-grip'; + rowGrip.style.top = (cumY - 4) + 'px'; + rowGrip.style.width = table.offsetWidth + 'px'; + rowGrip.dataset.rowIndex = r; + wrapper.appendChild(rowGrip); + + (function(rowIdx, gripEl) { + var startY, startH; + gripEl.addEventListener('mousedown', function(e) { + e.preventDefault(); + startY = e.clientY; + startH = rows[rowIdx].offsetHeight; + document.body.style.cursor = 'row-resize'; + document.body.style.userSelect = 'none'; + + function onMove(ev) { + var diff = ev.clientY - startY; + rows[rowIdx].style.height = Math.max(20, startH + diff) + 'px'; + } + function onUp() { + document.removeEventListener('mousemove', onMove); + document.removeEventListener('mouseup', onUp); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + createGrips(); + } + document.addEventListener('mousemove', onMove); + document.addEventListener('mouseup', onUp); + }); + })(r, rowGrip); + } + } + + // 초기 그립 생성 (약간의 딜레이 후 — 렌더링 완료 대기) + setTimeout(createGrips, 100); + }); +})(); + +}); +</script> diff --git a/samples/src/pages/civil-dx/big-room/03-구성요소-및-설치사례.astro b/samples/src/pages/civil-dx/big-room/03-구성요소-및-설치사례.astro new file mode 100644 index 0000000..efc0f7d --- /dev/null +++ b/samples/src/pages/civil-dx/big-room/03-구성요소-및-설치사례.astro @@ -0,0 +1,302 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + +<StarlightPage frontmatter={{ title: '건설 정책 로드맵 및 목표', tableOfContents: false }}> + +<style is:global> + .sl-markdown-content, + .content-panel, + .sl-container, + main { + max-width: 100% !important; + padding: 0 !important; + margin: 0 !important; + width: 100% !important; + } + + @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap'); + body { font-family: 'Noto Sans KR', sans-serif; } + + table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 0.9rem; } + th { background: #f1f3f5; border: 1px solid #ddd; padding: 8px; text-align: center; } + td { border: 1px solid #ddd; padding: 8px; vertical-align: middle; } + ul { padding-left: 20px; margin-top: 5px; } + li { margin-bottom: 5px; } + img { max-width: 100%; border-radius: 8px; } + blockquote { margin: 10px 0; padding: 10px 15px; border-left: 4px solid #0056b3; background: #f8f9fa; } + + /* 컬럼 리사이즈 핸들 */ + .col-resize-handle { + width: 6px; + cursor: col-resize; + background: transparent; + flex-shrink: 0; + position: relative; + z-index: 10; + transition: background 0.2s; + } + .col-resize-handle:hover, .col-resize-handle.dragging { + background: #0056b3; + border-radius: 3px; + } + .col-resize-handle::after { + content: '⋮'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #999; + font-size: 14px; + pointer-events: none; + } + .col-resize-handle:hover::after, .col-resize-handle.dragging::after { + color: #fff; + } + + /* 표 리사이즈 */ + table { + position: relative; + } + .table-wrapper { + position: relative; + margin-top: 10px; + } + .table-col-grip { + position: absolute; + top: 0; + width: 8px; + height: 100%; + cursor: col-resize; + z-index: 10; + background: transparent; + } + .table-col-grip:hover { + background: rgba(0, 86, 179, 0.25); + } + .table-row-grip { + position: absolute; + left: 0; + width: 100%; + height: 8px; + cursor: row-resize; + z-index: 10; + background: transparent; + } + .table-row-grip:hover { + background: rgba(0, 86, 179, 0.25); + } + +</style> + + +<div style="height: 100%; width: 100%; overflow: hidden; display: flex; flex-direction: column; padding: 15px 40px; box-sizing: border-box;"> +<div id="colContainer" style="flex: 1 1 auto; display: flex; align-items: stretch; margin-top: 10px; margin-bottom: 10px;"> +<div id="leftCol" style="flex: 4.5 1 0%; display: flex; flex-direction: column; padding-right: 20px; overflow-y: auto; padding-top: 5px;"> +<h2 style="font-size: 1.5rem; font-weight: bold; border-bottom: 2px solid #333; + padding-bottom: 10px; margin-bottom: 15px; margin-top: 7px;">1. 건설 정책 로드맵 및 목표</h2> +<div style="font-size: 1rem; line-height: 1.6; color: #333;"><p>정부는 <strong>디지털 전환(DX)</strong> 을 통해 정체된 건설산업을 <strong>국가 신성장 동력</strong>으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다.</p> +<div style="text-align: center; margin: 15px 0;"> +<img alt="건설 정책 로드맵" src="/assets/images/04.png" style="max-height: 35vh; object-fit: contain;"/> +<p style="font-size: 0.9rem; color: #666; margin-top: 5px;"><em>[사진 1] 건설산업DX 정책 로드맵</em></p> +</div> +<h3 style="font-size:1.3rem; font-weight:bold; border-bottom:1px solid #999; padding-bottom:8px; margin-top:25px; margin-bottom:10px;">2. 건설산업 BIM 기본 지침</h3> +<p>2020년 「<strong>건설산업 BIM 기본지침</strong>」, 2022년 「<strong>건설산업 BIM 시행지침</strong>」을 발의하여 건설산업의 <strong>생산성 향상</strong>과 <strong>품질, 안전 및 친환경의 극대화</strong>를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 <strong>디지털 전환을 가속화</strong>하고자 한다.</p> +<p><strong>정부 BIM 도입 개요 (건설산업 BIM 기본지침)</strong></p> +<ul> +<li><strong>비전</strong>: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약</li> +<li><strong>목표</strong>: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화</li> +<li><strong>기대 효과</strong>:</li> +<ul><li><strong>비용/공기</strong>: 건설 비용 감소 및 기간 단축</li></ul> +<ul><li><strong>품질/안전</strong>: 설계·시공 오류 최소화, 프로젝트 리스크 저감</li></ul> +<ul><li><strong>협업</strong>: 협업과 의사소통 강화, 건설정보 통합관리</li></ul> +</ul> +<div style="text-align: center; margin: 15px 0;"> +<img alt="건설산업 BIM 기본 지침" src="/assets/images/09.png" style="max-height: 35vh; object-fit: contain;"/> +<p style="font-size: 0.9rem; color: #666; margin-top: 5px;"><em>[사진 1] 건설산업 BIM 기본 지침 및 시행지침</em></p> +</div> +</div> +</div> +<div class="col-resize-handle" id="colResizeHandle"></div> +<div id="rightCol" style="flex: 5.5 1 0%; display: flex; flex-direction: column; padding-left: 20px; overflow-y: auto;"> +<h2 style="font-size: 1.5rem; font-weight: bold; border-bottom: 2px solid #333; + padding-bottom: 10px; margin-bottom: 15px; margin-top: -3px;">3. 스마트 건설 활성화 방안</h2> +<div style="font-size: 1rem; line-height: 1.6; color: #333;"><p>2022년 7월 국토교통부가 발표한 '<strong>스마트 건설 활성화 방안</strong>'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다.</p> +<p><strong>스마트 건설 활성화 방안 주요내용</strong></p> +<div class="table-wrapper"><table style="width:100%; border-collapse:collapse; margin-top:10px; font-size:0.9rem; table-layout:fixed;"><thead><tr><th style="background:#f1f3f5; border:1px solid #ddd; padding:8px; text-align:left; width:30%;">구분</th><th style="background:#f1f3f5; border:1px solid #ddd; padding:8px; text-align:left; width:70%;">주요 내용</th></tr></thead><tbody><tr><td style="border:1px solid #ddd; padding:8px; vertical-align:middle; text-align:left;"><strong>BIM</strong><br/>(Building Information Modeling)</td><td style="border:1px solid #ddd; padding:8px; vertical-align:middle; text-align:left;"><strong>건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구</strong><br/>건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함</td></tr><tr><td style="border:1px solid #ddd; padding:8px; vertical-align:middle; text-align:left;"><strong>OSC</strong><br/>(Off-Site Construction)</td><td style="border:1px solid #ddd; padding:8px; vertical-align:middle; text-align:left;"><strong>탈현장 건설 (공장 제작 시공)</strong><br/>단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식</td></tr></tbody></table><div class="table-col-grip" data-col-index="0" style="left: 305px; height: 191px;"></div><div class="table-row-grip" data-row-index="0" style="top: 36px; width: 1009px;"></div><div class="table-row-grip" data-row-index="1" style="top: 99px; width: 1009px;"></div></div> +<div style="text-align: center; margin: 15px 0;"> +<img alt="스마트 건설 활성화 방안" src="/assets/images/05.png" style="max-height: 35vh; object-fit: contain;"/> +<p style="font-size: 0.9rem; color: #666; margin-top: 5px;"><em>[사진 2] 스마트 건설 활성화 방안</em></p> +</div> +</div> +</div> +</div> +<div style="padding: 20px 25px; background-color: #e7f5ff; border-left: 6px solid #0056b3; + border-radius: 6px; font-size: 1.1rem; line-height: 1.7; margin-top: 10px;"> +<div style="font-weight: bold; margin-bottom: 8px; color: #0056b3; font-size: 1.15rem;">ℹ️ 핵심 요약</div> +<div style="color: #1a365d; font-weight: 500;"><ul> +<li>정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다.</li> +</ul></div> +</div> +</div> + + + +</StarlightPage> + +<script is:inline> +document.addEventListener('DOMContentLoaded', function() { + +// ===== 1. 컬럼 리사이즈 ===== +(function() { + var handle = document.getElementById('colResizeHandle'); + if (!handle) return; + + var container = document.getElementById('colContainer'); + var leftCol = document.getElementById('leftCol'); + var rightCol = document.getElementById('rightCol'); + if (!leftCol || !rightCol) return; + + var dragging = false; + + handle.addEventListener('mousedown', function(e) { + e.preventDefault(); + dragging = true; + handle.classList.add('dragging'); + document.body.style.cursor = 'col-resize'; + document.body.style.userSelect = 'none'; + }); + + document.addEventListener('mousemove', function(e) { + if (!dragging) return; + var rect = container.getBoundingClientRect(); + var x = e.clientX - rect.left; + var totalW = rect.width; + var leftRatio = (x / totalW) * 10; + leftRatio = Math.max(2, Math.min(8, leftRatio)); + var rightRatio = 10 - leftRatio; + leftCol.style.flex = leftRatio.toFixed(1); + rightCol.style.flex = rightRatio.toFixed(1); + }); + + document.addEventListener('mouseup', function() { + if (!dragging) return; + dragging = false; + handle.classList.remove('dragging'); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + }); +})(); + +// ===== 2. 표 셀 리사이즈 (오버레이 방식) ===== +(function() { + document.querySelectorAll('table').forEach(function(table) { + table.style.tableLayout = 'fixed'; + + // 테이블을 wrapper로 감싸기 + var wrapper = document.createElement('div'); + wrapper.className = 'table-wrapper'; + table.parentNode.insertBefore(wrapper, table); + wrapper.appendChild(table); + + function createGrips() { + // 기존 그립 제거 + wrapper.querySelectorAll('.table-col-grip, .table-row-grip').forEach(function(g) { g.remove(); }); + + var rows = table.querySelectorAll('tr'); + if (rows.length === 0) return; + + // 컬럼 그립 - 첫 행의 셀 경계에 배치 + var cells = rows[0].querySelectorAll('th, td'); + var cumX = 0; + for (var i = 0; i < cells.length - 1; i++) { + cumX += cells[i].offsetWidth; + var grip = document.createElement('div'); + grip.className = 'table-col-grip'; + grip.style.left = (cumX - 4) + 'px'; + grip.style.height = table.offsetHeight + 'px'; + grip.dataset.colIndex = i; + wrapper.appendChild(grip); + + (function(colIdx, gripEl) { + var startX, startW, nextStartW, col, nextCol; + gripEl.addEventListener('mousedown', function(e) { + e.preventDefault(); + startX = e.clientX; + col = []; + nextCol = []; + rows.forEach(function(row) { + var c = row.querySelectorAll('th, td'); + if (c[colIdx]) col.push(c[colIdx]); + if (c[colIdx + 1]) nextCol.push(c[colIdx + 1]); + }); + startW = col[0] ? col[0].offsetWidth : 100; + nextStartW = nextCol[0] ? nextCol[0].offsetWidth : 100; + document.body.style.cursor = 'col-resize'; + document.body.style.userSelect = 'none'; + + function onMove(ev) { + var diff = ev.clientX - startX; + var newW = Math.max(40, startW + diff); + var newNextW = Math.max(40, nextStartW - diff); + col.forEach(function(c) { c.style.width = newW + 'px'; }); + nextCol.forEach(function(c) { c.style.width = newNextW + 'px'; }); + } + function onUp() { + document.removeEventListener('mousemove', onMove); + document.removeEventListener('mouseup', onUp); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + createGrips(); + } + document.addEventListener('mousemove', onMove); + document.addEventListener('mouseup', onUp); + }); + })(i, grip); + } + + // 행 그립 - 각 행 하단에 배치 + var cumY = 0; + for (var r = 0; r < rows.length - 1; r++) { + cumY += rows[r].offsetHeight; + var rowGrip = document.createElement('div'); + rowGrip.className = 'table-row-grip'; + rowGrip.style.top = (cumY - 4) + 'px'; + rowGrip.style.width = table.offsetWidth + 'px'; + rowGrip.dataset.rowIndex = r; + wrapper.appendChild(rowGrip); + + (function(rowIdx, gripEl) { + var startY, startH; + gripEl.addEventListener('mousedown', function(e) { + e.preventDefault(); + startY = e.clientY; + startH = rows[rowIdx].offsetHeight; + document.body.style.cursor = 'row-resize'; + document.body.style.userSelect = 'none'; + + function onMove(ev) { + var diff = ev.clientY - startY; + rows[rowIdx].style.height = Math.max(20, startH + diff) + 'px'; + } + function onUp() { + document.removeEventListener('mousemove', onMove); + document.removeEventListener('mouseup', onUp); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + createGrips(); + } + document.addEventListener('mousemove', onMove); + document.addEventListener('mouseup', onUp); + }); + })(r, rowGrip); + } + } + + // 초기 그립 생성 (약간의 딜레이 후 — 렌더링 완료 대기) + setTimeout(createGrips, 100); + }); +})(); + +}); +</script> \ No newline at end of file diff --git a/samples/src/pages/civil-dx/big-room/어휴.html b/samples/src/pages/civil-dx/big-room/어휴.html new file mode 100644 index 0000000..6163927 --- /dev/null +++ b/samples/src/pages/civil-dx/big-room/어휴.html @@ -0,0 +1,513 @@ +<!DOCTYPE html> +<html lang="ko"> +<head> +<meta charset="UTF-8"> +<title>건설산업 DX의 올바른 이해 + + + + +
+ +
+

건설산업 DX의 올바른 이해

+

개념 정립을 통한 체계적 접근

+
+ + +
+

용어의 혼용

+
+ 건설산업의 디지털 전환 논의에서 DX(Digital Transformation)BIM(Building Information Modeling)이 개념적으로 명확히 정립되지 않은 채 혼용되어 사용되고 있음 +
+
+ 영향: BIM기술의 도입을 DX의 완성으로 오인하거나, DX를 BIM 기술 도입 수준으로 한정하는 인식 확산 +
+
+ + +
+

혼용 대표 사례

+
+
+
스마트 건설 활성화 방안
+
국토교통부, 2022.07
+
+ 추진과제: 건설산업 디지털화
+ 실행과제: BIM 전면 도입, BIM 전문인력 양성 +
+
+
+
제7차 건설기술진흥 기본계획
+
국토교통부, 2023.12
+
+ 추진방향: 디지털 전환을 통한 스마트 건설 확산
+ 추진과제: BIM 도입으로 건설산업 디지털화 +
+
+
+
+ 건설산업의 DX를 올바르게 이해하기 위해 각 용어의 정의, 역할, 상호관계에 대한 체계적 정립 필요 +
+
+ + +
+

용어 정의

+
+
+

건설산업

+ 종합산업 +
+ 다양한 시설물을 각 산업마다의 광범위한 기술을 통합 및 융합하여 만들어내는 종합산업 +
+
+ 목적 시설물의 품질 욕구를 충족시키면서 최단기간 내에 최소 비용으로 편리하고 안전하며 우수한 성능의 시설물 완성을 목표로 함 +
+
+ +
+

BIM (Building Information Modeling)

+ 디지털 전환을 위한 핵심 기술 +
+ 시설물의 생애주기동안 발생한 모든 정보를 3차원 모델 기반으로 통합·관리하는 정보 관리 도구 +
+
+ 건설 정보와 절차를 표준화된 방식으로 연계하고 디지털 협업이 가능하도록 하는 핵심 인프라 기술 +
+
건설산업 BIM 기본지침, 국토교통부, 2020
+
+ +
+

DX (Digital Transformation)

+ 산업 패러다임의 변화 +
+ 디지털 기술을 기반으로 산업 전반의 업무방식과 가치 창출 구조를 전환하는 과정 및 결과 +
+
+ 단순한 기술 도입이 아닌, 고객 가치와 의사결정 방식의 근본적인 변화로 산업의 새로운 방향을 정립하는 것을 의미함 +
+
Digital Transformation, IBM Institute for Business Value, 2011
+
+
+
+ + +
+

용어간 상호관계

+
+
+ 건설산업 DX + (Digital Transformation) +
+
GIS
+
BIM
+
+ Digital Twin + 가상환경 +
+
+
+
    +
  • DX는 BIM과 같은 디지털기술을 기반으로 산업 전반의 프로세스를 혁신하는 상위개념
  • +
  • 건설산업의 DX는 GIS(공간정보), BIM, 디지털 트윈(가상환경)의 기술융합을 통해서만 실현 또는 구현 가능 +
      +
    • GIS의 역할: 지리적 데이터를 공간 분석하여 시각적으로 표현, 위치기반 정보 제공
    • +
    • BIM의 역할: 형상정보와 내용정보가 포함된 3D모델로, 건설 정보 기반의 Process와 Product를 제공
    • +
    +
  • +
+
+
+ + +
+
핵심 요약
+
+ BIM은 건설산업의 디지털전환(DX)을 수행하는 과정에서
+ 가장 기초가 되는 일부분이다 +
+
+
+ + + \ No newline at end of file diff --git a/samples/src/pages/civil-dx/big-room/어휴2.html b/samples/src/pages/civil-dx/big-room/어휴2.html new file mode 100644 index 0000000..2a7741d --- /dev/null +++ b/samples/src/pages/civil-dx/big-room/어휴2.html @@ -0,0 +1,351 @@ + + + + +DX ≠ BIM: 개념 구분과 정립 + + + +
+ + +
+

DX ≠ BIM

+

건설산업 디지털전환의 올바른 이해

+
+ + +
+
⚠️
+
정책의 개념 혼동
+ +
+
스마트건설 활성화 방안 (2022)
+
목표: 디지털화 → 실행: BIM만 도입
+
+ +
+
건설기술진흥 기본계획 (2023)
+
목표: DX 확산 → 실행: BIM 중심화
+
+ +
+ BIM 도입 = DX 완성
+ 오해 확산 중 +
+
+ + +
+
+
+
DX
+
디지털 전환
+
+ +
GIS
+
BIM
+
+ Digital + Twin +
+
+ +
+
+ 상위개념 → 구성요소 +
+
+ + +
+
+
건설산업
+
종합산업
+
기술 통합·융합으로 시설물 완성
+
+ +
+
BIM
+
핵심 기술
+
3D 모델 기반 정보관리 도구
+
+ +
+
DX
+
패러다임 변화
+
업무방식·가치창출 구조 전환
+
+
+ + +
+
핵심 요약
+
+ BIM은 DX의 일부분이다 +
+
+ +
+ + \ No newline at end of file diff --git a/samples/src/styles/common.css b/samples/src/styles/common.css new file mode 100644 index 0000000..0f45703 --- /dev/null +++ b/samples/src/styles/common.css @@ -0,0 +1,570 @@ +html { + font-size: 10px; +} +html[lang="ko-KR"], +html[lang="ko"] { + font-family: Noto Sans KR, sans-serif; +} +html body { + color: #000; + font-size: 16px; + font-weight: 400; + letter-spacing: -0.04em; + line-height: 1.4; +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 100; + src: local("NotoKR-Thin"), local("NotoKR-Thin"), local("NotoKR-Thin"); + src: url(../fonts/NotoKR-Thin/notokr-thin.eot); + src: url(../fonts/NotoKR-Thin/notokr-thin.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 300; + src: local("NotoKR-Light"), local("NotoKR-Light"), local("NotoKR-Light"); + src: url(../fonts/NotoKR-Light/notokr-light.eot); + src: url(../fonts/NotoKR-Light/notokr-light.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 350; + src: local("NotoKR-DemiLight"), local("NotoKR-DemiLight"), + local("NotoKR-DemiLight"); + src: url(../fonts/NotoKR-DemiLight/notokr-demilight.eot); + src: url(../fonts/NotoKR-DemiLight/notokr-demilight.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 400; + src: local("NotoKR-Regular"), local("NotoKR-Regular"), local("NotoKR-Regular"); + src: url(../fonts/NotoKR-Regular/notokr-regular.eot); + src: url(../fonts/NotoKR-Regular/notokr-regular.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 500; + src: local("NotoKR-Medium"), local("NotoKR-Medium"), local("NotoKR-Medium"); + src: url(../fonts/NotoKR-Medium/notokr-medium.eot); + src: url(../fonts/NotoKR-Medium/notokr-medium.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 700; + src: local("NotoKR-Bold"), local("NotoKR-Bold"), local("NotoKR-Bold"); + src: url(../fonts/NotoKR-Bold/notokr-bold.eot); + src: url(../fonts/NotoKR-Bold/notokr-bold.eot?#iefix) + format("embedded-opentype"); +} +@font-face { + font-family: Noto Sans KR; + font-style: normal; + font-weight: 900; + src: local("NotoKR-Black"), local("NotoKR-Black"), local("NotoKR-Black"); + src: url(../fonts/NotoKR-Black/notokr-black.eot); + src: url(../fonts/NotoKR-Black/notokr-black.eot?#iefix) + format("embedded-opentype"); +} +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html { + -webkit-text-size-adjust: 100%; +} +main { + display: block; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} +b, +strong { + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +img { + border-style: none; +} +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type="button"], +[type="reset"], +[type="submit"], +button { + -webkit-appearance: button; +} +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + padding: 0.35em 0.75em 0.625em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + appearance: none; + height: auto; + margin: 0; +} +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details { + display: block; +} +summary { + display: list-item; +} +[hidden], +template { + display: none; +} +html * { + box-sizing: border-box; + word-wrap: break-word; +} +blockquote, +body, +button, +code, +dd, +div, +dl, +dt, +fieldset, +figure, +form, +h1, +h2, +h3, +h4, +h5, +h6, +iframe, +input, +legend, +li, +ol, +p, +pre, +td, +textarea, +th, +ul { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + text-size-adjust: 100%; +} +article, +aside, +canvas, +details, +embed, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section, +summary { + display: block; +} +command, +datalist, +keygen, +mark, +meter, +progress, +rp, +rt, +ruby, +time, +wbr { + display: inline; +} +img { + display: inline-block; + /* + image-rendering: -moz-crisp-edges; + image-rendering: -o-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: crisp-edges; + */ + max-width: 100%; + transform: translateZ(0); + vertical-align: top; +} +fieldset, +img { + border: 0; +} +li, +ol, +ul { + list-style: none; +} +pre { + white-space: pre-wrap; +} +caption, +legend { + position: relative; + clip: rect(0 0 0 0); + border: 0; + clear: both; + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + white-space: nowrap; + width: 1px; +} +a { + background-color: transparent; + color: inherit; + cursor: pointer; +} +a:active, +a:focus, +a:hover, +a:link, +a:visited { + text-decoration: none; +} +address, +cite, +em, +i { + font-style: normal; + font-weight: 400; +} +button, +input, +select, +table, +textarea { + background-color: transparent; + border: 0; + font-family: inherit; + font-size: inherit; +} +button, +select { + cursor: pointer; +} +input, +select, +textarea { + border: 0; + border-radius: 0; + outline-color: -moz-use-text-color; + outline-width: medium; +} +textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + resize: none; +} +label { + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +table { + border-spacing: 0; + table-layout: fixed; +} +table, +td, +th { + border-collapse: collapse; +} +select::-ms-expand { + display: none; +} +::-webkit-scrollbar { + height: 10px; + width: 7px; +} +::-webkit-scrollbar-thumb { + background-clip: padding-box; + background-color: #443b27; + border-bottom: 1px solid transparent; + border-radius: 8px; + border-top: 1px solid transparent; +} +::-webkit-scrollbar-track { + background-color: #000; +} +.clearfix:after, +.clearfix:before { + content: ""; + display: block; +} +.clearfix:after { + clear: both; +} +.blind { + position: absolute; + clip: rect(0 0 0 0); + border: 0; + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + white-space: nowrap; + width: 1px; +} +.d-none { + display: none !important; +} +[class*="gra"] { + position: relative; +} +[class*="gra"]:after, +[class*="gra"]:before { + border-radius: inherit; + content: ""; + pointer-events: none; + position: absolute; +} +[class*="gra"]:after { + inset: 0; + -webkit-mask: var(--mask-contents); + mask: var(--mask-contents); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; +} +.modal { + background-color: rgba(0, 0, 0, 0.8); + display: none; + height: 100%; + left: 0; + overflow: auto; + position: fixed; + top: 0; + width: 100%; + z-index: 1; + z-index: 30; +} +.modal .modal-content { + background-color: #f6f1e9; + border: 1px solid #888; + border-radius: 8px; + left: 50%; + padding: 56px 24px 24px 24px; + position: absolute; + text-align: center; + top: 50%; + transform: translate(-50%, -50%); + height: auto; + width: auto; +} +.modal .modal-content video { + height: auto; + width: auto; + max-height: 70vh; + max-width: 70vw; +} +.modal .close { + background: none; + color: #000; + display: block; + filter: var(--text-shadow); + float: right; + font-size: 26px; + font-weight: 700; + height: 26px; + line-height: 1; + margin-left: auto; + position: absolute; + right: 12px; + top: 12px; + transition: all 0.1s ease-in-out; + width: 26px; +} +.modal .close:focus, +.modal .close:hover { + color: #e00400; + cursor: pointer; + text-decoration: none; + /* + text-shadow: var(--text-stroke); + */ +} +.modal p { + font-size: 14px; + margin-top: 8px; + color: #333; + font-weight: 500; +} +.container:has(.markdown-content) .btn-back { + position: absolute; +} +.btn-back { + align-items: center; + background: #c3b79e; + border-radius: 4px; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + inset 0 -3px 4px 0 rgba(56, 48, 31, 0.25); + display: flex; + height: 4rem; + justify-content: center; + left: 16px; + position: sticky; + top: 16px; + width: 4rem; + z-index: 1; +} +.btn-back:before { + background: linear-gradient(180deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.3)); + border-radius: inherit; + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + position: absolute; +} +.btn-back:focus, +.btn-back:hover { + background: hsla(41, 24%, 69%, 0.6); +} +.btn-back .ico-back { + aspect-ratio: 1/1; + background-image: url(/help/images/ico/ico_arrow_back.svg); + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; + display: block; + width: 2rem; +} +.dim-background { + background-color: rgba(0, 0, 0, 0.8); + display: none; + height: var(--window-inner-height); + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 1; +} + +@media (min-width: 2561px) { + html { + font-size: 12px; + } +} +@media (min-width: 1921px) { + html { + font-size: 11px; + } +} +@media (max-width: 1920px) { + html { + font-size: 10px; + } +} diff --git a/samples/src/styles/custom.css b/samples/src/styles/custom.css new file mode 100644 index 0000000..f6c7da4 --- /dev/null +++ b/samples/src/styles/custom.css @@ -0,0 +1,292 @@ +@import "katex/dist/katex.min.css"; + +img[alt$="emoji"] { + display: inline-block; + width: 1.3em; + height: 1.3em; + vertical-align: -.1em; +} + +.emoji { + display: inline-block; + width: 1.3em; + height: 1.3em; + vertical-align: -.3em; +} + +[data-heading-number] { + position: relative; +} + +[data-heading-number]::before { + content: attr(data-heading-number); + display: inline-block; + margin-right: 0.35rem; + color: var(--sl-color-text-accent); + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +/* Remove Starlight content wrapper horizontal padding globally */ +:global(.content-panel) { + padding-left: 0; + padding-right: 0; +} + +.header { + display: flex; + align-items: center; + gap: 12px; + padding-right: 16px; +} +.topbar { + position: sticky; + top: 0; + z-index: 10; +} + +.variant-switcher { + margin-left: auto; +} + +.pdf-download-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: auto; + height: auto; + border: none; + border-radius: 0; + color: var(--sl-color-text, #e2e8f0); + background: transparent; + transition: transform 0.12s ease, opacity 0.12s ease; + margin-inline-end: 0.35rem; + padding: 0.15rem 0.1rem; +} + +.pdf-download-btn:hover { + opacity: 0.9; + transform: translateY(-1px); +} + +.pdf-download-btn img { + width: 22px; + height: 22px; + display: block; +} + +.nova-header-actions-lg { + display: flex; + align-items: center; + gap: 0.35rem; +} + +.variant-switcher select { + background: #0f172a; + color: #e2e8f0; + border: 1px solid #1e293b; + border-radius: 8px; + padding: 6px 10px; + font-size: 13px; + min-width: 140px; +} + +.variant-switcher select:focus { + outline: 2px solid #38bdf8; + outline-offset: 1px; +} + +.sr-only { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.landing-body { + margin: 0; + min-height: 100vh; + background: radial-gradient(circle at 20% 20%, #0f172a 0, #0b1324 45%, #0a0f1c 100%); + color: #e2e8f0; + font-family: 'Pretendard', system-ui, -apple-system, 'Segoe UI', sans-serif; +} + +.landing { + max-width: 1180px; + margin: 0 auto; + padding: 48px 16px 64px; +} + +.landing-header { + text-align: left; + margin-bottom: 32px; +} + +.landing-header .eyebrow { + font-size: 13px; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #a5b4fc; + margin: 0 0 8px; +} + +.landing-header h1 { + margin: 0 0 12px; + font-size: 32px; + color: #f8fafc; +} + +.landing-header .lede { + margin: 0; + color: #cbd5e1; + max-width: 620px; + line-height: 1.6; +} + +.landing-grid { + display: grid; + gap: 18px; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); +} + +.landing-card { + display: grid; + gap: 12px; + padding: 20px; + border-radius: 14px; + background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(15,23,42,0.6)); + border: 1px solid rgba(148, 163, 184, 0.2); + text-decoration: none; + color: inherit; + transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; + min-height: 180px; +} + +.landing-card:hover { + transform: translateY(-2px); + border-color: rgba(148, 163, 184, 0.45); + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.25); +} + +.landing-card .card-head { + display: flex; + justify-content: space-between; + align-items: center; +} + +.landing-card .pill { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 10px; + border-radius: 999px; + background: rgba(99, 102, 241, 0.18); + color: #c7d2fe; + font-weight: 700; + font-size: 13px; +} + +.landing-card .card-desc { + margin: 0; + line-height: 1.6; + color: #cbd5e1; +} + +.landing-card .card-cta { + font-weight: 700; + color: #a5b4fc; +} + +.login-carousel { + position: relative; + display: grid; + gap: 12px; + width: calc(100% - 20px); + margin: 0 auto; +} + +.login-carousel .track { + position: relative; + overflow: hidden; + border-radius: 12px; + background: #0f172a; +} + +.login-carousel .slide { + display: none; + margin: 0; + align-items: center; + gap: 12px; + padding: 10px; +} + +.login-carousel .slide.is-active { + display: grid; +} + +.login-carousel img { + width: 100%; + max-width: none; + border-radius: 8px; + display: block; +} + +.login-carousel .caption { + color: #e2e8f0; + padding: 4px 0 0; +} + +.login-carousel .caption h4 { + margin: 0 0 4px; + font-weight: 700; + color: #f8fafc; +} + +.login-carousel .caption p { + margin: 0; + line-height: 1.5; +} + +.login-carousel .nav { + position: absolute; + top: 50%; + transform: translateY(-50%); + background: rgba(15, 23, 42, 0.85); + color: #f8fafc; + border: none; + padding: 10px 14px; + border-radius: 999px; + cursor: pointer; + z-index: 2; +} + +.login-carousel .nav:hover { + background: rgba(15, 23, 42, 0.95); +} + +.login-carousel .prev { left: 10px; } +.login-carousel .next { right: 10px; } + +.login-carousel .dots { + display: flex; + gap: 8px; + justify-content: center; + align-items: center; +} + +.login-carousel .dot { + width: 10px; + height: 10px; + border-radius: 50%; + border: none; + background: #cbd5e1; + cursor: pointer; +} + +.login-carousel .dot.is-active { + background: #334155; +} diff --git a/samples/src/styles/style.css b/samples/src/styles/style.css new file mode 100644 index 0000000..8df1f88 --- /dev/null +++ b/samples/src/styles/style.css @@ -0,0 +1,1994 @@ +:root { + --min-height: 814px; + --page-tail-size: 6.4rem; + --text-page-title: #b6d0c9; + --text-base: #131313; + --text-primary: #006aff; + --text-secondary: #00a6ff; + --text-accent: #FF7F00; + --text-nav-title: #fef8ca; + --text-accent-lnb: #ffc600; + --text-tip-title: #e4ddcf; + --text-tip-text: #534731; + --bg-base: #e4ddcf; + --bg-inner: #f6f1e9; + --bg-tip-title: #534731; + --bg-gra-nav: linear-gradient( + 90deg, + #0f3025, + #194335 38%, + #0b221b 87.51%, + #0d231c + ); + + --bg-gra-tail: linear-gradient(180deg, #0f5a44, #0f3227 86.31%); + --bg-gra-group:linear-gradient(180deg, #044F39 , transparent 100%); + --bg-gra-depth01: linear-gradient( + 122deg, + rgba(27, 76, 61, 0.4) 7.61%, + rgba(18, 60, 47, 0) 16.66% + ), + linear-gradient(180deg, #123328, rgba(18, 51, 40, 0)); + --topbar-height: 90px; + --border-gra-tail: linear-gradient(180deg, #209f79, transparent); + --border-gra-depth: linear-gradient(180deg, #237D62, rgba(19, 74, 57, 0) 100%); + --border-gra-depth02: linear-gradient(180deg, rgba(19, 74, 57, 0) 50%, #237D62 100%); + --border-accent: #eb5f00; + --text-stroke: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, + 1px 1px 0 #000; + --bg-shadow: drop-shadow(0 -8px 15px rgba(0, 0, 0, 0.05)); + --text-shadow: drop-shadow(0 0 0.5px #000); + --btn-shadow: drop-shadow(0 2px 2px #000000aa) + drop-shadow(0 -1px 1px #000000aa); + --depth01-shadow: 0 -2px 2px 0 rgba(0, 0, 0, 0.25); + --mask-contents: linear-gradient(#fff 0 0) content-box, + linear-gradient(#fff 0 0); + --gra-tail-bg: linear-gradient(180deg, #0f5a44, #0f3227 86.31%); +} +html { + scroll-behavior: smooth; +} +html.is-locked body { + box-sizing: border-box; + height: calc(var(--window-inner-height) - 1px); + overflow: hidden; +} +html.is-locked #wrap { + position: fixed; +} +html body { + margin: 0; + padding: 0; +} +.wrap { + background: #e4ddcf; + display: block; + min-height: var(--min-height); + min-width: 1700px; + position: relative; + width: 100%; +} + +.wrap[class*="commands"] { + background: #f6f1e9; +} +@media (height > 814px) { + .wrap[class*="commands"] { + min-height: var(--window-inner-height); + } +} +.inner { + margin: 0 auto; + max-width: 1380px; +} +.header { + background: var(--bg-gra-nav); + left: 0; + padding: 30px 0 25px 16px; + position: sticky; + top: 0; + width: 100%; + z-index: 2; +} +.header h1 { + color: var(--text-page-title); + filter: var(--text-shadow); + font-size: 22px; + font-weight: 700; + line-height: 1; + text-shadow: var(--text-stroke); +} +.nav { + width: 100%; +} +.nav-wrap { + background: var(--bg-gra-nav); + display: flex; + flex-direction: column; + height: calc(100vh - var(--topbar-height)); + width: 250px; + overflow: visible; + position: fixed; + top: var(--topbar-height); + z-index: 9; +} +.nav-wrap.open { + z-index: 0; +} +.lnb-container { + position: absolute; + top: 0; + left: 0; + margin-top: 195px; + width: 250px; + max-height: calc(100vh - var(--topbar-height) - 195px); + overflow: auto; +} + +/* 탭 메뉴 */ +.sidebar-wrap { + position: sticky; + top: 77px; + left: 0; + width: 100%; + height: 118px; + padding: 0 0 14px 12px; + z-index: 2; + background: var(--bg-gra-nav); +} +.sidebar-tabs { + position: relative; + display: flex; + width: 226px; + padding: 4px; + border-radius: 25px; + background: rgba(0, 0, 0, 0.3); + box-shadow: 0 -2px 16px 4px rgba(0, 0, 0, 0.8) inset; +} +.sidebar-tabs::after { + content: " "; + position: absolute; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + border-radius: inherit; + background: linear-gradient( + 180deg, + #1c946c, + #3ece9e 29%, + #07402d 72%, + #158862 100% + ); + padding: 1px; + width: calc(100% + 1px); + box-sizing: border-box; + opacity: 0.5; +} + +.tab-button { + position: relative; + flex: 1; + height: 40px; + font-size: 14px; + font-weight: 700; + border-radius: 25px; + color: rgba(255, 255, 255, 0.8); + cursor: pointer; + transition: all 0.2s ease; +} +.tab-button span{ + text-shadow: var(--text-stroke); + filter: var(--text-shadow); +} +.tab-button:hover { + color: var(--text-accent-lnb); +} +.sidebar-tabs:has(.tab-button.active[data-tab="commands"]) .tab-btn-bg{ + left: 50%; +} +.tab-btn-bg { + position: absolute; + top: 4px; + left: 4px; + display: block; + width: 109px; + height: 40px; + border-radius: 25px; + background: linear-gradient( + 180deg, + #15946e 0%, + #19b27f 33%, + #197758 64%, + #0a5f45 82%, + #0b664e 100% + ); + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.5), 0 2px 4px 0 rgba(0, 0, 0, 0.8); + transition: left 0.15s ease; +} + +.tab-btn-bg::after { + content: " "; + position: absolute; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + border-radius: inherit; + background: linear-gradient( + 180deg, + #23d2a0, + #1b614c 19%, + #99ffe1 39%, + #125c47 82%, + #158160 100% + ); + padding: 1px; + width: calc(100% + 1px); + box-sizing: border-box; +} +.tab-button.active[data-tab="grimmi"] { + color: var(--text-accent-lnb); +} +.tab-button.active[data-tab="commands"], +.tab-button[data-tab="commands"]:hover { + color: var(--text-accent); +} +.tab-button i { + font-size: 16px; +} + +.tab-content { + display: none; +} + +.tab-content.active { + display: block; +} + +/* 탭 메뉴 END */ + +/* nav */ +.nav-group .depth01 { + position: relative; + z-index: 1; + padding: 4px 0 0 16px; +} +.nav-group .depth01 > li { + position: relative; + color: #fff; + transition: all 0.3s ease-out; + z-index: 1; +} + +.nav-group a { + position: relative; + display: flex; + align-items: center; + text-shadow: var(--text-stroke); + width: 100%; + filter: var(--text-shadow); + font-size: 14px; + font-weight: 500; + height: 30px; + line-height: 30px; +} +.nav-group .depth01 > li .ico-arrow { + background-image: url(/help/images/ico/ico_arrow_dn.svg); + cursor: pointer; + display: inline-block; + height: 14px; + position: relative; + width: 14px; + transform: rotate(-90deg); + transition: all 0.2s linear; +} +.nav-group .depth02 > li .ico-line { + display: inline-block; + height: 14px; + position: relative; + width: 10px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'%3E%3Crect x='4' y='6' width='6' height='2' rx='1' fill='white'/%3E%3Crect x='3.5' y='5.5' width='7' height='3' rx='1.5' stroke='black' stroke-opacity='0.8' stroke-linecap='round'/%3E%3C/svg%3E"); +} +.nav-group .depth01 > li:has(.active) .ico-arrow { + background-image: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.8163 4.93942C11.0831 5.23962 11.0561 5.69931 10.7559 5.96616L7 9.30473L3.24411 5.96616C2.9439 5.69931 2.91686 5.23962 3.18371 4.93942C3.45056 4.63921 3.91025 4.61217 4.21045 4.87902L7 7.35862L9.78955 4.87902C10.0898 4.61217 10.5494 4.63921 10.8163 4.93942Z' fill='%23FFC600'/%3E%3Cpath d='M11.1904 4.60742C11.6404 5.11402 11.5944 5.88963 11.0879 6.33984L7.33203 9.67871L7 9.97363L6.66797 9.67871L2.91211 6.33984C2.40562 5.88963 2.35956 5.11402 2.80957 4.60742C3.25987 4.10083 4.03637 4.0546 4.54297 4.50488L7 6.68945L9.45703 4.50488C9.96363 4.0546 10.7401 4.10083 11.1904 4.60742Z' stroke='black' stroke-opacity='0.8' stroke-linecap='round'/%3E%3C/svg%3E%0A"); +} +.nav-group .depth02 > li.active .ico-line { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'%3E%3Crect x='4' y='6' width='6' height='2' rx='1' fill='black'/%3E%3C/svg%3E");} +.grid-layout .nav-group .depth01 > li:has(.active) .ico-arrow { + background-image: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.8163 4.93942C11.0831 5.23962 11.0561 5.69931 10.7559 5.96616L7 9.30473L3.24411 5.96616C2.9439 5.69931 2.91686 5.23962 3.18371 4.93942C3.45056 4.63921 3.91025 4.61217 4.21045 4.87902L7 7.35862L9.78955 4.87902C10.0898 4.61217 10.5494 4.63921 10.8163 4.93942Z' fill='%23FF7F00'/%3E%3Cpath d='M11.1904 4.60742C11.6404 5.11402 11.5944 5.88963 11.0879 6.33984L7.33203 9.67871L7 9.97363L6.66797 9.67871L2.91211 6.33984C2.40562 5.88963 2.35956 5.11402 2.80957 4.60742C3.25987 4.10083 4.03637 4.0546 4.54297 4.50488L7 6.68945L9.45703 4.50488C9.96363 4.0546 10.7401 4.10083 11.1904 4.60742Z' stroke='black' stroke-opacity='0.8' stroke-linecap='round'/%3E%3C/svg%3E%0A"); +} +.nav-group .depth01 > li.active .ico-arrow { + transform: rotate(0deg); +} +.nav-group .depth01 > li > a{ + height: 34px; + line-height: 34px; +} +.nav-group .depth01 > li:has(.active) > a { + color: var(--text-accent-lnb); +} +.grid-layout .nav-group .depth01 > li:has(.active) > a{ + color: var(--text-accent); +} + +.nav-group ul:not(.depth01) li.active > a { + color: #000; + filter: none; + font-weight: 700; + position: relative; + text-shadow: none; +} +.nav-group ul:not(.depth01) li.active > a, +.nav-group ul:not(.depth01) li.active > a:hover { + background: linear-gradient( + 0deg, + hsla(39, 41%, 87%, 0.5), + hsla(39, 41%, 87%, 0.5) + ), + #fff; +} +.nav-group ul:not(.depth01) li.active > a:before { + border-bottom: 2px solid #000; + border-left: 2px solid #000; + border-top: 2px solid #000; + left: 0; +} +.nav-group ul:not(.depth01) li.active > a:after, +.nav-group ul:not(.depth01) li.active > a:before { + border-radius: inherit; + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + position: absolute; + width: 100%; +} +.nav-group ul:not(.depth01) li.active > a:after { + background: linear-gradient( + 90deg, + #A67D03, + #FFE873 25%, + rgba(242, 204, 15, 0) 68% + ); +} + +.tab-content.grid-layout .nav-group ul:not(.depth01) li.active > a:after{ + background: linear-gradient( + 90deg, + #AE5700, + #FFBD7C 25%, + rgba(255, 189, 124, 0) 68% + ); +} + + +/* 가이드 목록 */ +.tab-content:not(.grid-layout) { + margin-bottom: 4px; + border-top: 1px solid rgba(32, 159, 121, 0.50); + background: var(--bg-gra-group); + background-size: 292px 69px; + background-position: -21px 0; + background-repeat: no-repeat; + overflow: hidden; +} +.nav-wrap .group-tit { + display: flex; + width: 100%; + align-items: center; + position: relative; +} +.nav-wrap .group-tit h2 { + width: 100%; + align-items: center; + color: var(--text-nav-title); + display: flex; + filter: var(--text-shadow); + font-size: 12px; + font-weight: 600; + gap: 4px; + + margin-bottom: 4px; + height: 14px; + padding-left: 16px; + justify-content: flex-start; + text-shadow: var(--text-stroke); + z-index: 1; +} +.tab-content:not(.grid-layout) .nav-group { + position: relative; + margin-bottom: 20px; + margin-top: 14px; +} + +.nav-group:has(.depth02 .active) .group-tit h2 { + color: var(--text-accent-lnb); +} +.tab-content:not(.grid-layout) .nav-group .depth01 { + border-radius: 8px 0 0 0; +} +.tab-content:not(.grid-layout) + .nav-group + .depth01 + > li.active:not(:has(.single)) { + background: rgba(0, 0, 0, 0.4); + padding-bottom: 4px; + /* margin-bottom: 2px; */ +} +.tab-content:not(.grid-layout) + .nav-group + .depth01 + > li.active:not(:last-child) { margin-bottom: 2px;} + +.tab-content:not(.grid-layout) + .nav-group + .depth01 + > li.active:not(:has(.single)):after { + box-sizing: border-box; + content: " "; + height: 100%; + position: absolute; + width: 100%; +} + +.tab-content:not(.grid-layout) + .nav-group + .depth01 + > li.active:not(:has(.single)):after { + background: linear-gradient(90deg, #10503C, rgba(16,80,60,0.3)); + padding: 1px; + width: calc(100% + 1px); +} + +.tab-content:not(.grid-layout) .nav-group a { + border-radius: 4px 0 0 4px; + gap: 4px; + padding-left: 8px; +} +.tab-content:not(.grid-layout) .nav-group .depth01 > li { + border-radius: 4px; +} + +.tab-content:not(.grid-layout) .nav-group .depth01 > li.active > a:hover { + background: rgba(3, 30, 21, 0.5); +} + +.tab-content:not(.grid-layout) .nav-group .depth01 > li:after { + border-radius: inherit; + content: " "; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + position: absolute; +} +.tab-content:not(.grid-layout) .nav-group .depth01 > li a { + padding-left: 8px; + text-transform: uppercase; +} + +.tab-content:not(.grid-layout) + .nav-group + .depth01 + li:not(.active, :has(.single)) + > a:hover { + background: rgba(3, 30, 21, 0.5); +} +.tab-content:not(.grid-layout) .nav-group ul:not(.depth01) { + position: relative; +} +.tab-content:not(.grid-layout) .nav-group ul:not(.depth01) li { + position: relative; + z-index: 1; +} +/* +.tab-content:not(.grid-layout) .nav-group .depth02.single { + padding-left: 22px; +} + */ +.tab-content:not(.grid-layout) .nav-group .depth02:not(.single) { + padding-left: 20px; +} +.tab-content:not(.grid-layout) .nav-group .depth02:not(.single) > li > a { + padding-left: 16px; +} +.tab-content:not(.grid-layout) .nav-group .depth02:not(.single) > li:has(.depth03) > a { + padding-left: 4px; + gap: 4px; +} + +.tab-content:not(.grid-layout) .nav-group .depth02 > li > a span { + align-items: center; + display: flex; + gap: 8px; + justify-content: center; + position: relative; +} +.tab-content:not(.grid-layout) .nav-group .depth02.single > li > a { + padding-left: 12px; +} +.tab-content:not(.grid-layout) .nav-group .depth02.single > li > a span { + gap:8px; +} +.tab-content:not(.grid-layout) + .nav-group + .depth02.single + > li + > a + span:before { + background-color: #fff; + border-radius: 50%; + content: " "; + height: 4px; + outline: 1px solid #000; + width: 4px; +} +.tab-content:not(.grid-layout) + .nav-group + .depth02.single + > li.active + > a + span:before { + background-color: #000; + outline: none; +} +.tab-content:not(.grid-layout) .nav-group .depth03 { + padding-left: 20px; +} +.tab-content:not(.grid-layout) .nav-group .depth03:not(.single):before { + background-color: hsla(0, 0%, 100%, 0.2); + content: " "; + display: block; + height: calc(100% - 8px); + left: 9.5px; + position: absolute; + top: -6px; + width: 2px; +} +.tab-content:not(.grid-layout) .nav-group .depth03:not(.single) li:before { + background-color: hsla(0, 0%, 100%, 0.2); + content: " "; + display: block; + height: 2px; + left: -8.5px; + position: absolute; + top: 16px; + width: 10px; +} +.tab-content:not(.grid-layout) + .nav-group + .depth03:not(.single) + li:last-child:before { + left: -10.5px; + width: 11px; +} +/* 명령어 목록 */ +/* 2열 그리드 레이아웃 (commands 탭 전용) */ +.tab-content.grid-layout .nav-group { + margin-bottom: 20px; +} + +.tab-content.grid-layout .group-tit { + display: none; +} + +.tab-content.grid-layout .depth01 { + display: grid; + grid-template-columns: 50% 50%; + padding: 0; + border-top: 1px solid #000; +} + +.tab-content.grid-layout .depth01 > li { + margin: 0; + display: flex; + flex-direction: column; + border-bottom: 1px solid #000; + width: 100%; + z-index: 0; +} +.tab-content.grid-layout .depth01 > li.active { + z-index: 1; +} + +.tab-content.grid-layout .depth01 > li > a { + border-right: 1px solid #000; +} +.tab-content.grid-layout .depth01 > li:nth-child(2n) > a { + border-right: none; +} + +/* depth01 > li 안의 토글 링크 */ +.tab-content.grid-layout .depth01 > li > a[data-toggle] { + position: relative; + display: flex; + align-items: center; + gap: 6px; + padding: 8px 12px; + font-size: 13px; + font-weight: 600; + text-transform: uppercase; + box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.1) inset, + 1px 0 0 0 rgba(255, 255, 255, 0.1); +} +.tab-content.grid-layout .depth01 > li > a[data-toggle="commands_menuGroup01"]{ + text-transform: none; +} +.tab-content.grid-layout .depth01 > li.active > a { + background: rgba(0, 0, 0, 0.24); +} +.tab-content.grid-layout .depth01 > li.active > a::after { + content: " "; + position: absolute; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + border-radius: 4px 4px 0 0; + background:var(--border-gra-depth); + padding: 1px; + width: calc(100% - 1px); + box-sizing: border-box; +} +/* depth02 컨테이너 - 그리드 칸 안에서 표시 */ + +.tab-content.grid-layout .depth01 > li.active .depth02 { + background: rgba(0, 0, 0, 0.4); + padding: 4px 0 4px 8px; + border-radius: 0 0 4px 4px; +} +.tab-content.grid-layout .depth02 { + position: relative; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + width: 200%; +} + +.tab-content.grid-layout .depth02::after { + content: " "; + position: absolute; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + border-radius: 0 0 4px 4px; + background:var(--border-gra-depth02); + width: calc(100% - 2px); + box-sizing: border-box; +} + +.tab-content.grid-layout .depth01 > li:nth-child(2n) .depth02 { + margin-left: -100%; +} + +.tab-content.grid-layout .depth02 a:hover { + background: rgba(3, 30, 21, 0.5); +} + +/* depth02가 single일 때 */ +.tab-content.grid-layout .depth02.single { + padding: 0; +} + +.tab-content.grid-layout .depth02 > li { + margin: 0; +} +.tab-content.grid-layout .depth02 > li.active { + z-index: 1; +} + +/* depth02 링크 스타일 */ +.tab-content.grid-layout .depth02 a { + padding: 0px 12px; + border-radius: 4px 0 0 4px; + font-size: 13px; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* depth03도 depth02 안에서 표시 */ +.tab-content.grid-layout .depth03 { + padding-left: 12px; +} + +.tab-content.grid-layout .depth03 > li { + margin: 0; +} + +.tab-content.grid-layout .depth03 a { + padding: 6px 12px; + font-size: 12px; +} + +/* group-tit은 전체 너비 차지 */ +.tab-content.grid-layout .group-tit { + margin-bottom: 12px; +} + +.tab-content.grid-layout .group-tit h2 { + font-size: 14px; + font-weight: 700; + display: flex; + align-items: center; + gap: 6px; +} + +/* nav END */ +.container { + flex-grow: 1; + position: relative; + width: 100%; + z-index: 2; + padding-left: 250px; +} +.container section { + align-items: center; + display: flex; + flex-direction: column; + height: var(--window-inner-height); + justify-content: flex-start; + min-height: var(--min-height); + min-width: 1450px; + position: relative; + width: 100%; +} +.container section:has(.tip-box) .contents { + min-height: calc(var(--min-height) - 12.4rem); +} +.page-tit-wrap { + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + max-height: 12.4rem; +} +.page-tit-wrap:has(.tip-box) .tit-box { + filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1)); + height: -moz-max-content; + height: max-content; + position: relative; +} +.page-tit-wrap:has(.tip-box) .tit-box h3 { + align-items: center; + background: linear-gradient(180deg, #f1ede6, #e7e1d5); + display: flex; + height: 6.4rem; + justify-content: center; + padding: 0.4rem 16px 0; + position: relative; + z-index: 1; +} +.page-tit-wrap:has(.tip-box) .tit-box h3:before { + background: #fff; + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 100%; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 0 0 1px; + pointer-events: none; + position: absolute; + width: 100%; +} +.page-tit-wrap:has(.tip-box) .tit-box .page-tail { + height: 6.4rem; + position: relative; + width: 6.4rem; +} +.page-tit-wrap:has(.tip-box) .tit-box .page-tail:last-child { + transform: scaleX(-1); +} +.page-tit-wrap:has(.tip-box) .tit-box .page-tail:after, +.page-tit-wrap:has(.tip-box) .tit-box .page-tail:before { + -webkit-mask-image: url(/help/images/mask_page_tail.svg); + mask-image: url(/help/images/mask_page_tail.svg); + -webkit-mask-position: left center; + mask-position: left center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: cover; + mask-size: cover; + position: absolute; + top: 0; +} +.page-tit-wrap:has(.tip-box) .tit-box .page-tail:before { + background: linear-gradient(180deg, hsla(0, 0%, 100%, 0.5), #fff); + content: ""; + height: 100%; + left: 0; + width: 100%; +} +.page-tit-wrap:has(.tip-box) .tit-box .page-tail:after { + background: linear-gradient(180deg, #f1ede6, #e7e1d5); + content: ""; + height: calc(100% - 1px); + right: -1px; + width: calc(100% - 1px); +} +.tit-box { + align-items: center; + display: flex; + font-size: 2.4rem; + height: 7rem; + justify-content: center; + position: relative; + width: -moz-max-content; + width: max-content; +} +.tit-box span { + color: var(--text-accent); +} +.tip-box { + align-items: center; + display: flex; + gap: 14px; + justify-content: center; + padding: 18px 0; +} +.tip-box .tip-tit { + background-color: var(--bg-tip-title); + border-radius: 25px; + color: var(--text-tip-title); + font-size: 1.2rem; + font-weight: 700; + padding: 4px 14px; +} +.tip-box dl { + align-items: center; + display: flex; + gap: 8px; + justify-content: center; +} +.tip-box dl dt { + background-color: var(--bg-tip-title); + border-radius: 25px; + color: var(--text-tip-title); + font-size: 1rem; + font-weight: 700; + padding: 2px 10px; +} +.tip-box dl dd { + display: flex; + align-items: center; + color: var(--text-tip-text); + font-size: 1.4rem; + font-weight: 500; +} +.tip-box dl dd img { + width: 20px; +} +.contents { + align-items: center; + background: #f6f1e9; + border-top-left-radius: 40px; + border-top-right-radius: 40px; + display: flex; + filter: drop-shadow(0 -8px 15px rgba(0, 0, 0, 0.05)); + flex-grow: 1; + height: 100%; + justify-content: center; + overflow: hidden; + position: relative; + text-align: center; + width: 100%; +} + +.login .contents{ + position: relative; +background: linear-gradient( + to right, + #F0EADF 0%, + #F0EADF calc(50% - 1px), + #FAF8F4 calc(50% - 1px), + #FAF8F4 calc(50% + 1px), + #F6F1E9 calc(50% + 1px), + #F6F1E9 100% +); +} +.login .contents::before { + content :" "; + position: absolute; + top: 0; + left: 0; + width: calc(50% - 1px); + height: 100%; + background: linear-gradient(270deg, rgba(157, 133, 89, 0.16) 0%, rgba(157, 133, 89, 0.00) 50%); + opacity: 0.5; +} +.contents .inner { + max-height: 100%; + max-width: 100%; + position: relative; +} +.contents .bg-img { + height: auto; + -o-object-fit: contain; + object-fit: contain; + width: 100%; +} +.contents .ex-wrap { + left: 0; + position: absolute; + top: 0; +} +.contents .ex-wrap, +.contents .ex-wrap svg { + height: 100%; + width: 100%; +} +.contents .ex-wrap img { + height: 100%; + left: 0; + -o-object-fit: contain; + object-fit: contain; + position: absolute; + top: 0; + width: 100%; +} +.contents [class^="link"] { + border-radius: 2px; + cursor: pointer; + height: 2.7027027027%; + position: absolute; + +} +.contents [class^="link"]:focus, +.contents [class^="link"]:hover { + background: #00000077; + mix-blend-mode: soft-light; +} +section:has(.tip-box) .bg-img { + max-height: calc(var(--window-inner-height) - 12.4rem); + min-height: calc(var(--min-height) - 12.4rem); +} +section .bg-img { + max-height: calc(var(--window-inner-height) - 7rem); + min-height: calc(var(--min-height) - 7rem); +} +.description li { + align-items: center; + display: flex; + flex-direction: column; + gap: 4px; + height: 0; + justify-content: center; + position: absolute; +} +.description li.revers { + flex-direction: column-reverse; +} +.description li h6 { + align-items: center; + background-color: #fff; + border: 1.5px solid var(--border-accent); + border-radius: 2px; + color: var(--text-accent); + display: flex; + font-size: 1.4rem; + height: 2.4rem; + justify-content: center; + padding: 0 8px; +} +.description li p { + font-size: 1.4rem; +} + +.interface01 .link-userset { + left: 61.1976%; + top: 28.92857%; + width: 5.92814%; +} + +.interface01 .link-sw { + right: 8.20359%; + top: 40%; + width: 5.32934%; +} + +.mainview .link-homemenu { + left: 5.8682634731%; + top: 3.2657657658%; + width: 4.251497006%; +} +.mainview .link-filetab { + height: 5.1801801802%; + left: 1.2305389222%; + top: 48.8738738739%; + width: 8.0239520958%; +} +.mainview .link-layer { + left: 24.371257485%; + top: 48.536036036%; + width: 5.9281437126%; +} +.mainview .link-color { + left: 32.9341317365%; + top: 44.1441441441%; + width: 5.1497005988%; +} +.mainview .link-line { + left: 39.9401197605%; + top: 46.3963963964%; + width: 6.6467065868%; +} +.mainview .link-text { + left: 56.8862275449%; + top: 39.9774774775%; + width: 7.4251497006%; +} +.mainview .link-msmt { + right: 27.6047904192%; + top: 39.9774774775%; + width: 7.4251497006%; +} +.mainview .link-propsbar { + right: 21.0778443114%; + top: 7.6576576577%; + width: 4.7904191617%; +} +.mainview .link-mainprops { + right: 8.7425149701%; + top: 13.963963964%; + width: 4.251497006%; +} +.mainview .link-print { + right: 22.6347305389%; + top: 29.4166666667%; + width: 3.4730538922%; +} +.mainview .link-ggurumi { + right: 18.0239520958%; + top: 29.4166666667%; + width: 4.251497006%; +} +.mainview .link-mainprf { + left: 4.8556886228%; + top: 76.3513513514%; + width: 8.2035928144%; +} +.mainview .link-setbar { + left: 5.8083832335%; + top: 86.1486486486%; + width: 8.2035928144%; +} +.mainview .link-cmdbar { + right: 44.251497006%; + top: 86.1486486486%; + width: 7.4251497006%; +} +.mainview .link-cmdall { + right: 6.2275449102%; + top: 83.3333333333%; + width: 7.6047904192%; +} +.mainview .link-layouttab { + height: 5.1801801802%; + right: 1.377245509%; + top: 70.7207207207%; + width: 8.0239520958%; +} + +.customize01 .link-prfall { + left: 2.8143712575%; + top: 7.2619047619%; + width: 8.2035928144%; +} +.customize01 .link-cmdall { + left: 52.5748502994%; + top: 7.2619047619%; + width: 7.4251497006%; +} + +.customize03 .link-grid { + left: 25.1497005988%; + top: 4.880952381%; + width: 4.371257485%; +} +.customize03 .link-grip { + left: 39.4311377246%; + top: 4.880952381%; + width: 6.9461077844%; +} +.customize03 .link-ortho { + right: 15.6886227545%; + top: 4.6428571429%; + width: 5.0299401198%; +} +.customize03 .link-iso { + left: 6.5269461078%; + top: 57.5857142857%; + width: 8.622754491%; +} +.customize03 .link-overlap { + left: 38.1437125749%; + top: 83.9547619048%; + width: 9.2215568862%; +} +.customize03 .link-osnap { + left: 52.8443113772%; + top: 83.9547619048%; + width: 5.0299401198%; +} +.customize03 .link-dynamic { + right: 30.1347305389%; + top: 87.2619047619%; + width: 5.2694610778%; +} +.customize03 .link-angle { + right: 12.6347305389%; + top: 48.6571428571%; + width: 6.0479041916%; +} +.customize03 .link-efct { + right: 11.7365269461%; + top: 68.5380952381%; + width: 6.9461077844%; +} +.customize03 .link-systm { + right: 2.3952095808%; + top: 30.472972973%; + width: 8.3233532934%; +} +.customize03 .link-cmdall { + right: 4.7904191617%; + top: 47.8502252252%; + width: 5.9281437126%; +} +.customize03 .link-cven { + right: 3.6526946108%; + top: 68.0867117117%; + width: 5.2694610778%; +} +.customize03 .link-shortcut, +.customize03 .link-struc { + right: 3.6526946108%; + top: 76.8355855856%; + width: 5.2694610778%; +} +.multi01 .link-props { + right: 21.9760479042%; + top: 24.4047619048%; + width: 4.251497006%; +} +.command01 .link-cven { + left: 9.1017964072%; + top: 49.3285714286%; + width: 5.2694610778%; +} +.command01 .link-struc { + left: 9.1017964072%; + top: 62.1130952381%; + width: 5.2694610778%; +} + +.command03 .link-rebar { + right: 16.2874251497%; + top: 49.9916666667%; + width: 8.3233532934%; +} + +.block01 .link-block { + right: 67.4850299401%; + top: 12.8571428571%; + width: 3.4730538922%; +} +.block01 .link-atrbBlock { + right: 67.4850299401%; + top: 50.8333333333%; + width: 4.9700598802%; +} +.block01 .link-ref { + right: 67.4850299401%; + top: 71.7857142857%; + width: 4.9700598802%; +} + +.block02 .link-add { + left: 28.5628742515%; + top: 9.2857142857%; + width: 6.7664670659%; +} + +.block03 .link-add { + left: 26.0479041916%; + top: 20.4761904762%; + width: 8.3233532934%; +} + +.block05 .link-block { + right: 20.1994011976%; + top: 18.6904761905%; + width: 9.1616766467%; +} +.floorPlan01 .link-atrb-block { + left: 8.3233532934%; + top: 20.119047619%; + width: 6.4670658683%; +} +.floorPlan01 .link-multi-print { + left: 23.4119760479%; + top: 20.119047619%; + width: 5.1497005988%; +} +.floorPlan01 .link-main { + right: 55.4071856287%; + top: 20.119047619%; + width: 5.9281437126%; +} + +.floorPlan02 .link-select { + left: 4.7904191617%; + top: 9.7619047619%; + width: 8.3233532934%; +} + +.multiprint01 .link-print { + right: 13.4730538922%; + top: 33.2142857143%; + width: 9.2814371257%; +} + +/* 명령어 페이지 */ +.sl-markdown-content { + margin: auto; + padding: 40px 80px 160px 80px; + width: 1200px; + line-height: 1.7; +} +.sl-heading-wrapper { + display: flex; + align-items: center; + gap: 16px; + margin-top: 1.5em; +} + +.sl-markdown-content h2 { + display: flex; + align-items: center; + gap: 16px; +} +.sl-markdown-content h2 > strong { + white-space: nowrap; +} +.sl-markdown-content p { + margin-top: 1rem; +} +.sl-markdown-content ul { + padding-inline-start: 40px; +} +.sl-markdown-content ul li { + list-style: disc; +} +.sl-markdown-content img { + display: block; + margin-top: 1rem; +} +.sl-markdown-content img[alt$="emoji"] { + margin: 0; +} +.sl-markdown-content a:not(.sl-anchor-link) { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 4px; + color: #000; + padding: 2px 8px 2px 8px; + min-height: 26px; + font-size: 14px; + font-weight: 700; + border-radius: 2px; + border: 1.5px solid #000; + background: #ffc600; + box-shadow: 0 -1px 4px 0 rgba(0, 0, 0, 0.5) inset; + margin-top: 2px; +} +.sl-heading-wrapper .sl-anchor-link { + display: none; +} +.sl-heading-wrapper .sl-anchor-link .sr-only { + display: block; + width: 1px; + height: 1px; + overflow: hidden; +} +.sl-markdown-content a[href=""], +.sl-markdown-content a[href*="youtu"] { + padding: 2px 32px 2px 8px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='13' viewBox='0 0 18 13' fill='none'%3E%3Cpath d='M8.74176 0.01275L9.01551 0.0112501L9.50526 0.01425C10.1593 0.01875 11.3503 0.03375 12.5503 0.07875L12.743 0.08625C14.093 0.1395 15.4205 0.2325 16.013 0.393C16.3948 0.4965 16.742 0.6975 17.0255 0.9765C17.3053 1.2555 17.5063 1.6035 17.6098 1.9815C18.2045 4.374 18.0673 8.154 17.621 10.6065C17.5175 10.9875 17.3165 11.3355 17.0368 11.6115C16.757 11.8875 16.4098 12.0915 16.0243 12.195C14.7118 12.5528 9.66426 12.5745 9.06426 12.576L8.45901 12.573C7.84626 12.5685 6.79401 12.555 5.69901 12.5175L5.35026 12.5048L5.01726 12.4913C3.74976 12.4365 2.54226 12.345 1.98726 12.1942C1.60568 12.0917 1.25755 11.8912 0.97744 11.6125C0.697332 11.3339 0.494991 10.9868 0.39051 10.6058C-0.20724 8.22075 -0.0437401 4.44075 0.37926 1.98075C0.483627 1.59957 0.685918 1.25232 0.966033 0.973525C1.24615 0.694725 1.59434 0.494072 1.97601 0.3915C3.19851 0.0585001 7.64601 0.009 8.74851 0L8.74176 0.01275ZM6.74676 3.31275V9.31275L11.9968 6.31275L6.74676 3.31275Z' fill='black'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center right 8px; + background-size: 18px auto; +} +.sl-markdown-content a[href=""] { + background-color: #dedede; + cursor: default; + box-shadow: none; + border: 1.5px solid #bcbcbc; + color: #484848; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='13' viewBox='0 0 18 13' fill='none'%3E%3Cpath d='M8.74176 0.01275L9.01551 0.0112501L9.50526 0.01425C10.1593 0.01875 11.3503 0.03375 12.5503 0.07875L12.743 0.08625C14.093 0.1395 15.4205 0.2325 16.013 0.393C16.3948 0.4965 16.742 0.6975 17.0255 0.9765C17.3053 1.2555 17.5063 1.6035 17.6098 1.9815C18.2045 4.374 18.0673 8.154 17.621 10.6065C17.5175 10.9875 17.3165 11.3355 17.0368 11.6115C16.757 11.8875 16.4098 12.0915 16.0243 12.195C14.7118 12.5528 9.66426 12.5745 9.06426 12.576L8.45901 12.573C7.84626 12.5685 6.79401 12.555 5.69901 12.5175L5.35026 12.5048L5.01726 12.4913C3.74976 12.4365 2.54226 12.345 1.98726 12.1942C1.60568 12.0917 1.25755 11.8912 0.97744 11.6125C0.697332 11.3339 0.494991 10.9868 0.39051 10.6058C-0.20724 8.22075 -0.0437401 4.44075 0.37926 1.98075C0.483627 1.59957 0.685918 1.25232 0.966033 0.973525C1.24615 0.694725 1.59434 0.494072 1.97601 0.3915C3.19851 0.0585001 7.64601 0.009 8.74851 0L8.74176 0.01275ZM6.74676 3.31275V9.31275L11.9968 6.31275L6.74676 3.31275Z' fill='%23484848'/%3E%3C/svg%3E"); +} + +.sl-markdown-content a:not([href=""]):hover::before { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: #00000077; + mix-blend-mode: soft-light; +} +.sl-markdown-content a strong { + line-height: 1.2; + word-break: keep-all; +} + +.page-commands-l-lengthen .sl-markdown-content a[href*="youtu"] { + background-position: center right 5px; + letter-spacing: -0.06em; +} + +.page-commands-p-point .sl-markdown-content a[href*="ptype"] { + position: relative; + padding: 0 24px 0 10px; + background-image: none; +} +.page-commands-p-point .sl-markdown-content a[href*="ptype"]::after { + position: absolute; + content: " "; + display: inline-flex; + top: 50%; + right: 2px; + width: 12px; + height: 12px; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 25px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6' fill='none'%3E%3Cpath d='M6 2.99971L5.66134 3.3221L2.85565 5.99942L2.23991 5.35347L4.23933 3.44583H0V2.55359H4.23991L2.23991 0.645948L2.85565 0L6 2.99971Z' fill='%23FFC600'/%3E%3C/svg%3E"); + background-color: #000; + background-repeat: no-repeat; + background-position: center; + background-size: 6px; + translate: -50% -50%; +} + +/* 명령어 페이지 검색창 */ +.searchbar-wrapper { + position: relative; + width: 226px; + z-index: 1; + transition: width 0.1s linear; +} +.searchbar-wrapper:has(.search-results-container.on) { + width: 238px; +} +.search-wrap:has(.search-container) { + align-items: center; + display: flex; + height: 6.4rem; + justify-content: space-between; + padding: 0 16px; + position: sticky; + top: 0; + width: 100%; + z-index: 1; +} +.search-container { + margin-bottom: 16px; + position: relative; + width: 100%; + border-radius: 4px; +} +.search-input-wrapper { + position: relative; + max-width: 238px; + overflow: hidden; + border-radius: inherit; +} + +.search-container::before{ + content: ""; + position: absolute; + display: block; + left: -1px; + top: -1px; + width: calc(100% + 2px); + max-width: 238px; + height: calc(100% + 2px); + border-radius: inherit; + border:1px solid #000; + box-sizing: border-box; +} + +.searchbar-wrapper:has(.search-history-dropdown.on) .search-container{ + border-radius: 4px 4px 0 0; +} + +.searchbar-wrapper:has(.search-results-container.on) .search-container{ + border-radius: 4px 0 0 4px; +} + +.search-input-wrapper::after { + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + position: absolute; + width: 100%; + background: #fff; + border-radius: 4px; + box-sizing: border-box; +} +.searchbar-wrapper:has(.search-results-container.on) + .search-input-wrapper::after, +.search-input-wrapper:has(#search-input:focus)::after { + background: linear-gradient( + 180deg, + #a67d03, + #f2cc0f 16%, + #fadd4f 37%, + #f2cc0f 62%, + #926e03 88% + ); +} +.searchbar-wrapper:has(.search-history-dropdown.on) + .search-input-wrapper:has(#search-input:focus)::after { + padding-bottom: 0; + /*border-bottom: 1px solid #d3d3d3;*/ + background: linear-gradient(180deg, #a67d03, #f2cc0f 16%, #fadd4f 37%); +} +.searchbar-wrapper:has(.search-history-dropdown.on) + .search-input-wrapper::after, +.searchbar-wrapper:has(.search-history-dropdown.on) #search-input { + border-radius: 4px 4px 0 0; +} + +.searchbar-wrapper:has(.search-results-container.on) + .search-input-wrapper::after, +.searchbar-wrapper:has(.search-results-container.on) #search-input { + border-radius: 4px 0 0 4px; + +} +.searchbar-wrapper:has(.search-results-container.on) + .search-input-wrapper::after { + padding-right: 0; +} + +#search-input { + background-color: #E4DBC9; + border-radius: inherit; + font-size: 14px; + font-weight: 500; + padding: 0px 44px 0 40px; + transition: border-color 0.2s; + width: 100%; + height: 40px; +} +#search-input:not(:focus), +.searchbar-wrapper:not(:has(.on)) #search-input { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3) inset, 0 0 0 1px #000; +} +#search-input::placeholder { + color: rgba(0, 0, 0, 0.3); +} +#search-input:focus { + outline: none; +} +.search-icon { + pointer-events: none; + position: absolute; + left: 16px; + top: 50%; + transform: translateY(-50%); + line-height: 1; +} +.search-icon svg { + width: 16px; + height: 16px; +} +.search-results { + background: #fff; + border: 1px solid #e5e7eb; + border-radius: 8px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + left: 0; + max-height: 400px; + overflow-y: auto; + padding: 0 20px; + position: absolute; + right: 0; + top: calc(100% + 8px); + z-index: 1000; +} +.search-results.hidden { + display: none; +} +.results-header { + border-bottom: 1px solid #e5e7eb; + color: #6b7280; + font-size: 12px; + font-weight: 500; + padding: 12px 8px; +} +#results-list { + list-style: none; + margin: 0; + /* padding: 20px 0;*/ + padding-bottom: 20px; +} +.search-results-list { + display: flex; + flex-direction: column; +} + +.search-result-item { + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} +.search-result-item:hover { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} +.search-result-item.focused { + background-color: rgba(0, 0, 0, 0.058); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} + +.search-result-item a { + color: inherit; + display: block; + padding: 8px 16px; + text-decoration: none; + transition: background-color 0.2s; +} +.search-result-item a:hover { + background-color: rgba(0, 0, 0, 0.058); +} + +.result-category { + color: #6b7280; + font-size: 11px; + margin-bottom: 6px; +} + + +.search-list-wrap::-webkit-scrollbar { + width: 6px; +} +.search-list-wrap::-webkit-scrollbar-track { + background: #F0E9DD; +} +.search-list-wrap::-webkit-scrollbar-thumb { + background: #B6AFA1; + border-radius: 3px; +} +.search-list-wrap::-webkit-scrollbar-thumb:hover { + background: #ADA799; +} + +.page-title { + border-bottom: 1px solid #4c4c4c; + color: #1f2937; + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 2rem; + padding-bottom: 1rem; +} +.sl-markdown-content table { + border-collapse: collapse; + margin: 2rem 0; + width: -moz-max-content; + width: max-content; + max-width: 100%; +} +.sl-markdown-content td, +.sl-markdown-content th { + border-bottom: 1px solid #b2b2b2; + padding: 12px 16px; + word-break: keep-all; +} + +.sl-markdown-content p { + line-height: 1.7; + margin-bottom: 1rem; +} +.sl-markdown-content img { + border-radius: 8px; + height: auto; + margin: 1.5rem 0; + max-width: 100%; +} + +.sl-markdown-content img[src*="/linetype/image2"], +.sl-markdown-content img[src*="/linetype/image3"], +.sl-markdown-content img[src*="/linetype/image4"], +.sl-markdown-content img[src*="/linetype/image5"] { + width: 400px; +} +.sl-markdown-content p:has(img[src*="/commands/addpve"]):nth-child(2) { + margin-right: calc(10% - 4px); +} +.sl-markdown-content p:has(img[src*="/commands/addpve"]) { + display: inline-block; + width: 45%; +} + +.search-results-container { + position: absolute; + top: 0px; + right: -280px; + background: #E4DBC9; + width: 280px; + max-height: calc(var(--window-inner-height) - 141px - 48px); + min-height: 400px; + border-radius: 0 4px 4px 4px; + overflow: hidden; + z-index: 9; +} +.search-results-container::before { + content: " "; + position: absolute; + top: 1px; + left: 0; + height: 38px; + width: 1px; + background-color: #ddd; + z-index: 1; +} +.search-results-container::after { + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1px; + pointer-events: none; + position: absolute; + width: 100%; + background: #fff; + border-radius: inherit; + box-sizing: border-box; + background: linear-gradient( + 180deg, + #a67d03 0%, + #f2cc0f 16%, + #fadd4f 37%, + #f2cc0f 62%, + #926e03 88% + ); +} +.search-results-container:has(.no-results) { + min-height: 40px; + border-radius: 0 4px 4px 0px; +} + +.search-list-wrap { + display: block; + height: 100%; + max-height: calc(var(--window-inner-height) - 280px); + + overflow-y: auto; +} +.search-results-header { + position: relative; + width: 100%; + margin: auto; + height: 39px; + display: flex; + padding: 0 16px; + align-items: center; + overflow: hidden; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} +.search-results-container:has(.no-results) .search-results-header { + display: none; +} + +.search-results-header .no-results-text { + font-size: 11px; + font-weight: 400; + color: #555; +} + +.search-results-header h2 { + font-size: 24px; + font-weight: 600; + margin: 0 0 8px 0; + color: #333; +} +.no-results-text strong, +.results-count > strong { + color: #eb5f00; + font-weight: 700; +} +.results-count > strong {display: none;} + +.results-count { + font-size: 13px; + color: rgba(0, 0, 0, 0.70); + margin: 4px 0 0 0; +} +.results-count > span { + font-size: 11px; +} +.results-count > span > strong { + color: #000; +} + + +.result-title { + font-size: 14px; + font-weight: 600; + color: #000; + margin-bottom: 4px; + line-height: 1.4; +} + +.result-preview { + font-size: 12px; + color: #555; + font-weight: 400; + line-height: 1.6; + margin-bottom: 8px; + /* ✅ 두 줄까지만 보이게 */ + display: -webkit-box; + -webkit-line-clamp: 2; /* 2줄 제한 */ + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + + + +.result-category { + display: inline-block; + font-size: 12px; + color: #2563eb; + background: #eff6ff; + padding: 4px 8px; + border-radius: 4px; + margin-top: 4px; + font-weight: 500; +} +.no-results { + padding: 0 16px; + display: flex; + align-items: center; + height: 40px; +} +.no-results-icon { + font-size: 64px; + margin-bottom: 16px; + opacity: 0.5; +} + +.no-results-text { + font-size: 11px; + color: #555; +} + +.no-results-hint { + font-size: 14px; + color: #9ca3af; + margin-top: 8px; +} + + +.search-clear-btn { + position: absolute; + left: 198px; + top: 50%; + transform: translateY(-50%); + background: none; + border: none; + cursor: pointer; + font-size: 12px; + color: rgba(0, 0, 0, 0.70); + display: flex; + align-items: center; + justify-content: center; + z-index: 10; +} +.search-clear-btn:hover { + color: #333; +} +.search-history-dropdown { + position: absolute; + top: 100%; + left: 0; + right: 0; + background: #f1ece1; + /*border: 1px solid #e5e7eb; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.3), 0 0 0 1px #000; + */ + border-radius: 0 0 4px 4px; + max-height: 300px; + overflow: hidden; + z-index: 1000; +} +.search-history-inner { + max-height: 300px; + overflow-y: auto; +} +.searchbar-wrapper:has(#search-input:focus) + .search-history-dropdown.on::before { + content: " "; + position: absolute; + top: 0; + left: 1px; + width: calc(100% - 2px); + height: 1px; + background-color: #ddd; +} + +.search-history-dropdown.on::after { + border-radius: inherit; + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 0 1px 1px 1px; + pointer-events: none; + position: absolute; + box-sizing: border-box; + top: 0; + left: 0; + width: 100%; + background-color: #fff; +} +.searchbar-wrapper:has(#search-input:focus) .search-history-dropdown.on::after { + background: linear-gradient(180deg, #fadd4f 0%, #f2cc0f 62%, #926e03 88%); +} + +.history-header { + padding: 12px 16px; + font-size: 12px; + font-weight: 600; + color: #000; + background: #e4ddcf; + border-bottom: 1px solid #d8d2c4; + display: flex; + align-items: flex-end; + justify-content: space-between; +} +.history-header .clear-all-btn { + float: right; + background: none; + border: none; + cursor: pointer; + font-size: 11px; + align-self: flex-end; +} +.history-list { + list-style: none; + padding: 0; + margin: 0; +} +.history-item { + padding: 12px 16px; + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + gap: 8px; + font-size: 14px; + font-weight: 500; + color: #000; + transition: background 0.2s; +} +.history-item:hover { + background-color: rgba(0, 0, 0, 0.058); +} +.history-icon { + font-size: 16px; + opacity: 0.5; +} +.no-history { + padding: 20px 16px; + text-align: center; + color: #888888; + font-size: 13px; +} + +.history-item.focused { + background-color: rgba(0, 0, 0, 0.058); + font-weight: 500; +} + +.history-item span.text { + width: 100%; + flex-grow: 1; + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; +} +.history-item button.delete-btn { + background: none; + border: none; + cursor: pointer; + color: #999; + font-size: 14px; +} +.history-item button.delete-btn:hover { + color: #e53935; +} + +/* 검색 결과 뱃지 스타일 */ +.result-badge { + display: inline-block; + padding: 2px 8px; + margin-left: 8px; + font-size: 11px; + font-weight: 500; + border-radius: 4px; + vertical-align: middle; + display: none; +} + +.badge-command { + background: #e8f5e9; + color: #2e7d32; +} + +.badge-page { + background: #e3f2fd; + color: #1565c0; +} + +.search-group .group-title{ + font-size: 12px; + color: #000; + font-weight: 700; + padding: 4px 8px; + border-top: 1px solid #FFF; + background: #F0E9DD; + box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.05), 0 1px 0 0 rgba(0, 0, 0, 0.20); +} +.search-group mark{ + color: #000; + border-radius: 2px; +} +.search-group[data-tab="page"] mark { + background-color: #ffc600; +} + +.search-group[data-tab="command"] mark{ + background-color: #FF7F00; +} diff --git a/samples/src/test_pages/01. DX 도입배경(슬라이드).mdx b/samples/src/test_pages/01. DX 도입배경(슬라이드).mdx new file mode 100644 index 0000000..0f88a0e --- /dev/null +++ b/samples/src/test_pages/01. DX 도입배경(슬라이드).mdx @@ -0,0 +1,285 @@ +--- +title: DX도입 배경(슬라이드6:4) +sidebar: + order: 5 +tableOfContents: false +--- + + + +{/* 👇 슬라이드 컨테이너: 높이를 화면 크기에서 [제목+여백]만큼 뺀 값으로 자동 계산 */ +/* calc(100vh - 140px) : 140px은 상단 시스템 제목과 헤더가 차지하는 대략적인 높이입니다. */ +} +
+ + {/* 본문 영역 (6:4 분할) */} +
+ + {/* 🟢 [왼쪽 60%] */} +
+ +

+ 1. 건설산업의 낮은 생산성 +

+ +
+

+ * **건설산업** 생산성 성장률은 **1%**, 제조업(**3.6%**) 대비 **심각한 정체** 상태. + + + * 국내 건설기업의 **노동 생산성**또한 **제조업의 53.2%** 수준에 불과함. + + + * **건설산업**은 **효율성 혁신 지체**로, 여전히 전통적인 **노동 집약적 생산 방식**에 머물러 있음. + +
+
+

+ + + +
+ +

+ 2. 디지털화와 건설산업의 현재 +

+ +
+

+ * 세계적으로 산업별 **디지털화 수준과 생산성은 정비례**함. + + * 건설산업의 디지털화 지수는 **농업보다도 낮은 최하위권**에 머물러 있음. + + * 디지털 전환을 위한 **노력 부족**과 건설산업에 맞는 **디지털 기술 부족**이 그 원인. + + * 디지털 기술이 발전한 현재, 생산성 혁신을 위해 **건설산업 전반의 디지털 전환(DX)** 이 필요. +

+ + + +
+ +{/* ================= [핵심 요약] 박스 ================= */} +
+ {/* 제목 부분 */} +
+ 핵심 요약 +
+ + {/* 내용 부분 */} +
    +
  • + 건설산업은 디지털전환을 통해 Process의 혁신과 + Products의 변화를 일으켜야 한다. +
  • +
+
+ +
+ + {/* 🟠 [오른쪽 40%] */} +
+ + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 1] 국내외 건설산업 생산성 추이 (출처: McKinsey / 한국은행)*
+

+ +
+
+ + + + {/* 👇 주석 없이 깔끔한 이미지 태그 */} + 건설산업 생산성 추이 + +

+ *[그림 2] 산업별 디지털화 지수 비교 (출처: McKinsey 보고서, 2018)*
+

+ +
+ +
+ +
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/test_pages/02. 정부 DX정책 추진현황(슬라이드).mdx b/samples/src/test_pages/02. 정부 DX정책 추진현황(슬라이드).mdx new file mode 100644 index 0000000..98387d8 --- /dev/null +++ b/samples/src/test_pages/02. 정부 DX정책 추진현황(슬라이드).mdx @@ -0,0 +1,255 @@ +--- +title: 정부 DX정책 추진현황(슬라이드 4:6) +sidebar: + order: 6 +tableOfContents: false +--- + + + +
+ + {/* 메인 컨테이너 */} +
+ + + {/* ================================================================================== */} + {/* 🟠 [왼쪽 40%] - 너비는 좁아졌지만 "왼쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 1. 건설 정책 로드맵 및 목표 +

+ + {/* 내용 */} +
+
    +
  • 디지털전환(DX)을 통한 건설산업의 **국가 신성장 동력** 재도약
  • +
  • 스마트건설 도입 및 디지털전환을 위한 **국가 R&D 및 정책**추진
  • +
+
+ +
+ 건설산업DX 정책 로드맵 +

+ *[사진 1] 건설산업DX 정책 로드맵* +

+
+ + {/* 핵심 요약 */} +
+
ℹ️ 핵심 요약
+
    +
  • 정부는 건설산업의 디지털 전환을 지속적으로 추진하고 있으며 현재는 디지털화(BIM), 자동화(OCS)를 목표로 삼고있다.
  • +
+
+ +
+ + + {/* ================================================================================== */} + {/* 🟢 [오른쪽 60%] - 너비는 넓어졌지만 "오른쪽 값" 유지 */} + {/* ================================================================================== */} +
+ +

+ 2. 건설산업 BIM 기본 지침 [국토교통부, 2020] +

+ + {/* 내용 */} +
+

+ **정부 BIM 도입 개요 (건설산업 BIM 기본지침)** + * **비전**: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약 + * **목표**: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화 + * **기대 효과**: + * **비용/공기**: 건설 비용 감소 및 기간 단축 + * **품질/안전**: 설계·시공 오류 최소화, 프로젝트 리스크 저감 + * **협업**: 협업과 의사소통 강화, 건설정보 통합관리 +

+ +

+ 3. 스마트 건설 활성화 방안 [국토교통부, 2022] +

+ + {/* 내용 */} +
+

+ **스마트 건설 활성화 방안 주요내용** + | 구분 | 주요 내용 | + | :--- | :--- | + | **BIM**
(Building Information Modeling) | **건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구**
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함 | + | **OSC**
(Off-Site Construction) | **탈현장 건설 (공장 제작 시공)**
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식 | + +

+
+ +
+ + + + + +
+ +
+
+ +{/* ================================================================================== */} +{/* 👇 [팝업 기능 최종본] 가림 현상 해결 + 정중앙 정렬 (기존 코드 지우고 붙여넣기) */} +{/* ================================================================================== */} + + + +{/* 팝업창 HTML 구조 */} +
+ × + +
+ +{/* 스크립트 */} + \ No newline at end of file diff --git a/samples/src/test_pages/slide_2026-03-23 (2).mdx b/samples/src/test_pages/slide_2026-03-23 (2).mdx new file mode 100644 index 0000000..13bf24c --- /dev/null +++ b/samples/src/test_pages/slide_2026-03-23 (2).mdx @@ -0,0 +1,148 @@ +--- +title: 건설 정책 로드맵 및 목표 +tableOfContents: false +--- + + + +
+ + {/* 메인 2컬럼 영역 */} +
+ + {/* 왼쪽 (40%) */} +
+ +

+ 1. 건설 정책 로드맵 및 목표 +

+ +
+

+정부는 **디지털 전환(DX)** 을 통해 정체된 건설산업을 **국가 신성장 동력**으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다. + +![건설 정책 로드맵](/assets/images/04.png) + +*[사진 1] 건설산업DX 정책 로드맵* + +### 2. 건설산업 BIM 기본 지침 + +2020년 「**건설산업 BIM 기본지침**」, 2022년 「**건설산업 BIM 시행지침**」을 발의하여 건설산업의 **생산성 향상**과 **품질, 안전 및 친환경의 극대화**를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 **디지털 전환을 가속화**하고자 한다. + +**정부 BIM 도입 개요 (건설산업 BIM 기본지침)** + +* **비전**: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약 +* **목표**: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화 +* **기대 효과**: + +* **비용/공기**: 건설 비용 감소 및 기간 단축 + +* **품질/안전**: 설계·시공 오류 최소화, 프로젝트 리스크 저감 + +* **협업**: 협업과 의사소통 강화, 건설정보 통합관리 + +![건설산업 BIM 기본 지침](/assets/images/09.png) + +*[사진 1] 건설산업 BIM 기본 지침 및 시행지침* +

+
+ +
+ + {/* 오른쪽 (60%) */} +
+ +

+ 3. 스마트 건설 활성화 방안 +

+ +
+

+2022년 7월 국토교통부가 발표한 '**스마트 건설 활성화 방안**'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다. + +**스마트 건설 활성화 방안 주요내용** + +| 구분 | 주요 내용 | +| --- | --- | +| **BIM** (Building Information Modeling) | **건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구** 건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함 | +| **OSC** (Off-Site Construction) | **탈현장 건설 (공장 제작 시공)** 단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식 | + +![스마트 건설 활성화 방안](/assets/images/05.png) + +*[사진 2] 스마트 건설 활성화 방안* +

+
+ +
+ +
+ + + {/* 핵심 요약 - 하단 풀폭 */} +
+
ℹ️ 핵심 요약
+
+ * 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다. +
+
+ + +
+ +{/* 이미지 팝업 */} + +
×
+ \ No newline at end of file diff --git a/samples/src/test_pages/test_1.astro b/samples/src/test_pages/test_1.astro new file mode 100644 index 0000000..efc0f7d --- /dev/null +++ b/samples/src/test_pages/test_1.astro @@ -0,0 +1,302 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + + + + + +
+
+
+

1. 건설 정책 로드맵 및 목표

+

정부는 디지털 전환(DX) 을 통해 정체된 건설산업을 국가 신성장 동력으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다.

+
+건설 정책 로드맵 +

[사진 1] 건설산업DX 정책 로드맵

+
+

2. 건설산업 BIM 기본 지침

+

2020년 「건설산업 BIM 기본지침」, 2022년 「건설산업 BIM 시행지침」을 발의하여 건설산업의 생산성 향상품질, 안전 및 친환경의 극대화를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 디지털 전환을 가속화하고자 한다.

+

정부 BIM 도입 개요 (건설산업 BIM 기본지침)

+
    +
  • 비전: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약
  • +
  • 목표: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화
  • +
  • 기대 효과:
  • +
    • 비용/공기: 건설 비용 감소 및 기간 단축
    +
    • 품질/안전: 설계·시공 오류 최소화, 프로젝트 리스크 저감
    +
    • 협업: 협업과 의사소통 강화, 건설정보 통합관리
    +
+
+건설산업 BIM 기본 지침 +

[사진 1] 건설산업 BIM 기본 지침 및 시행지침

+
+
+
+
+
+

3. 스마트 건설 활성화 방안

+

2022년 7월 국토교통부가 발표한 '스마트 건설 활성화 방안'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다.

+

스마트 건설 활성화 방안 주요내용

+
구분주요 내용
BIM
(Building Information Modeling)
건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함
OSC
(Off-Site Construction)
탈현장 건설 (공장 제작 시공)
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식
+
+스마트 건설 활성화 방안 +

[사진 2] 스마트 건설 활성화 방안

+
+
+
+
+
+
ℹ️ 핵심 요약
+
    +
  • 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다.
  • +
+
+
+ + + +
+ + \ No newline at end of file diff --git a/samples/src/test_pages/test_1.html b/samples/src/test_pages/test_1.html new file mode 100644 index 0000000..13f9044 --- /dev/null +++ b/samples/src/test_pages/test_1.html @@ -0,0 +1,297 @@ + + +건설 정책 로드맵 및 목표 + + + +
+ +
+ +
+

1. 건설 정책 로드맵 및 목표

+

정부는 디지털 전환(DX) 을 통해 정체된 건설산업을 국가 신성장 동력으로 재도약시키고자, 건설산업을 정보화하고 스마트 건설을 도입하기위해 다양한 국가연구개발사업 및 건설 정책을 시행하고있다.

+ +
+ 건설 정책 로드맵 +

[사진 1] 건설산업DX 정책 로드맵

+
+ +

2. 건설산업 BIM 기본 지침

+

2020년 「건설산업 BIM 기본지침」, 2022년 「건설산업 BIM 시행지침」을 발의하여 건설산업의 생산성 향상품질, 안전 및 친환경의 극대화를 핵심 목표로 설정하였으며, 설계·시공·유지관리 등 건설산업 전반의 디지털 전환을 가속화하고자 한다.

+

정부 BIM 도입 개요 (건설산업 BIM 기본지침)

+
    +
  • 비전: 디지털 전환을 통해 건설산업을 국가 신성장 동력으로 재도약
  • +
  • 목표: 건설산업의 생산성 향상과 품질, 안전 및 친환경의 극대화
  • +
  • 기대 효과:
  • +
    • 비용/공기: 건설 비용 감소 및 기간 단축
    +
    • 품질/안전: 설계·시공 오류 최소화, 프로젝트 리스크 저감
    +
    • 협업: 협업과 의사소통 강화, 건설정보 통합관리
    +
+ +
+ 건설산업 BIM 기본 지침 +

[사진 1] 건설산업 BIM 기본 지침 및 시행지침

+
+
+
+ +
+ + +
+

3. 스마트 건설 활성화 방안

+

2022년 7월 국토교통부가 발표한 '스마트 건설 활성화 방안'은 건설산업의 디지털화와 자동화를 위한 핵심 전략을 포함한다.

+

스마트 건설 활성화 방안 주요내용

+
구분주요 내용
BIM
(Building Information Modeling)
건설산업의 자동화, 지능화 등 스마트 건설을 실현하기 위한 기본 도구
건설정보 기반의 Process와 Products를 제공하여 디지털 전환의 기반을 마련함
OSC
(Off-Site Construction)
탈현장 건설 (공장 제작 시공)
단위부재 또는 유닛(여러 부재가 합쳐진 모듈 등)을 공장에서 사전 제작한 이후, 현장으로 이동하여 레고 블럭처럼 조립하는 방식
+ +
+ 스마트 건설 활성화 방안 +

[사진 2] 스마트 건설 활성화 방안

+
+
+
+ + +
+ + +
+
ℹ️ 핵심 요약
+
    +
  • 정부는 [건설산업 BIM 기본 지침], [스마트 건설 활성화 방안] 등을 통해 건설산업의 디지털 전환을 지속적으로 추진하고 있다.
  • +
+
+ + +
+ + + + \ No newline at end of file diff --git a/samples/src/test_pages/test_2.astro b/samples/src/test_pages/test_2.astro new file mode 100644 index 0000000..6329269 --- /dev/null +++ b/samples/src/test_pages/test_2.astro @@ -0,0 +1,357 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + + + + + +
+
+
+

1. 기초 용어 정의

+

건설산업에서 BIM, DX를 이해하려면 각각의 용어가 무엇을 뜻하는지 명확히 구분하여야 한다.

+

1.1 건설산업

+

수요자가 요구하는 다양한 시설물을, 각 산업마다의 광범위한 기술을 통합 및 융합하여 만들어 내는 종합산업으로, 목적 시설물의 품질에 대한 욕구를 충족 시키면서 최단기간 내에 최소한의 비용으로 편리하고 안전하며 우수한 성능시설물을 완성하는 것을 목표로 하는산업을 의미한다.

+

1.2 BIM(building information modeling, 건설정보모델링)

+

BIM은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 디지털전환(DX, Digital Transformation) 체계를 의미한다.

+

1.3 DX(digital Transformation, 디지털 전환)

+

디지털 기술과 도구를 활용하여, 고객과 시장의 변화에 대응하고 새로운 가치를 창출하며 산업생태계, 비지니스 모델(B.M) 및 업무수행 방식(Process)을 혁신하는 과정과 전환을 말한다.

+
+디지털전환 그림 +

+
+
+
+
+
+

2. BIM vs DX 비교

+

흔히 BIM과 DX를 혼용하여 사용하곤 한다. 하지만 BIM이 3D 형상 구현을 위한 도구적 성격이 강하다면, DX는 이를 기반으로 데이터와 프로세스 전반을 혁신하는 체계라는 점에서 엄연히 다른 개념이다.

+
BIM구분DX
Only 3DBIM/DXBIM << DX (ENG. + Management 포함)
모델 제작용 상용 S/W
[Civil 3D, Revit, Navisworks, Autocad]
S/W제작 및 운영 (상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등]
기존 2D 설계방식 유지프로세스근본적 문제의식을 통한 개선
3D 모델 중심
기존 성과품 유지
성과품공학 정보 및 콘텐츠 연계에 집중
도면, 수량, 시공계획 등 일식
3D 모델에 의한 일반적 이해 향상활용설계/시공의 혁신 (개념의 재정립)
(설계/시공/운영) 분야별 단절확장성전 생애주기 활용 시스템
단순화(오류)
수동적/집단적 동질화
수행개념구체화(복잡)
적극/구체적 실현 방안
소극적, 상용 기술에 의존CIVIL + IT적극적, 주체적인 기술 접목/융합
S/W 제작사 판매 정책에 의존주체자체 수행능력 - 지속가능성 확보
평준화, 국내 중심발주처차별화 및 경쟁력 확보, 해외 진출
소규모 BIM팀 운영 + 단순교육에 집중설계사IT + CIVIL ENG 220명 운영 + 기술 개발
국내 토목 소극적 / 해외 토목증가시공사분야 확장 모델 및 시스템
+

:::note

+

BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다.

+

:::

+
+
+
+ + + +
+ + \ No newline at end of file diff --git a/samples/src/test_pages/test_2.html b/samples/src/test_pages/test_2.html new file mode 100644 index 0000000..c3cef31 --- /dev/null +++ b/samples/src/test_pages/test_2.html @@ -0,0 +1,348 @@ + + +기초 용어 정의 + + + +
+ +
+ +
+

1. 기초 용어 정의

+

건설산업에서 BIM, DX를 이해하려면 각각의 용어가 무엇을 뜻하는지 명확히 구분하여야 한다.

+

1.1 건설산업

+

수요자가 요구하는 다양한 시설물을, 각 산업마다의 광범위한 기술을 통합 및 융합하여 만들어 내는 종합산업으로, 목적 시설물의 품질에 대한 욕구를 충족 시키면서 최단기간 내에 최소한의 비용으로 편리하고 안전하며 우수한 성능시설물을 완성하는 것을 목표로 하는산업을 의미한다.

+

1.2 BIM(building information modeling, 건설정보모델링)

+

BIM은 시설물의 생애주기 동안 발생하는 모든 정보를 3D 모델 기반으로 통합하여, 건설정보와 절차를 표준화된 방식으로 상호 연계하고 디지털 협업이 가능하게 하는 디지털전환(DX, Digital Transformation) 체계를 의미한다.

+

1.3 DX(digital Transformation, 디지털 전환)

+

디지털 기술과 도구를 활용하여, 고객과 시장의 변화에 대응하고 새로운 가치를 창출하며 산업생태계, 비지니스 모델(B.M) 및 업무수행 방식(Process)을 혁신하는 과정과 전환을 말한다.

+ +
+ 디지털전환 그림 +

+
+
+
+ +
+ + +
+

2. BIM vs DX 비교

+

흔히 BIM과 DX를 혼용하여 사용하곤 한다. 하지만 BIM이 3D 형상 구현을 위한 도구적 성격이 강하다면, DX는 이를 기반으로 데이터와 프로세스 전반을 혁신하는 체계라는 점에서 엄연히 다른 개념이다.

+
BIM구분DX
Only 3DBIM/DXBIM << DX (ENG. + Management 포함)
모델 제작용 상용 S/W
[Civil 3D, Revit, Navisworks, Autocad]
S/W제작 및 운영 (상용 + 전용 40~80개)
[Rhino, Sketchup, Blender..] + [EG-BIM 등]
기존 2D 설계방식 유지프로세스근본적 문제의식을 통한 개선
3D 모델 중심
기존 성과품 유지
성과품공학 정보 및 콘텐츠 연계에 집중
도면, 수량, 시공계획 등 일식
3D 모델에 의한 일반적 이해 향상활용설계/시공의 혁신 (개념의 재정립)
(설계/시공/운영) 분야별 단절확장성전 생애주기 활용 시스템
단순화(오류)
수동적/집단적 동질화
수행개념구체화(복잡)
적극/구체적 실현 방안
소극적, 상용 기술에 의존CIVIL + IT적극적, 주체적인 기술 접목/융합
S/W 제작사 판매 정책에 의존주체자체 수행능력 - 지속가능성 확보
평준화, 국내 중심발주처차별화 및 경쟁력 확보, 해외 진출
소규모 BIM팀 운영 + 단순교육에 집중설계사IT + CIVIL ENG 220명 운영 + 기술 개발
국내 토목 소극적 / 해외 토목증가시공사분야 확장 모델 및 시스템
+

:::note

+

BIM은 건설산업의 DX(디지털 전환)을 수행하는 과정에서 가장 기초가 되는 일부분이다.

+

:::

+
+ + +
+ + + +
+ + + + \ No newline at end of file