Files
_Geulbeot/03. Code/geulbeot_10th/static/result/report.html

1097 lines
90 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>한국 토목 엔지니어링의 딜레마 - Report</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap');
:root {
--primary: #006400;
--accent: #228B22;
--light-green: #E8F5E9;
--bg: #525659;
}
body { margin: 0; background: var(--bg); font-family: 'Noto Sans KR', sans-serif; }
/* [A4 용지 규격] */
.sheet {
width: 210mm;
height: 297mm;
background: white; margin: 20px auto;
position: relative; overflow: hidden; box-sizing: border-box;
box-shadow: 0 0 15px rgba(0,0,0,0.1);
}
@media print {
.sheet { margin: 0; break-after: page; box-shadow: none; }
body { background: white; }
}
/* [헤더/푸터] */
.page-header {
position: absolute; top: 10mm; left: 20mm; right: 20mm;
font-size: 9pt; color: #000000; font-weight: bold;
text-align: right; border-bottom: none !important; padding-bottom: 5px;
}
.page-footer {
position: absolute; bottom: 10mm; left: 20mm; right: 20mm;
display: flex; justify-content: space-between; align-items: flex-end;
font-size: 9pt; color: #555; border-top: 1px solid #eee; padding-top: 5px;
}
/* [본문 영역] */
.body-content {
position: absolute; top: 20mm; left: 20mm; right: 20mm; bottom: auto;
}
h1, h2, h3 {
white-space: nowrap; overflow: hidden; word-break: keep-all; color: var(--primary);
margin: 0; padding: 0;
}
h1 {
font-size: 20pt; font-weight: 900; color: var(--primary);
border-bottom: 2px solid var(--primary); margin-bottom: 20px; margin-top: 0;
}
h2 {
font-size: 18pt; border-left: 5px solid var(--accent);
padding-left: 10px; margin-top: 30px; margin-bottom: 10px; color: #03581dff;
}
h3 { font-size: 14pt; margin-top: 20px; margin-bottom: 5px; color: var(--accent); font-weight: 700; }
p, li { font-size: 12pt !important; line-height: 1.6 !important; text-align: justify; word-break: keep-all; margin-bottom: 5px; }
/* [목차 스타일] */
.toc-item { line-height: 1.8; list-style: none; border-bottom: 1px dotted #eee; }
.toc-lvl-1 {
color: #006400; font-weight: 900; font-size: 13.5pt;
margin-top: 15px; margin-bottom: 5px; border-bottom: 2px solid #ccc;
}
.toc-lvl-2 { font-size: 10.5pt; color: #333; margin-left: 20px; font-weight: normal; }
.toc-lvl-3 { font-size: 10.5pt; color: #666; margin-left: 40px; }
/* [표/이미지 스타일] */
table {
width: 100%; border-collapse: collapse; margin: 15px 0;
font-size: 9.5pt; table-layout: auto; border-top: 2px solid var(--primary);
}
th, td {
border: 1px solid #ddd; padding: 6px 5px; text-align: center; vertical-align: middle;
word-break: keep-all; word-wrap: break-word;
}
th {
background: var(--light-green); color: var(--primary);
font-weight: 900; white-space: nowrap; letter-spacing: -0.05em; font-size: 9pt;
}
figure { display: block; margin: 20px auto; text-align: center; width: 100%; }
img, svg { max-width: 95% !important; height: auto !important; display: block; margin: 0 auto; }
figcaption { display: block; text-align: center; margin-top: 10px; font-size: 9.5pt; color: #666; font-weight: 600; }
.atomic-block { break-inside: avoid; page-break-inside: avoid; }
#raw-container { display: none; }
/* [하이라이트 박스 표준] */
.highlight-box {
background-color: rgb(226, 236, 226); border: 1px solid #2a2c2aff;
padding: 5px; margin: 1.5px 1.5px 2px 0px; border-radius: 3px; color: #333;
}
.highlight-box li, .highlight-box p {
font-size: 11pt !important; line-height: 1.2; letter-spacing: -0.6px; margin-bottom: 3px; color: #1a1919ff;
}
.highlight-box h3, .highlight-box strong, .highlight-box b {
font-size: 12pt !important; color: rgba(2, 37, 2, 1) !important;
font-weight: bold; margin: 0; display: block; margin-bottom: 5px;
}
/* TOC 그룹화 및 스타일 */
.toc-group { margin-bottom: 12px; break-inside: avoid; page-break-inside: avoid; }
.toc-lvl-1, .toc-lvl-2, .toc-lvl-3 { list-style: none !important; }
.toc-lvl-1 .toc-number, .toc-lvl-1 .toc-text { font-weight: 900; font-size: 1.2em; color: #006400; }
.toc-lvl-1 .toc-number { float: left; margin-right: 14px; }
.toc-lvl-1 .toc-text { display: block; overflow: hidden; }
.toc-lvl-2 .toc-number, .toc-lvl-3 .toc-number { font-weight: bold; color: #2c5282; margin-right: 11px; }
.toc-lvl-2 .toc-text, .toc-lvl-3 .toc-text { color: #4a5568; font-size: 1em; }
/* Squeeze & Summary Style */
.squeeze { line-height: 1.35 !important; letter-spacing: -0.5px !important; margin-bottom: 2px !important; }
.squeeze-title { margin-bottom: 5px !important; padding-bottom: 2px !important; }
#box-summary p, #box-summary li {
font-size: 10pt !important; line-height: 1.45 !important;
letter-spacing: -0.04em !important; margin-bottom: 3px !important; text-align: justify;
}
#box-summary h1 { margin-bottom: 10px !important; padding-bottom: 5px !important; }
.toc-squeeze .toc-group { margin-bottom: 5px !important; }
.toc-squeeze .toc-lvl-1 { margin-top: 8px !important; margin-bottom: 3px !important; }
.toc-squeeze .toc-item { line-height: 1.4 !important; padding: 1px 0 !important; }
.highlight-box > *:last-child { margin-bottom: 0 !important; }
</style>
</head>
<body>
<div id="raw-container">
<div id="box-cover">
<h1>한국 토목 엔지니어링의 딜레마</h1>
<h2>- AutoCAD 독점과 미래를 위한 대안 모색 -</h2>
<p>2025. 07. 18</p>
<p>총괄기획실</p>
</div>
<div id="box-toc">
<h1>1. 한국 토목 엔지니어링 소프트웨어 시장 현황</h1>
<h2>1.1 시장 점유율 현황 및 AutoCAD의 독점적 지위</h2>
<h2>1.2 독점적 지위의 배경과 그로 인한 문제점</h2>
<h1>2. AutoCAD, 토목설계에 정말 적합한가?</h1>
<h2>2.1 토목과 건축의 차이 - 레고와 찰흙 비유</h2>
<h2>2.2 토목 분야에서의 불완전성 및 실무적 기능의 한계</h2>
<h2>2.3 기술적 비효율과 작업 흐름의 단절</h2>
<h2>2.4 기술 트렌드와의 부조화</h2>
<h1>3. 시장의 족쇄: 관행인가, 필수인가?</h1>
<h2>3.1 익숙함의 함정 : 기술적 편의성과 굳어진 관행</h2>
<h2>3.2 선택의 제약과 압박 : 라이선스 비용 및 유지보수 문제</h2>
<h2>3.3 기술적 우위의 허상</h2>
<h1>4. 지식재산권 : 문제점과 해결 방안</h1>
<h2>4.1 성과물 소유권의 왜곡</h2>
<h2>4.2 종속성과 지식재산권 제약</h2>
<h2>4.3 데이터 주권 및 보안 문제</h2>
<h2>4.4 해결 방안</h2>
<h1>5. 새로운 가능성 : 대안을 찾아서</h1>
<h2>5.1 왜 새로운 소프트웨어가 필요한가?</h2>
<h2>5.2 엔지니어의 핵심 요구사항</h2>
<h2>5.3 시장의 대안 소프트웨어 옵션 및 국내 개발의 전략적 중요성</h2>
<h1>6. 결론 및 시사점</h1>
<h2>6.1 결론</h2>
<h2>6.2 시사점</h2>
</div>
<div id="box-summary">
<h1>요약 보고서</h1>
<p>본 보고서는 한국 토목 엔지니어링 산업이 직면한 AutoCAD 독점의 문제점을 심층 분석하고, 이에 대한 해결 방안을 모색합니다. 현재 국내 토목 엔지니어링 소프트웨어 시장은 Autodesk의 AutoCAD에 대한 의존도가 매우 높아, 2D CAD 시장 점유율 64.12%, BIM 시장 점유율 90% 이상을 기록하며 사실상 독점 상태에 있습니다. 이러한 독점은 DWG 파일 포맷의 오랜 표준화, 오토데스크의 광범위한 기능 및 생태계 구축, 대학 교육 시스템의 편중성, 그리고 정부 및 발주처의 특정 소프트웨어 사용 강제 관행 등 복합적인 배경에서 비롯되었습니다.</p>
<p>이러한 독점적 지위는 국내 토목 산업에 심각한 문제점을 야기합니다. 첫째, 일방적인 라이선스 정책 변경(영구 라이선스 중단, 네트워크 라이선스 폐지, 지정 사용자 정책 도입)으로 인해 기업의 소프트웨어 유지 비용이 4~7배까지 급증하여 특히 중소기업에 막대한 경제적 부담을 가중시키고 있습니다. 둘째, 독점 기업은 시장 지배력에 안주하여 국내 환경에 맞는 혁신적인 기능 개발에 소극적이며, 산업 전체의 기술 발전이 특정 기업에 종속되는 결과를 초래합니다. 셋째, 엔지니어의 핵심 노하우가 담긴 설계 성과물이 특정 기업의 폐쇄적인 파일 포맷에 종속되어 실질적인 데이터 주권을 상실하게 됩니다. 넷째, 경쟁 부재로 인해 국내 사용자를 위한 기술 지원이나 버그 수정에 미흡한 경우가 많으며, 사용자는 울며 겨자 먹기로 해당 소프트웨어를 계속 사용할 수밖에 없습니다.</p>
<p>기술적 측면에서 AutoCAD는 토목 설계에 근본적으로 부적합하다는 문제가 제기됩니다. 건축 설계가 표준화된 부품을 조립하는 '레고'에 비유된다면, 토목 설계는 비정형 자연 지형을 다듬어 유기적인 형태를 창조하는 '찰흙'에 가깝습니다. AutoCAD는 건축 중심의 범용 소프트웨어이므로, 토목 분야의 핵심인 GIS 기능 통합 부족, 비정형 시설물 모델링의 어려움, 국내 설계 기준 미반영, 구조물별 전문성 부재 등의 한계를 가집니다. 이로 인해 국내 현장에서는 2D 도면 설계를 먼저 완료한 후 3D 모델을 별도로 제작하는 비효율적인 '전환설계'가 관행처럼 굳어져 BIM의 본질을 왜곡하고 있습니다. 또한 폐쇄적인 데이터 포맷은 디지털 트윈 구현과 AI 기반 설계 자동화 기술 적용에도 근본적인 제약으로 작용합니다.</p>
<p>이러한 문제들을 해결하고 국내 토목 엔지니어링 산업의 경쟁력을 확보하기 위해서는 다각적인 노력이 필요합니다. 첫째, 정부 및 공공 발주처는 성과품 납품 시 특정 상용 포맷이 아닌 IFC, LandXML 등 국제 표준의 개방형 포맷 제출을 의무화하여 데이터의 호환성과 장기적 재활용성을 확보해야 합니다. 둘째, ZWCAD, CADian 등 국산 및 대안 CAD의 활용을 적극적으로 모색하고 정부 차원의 국산 소프트웨어 개발 지원 및 도입 장려 정책이 시급합니다. 셋째, 엔지니어링 기업들이 자체적인 기술 개발 투자를 통해 엔지니어링 지식과 IT 기술을 융합한 전문 소프트웨어를 개발하는 '인하우스(In-house) SW 개발 역량 강화'가 필수적입니다. 이는 단순한 도구 사용을 넘어 창의적 문제 해결과 고부가가치 창출에 집중할 수 있도록 프로세스를 혁신하는 진정한 디지털 전환을 가능하게 합니다. 넷째, 궁극적으로, 국내 토목 엔지니어링 산업은 기술 종속에서 벗어나 기업의 핵심 노하우를 온전한 디지털 자산(IP)으로 전환하고 급변하는 시장 환경에서 생존하기 위한 필수 전략으로서 인하우스 소프트웨어 개발을 비용이 아닌 미래를 위한 필수 투자로 인식해야 합니다. 이를 통해 기술 주권을 확보하고 데이터 기반의 고부가가치 지식 산업으로 나아가야 할 것입니다.</p>
</div>
<div id="box-content">
<h1>1. 한국 토목 엔지니어링 소프트웨어 시장 현황</h1>
<p>CAD(Computer Aided Design) 소프트웨어는 산업 디자인, 건축, 엔지니어링 및 제조 분야에서 핵심적인 도구로 활용되고 있다. 특히 Autodesk의 AutoCAD는 1982년 개발 이래 전 세계적으로 가장 널리 활용되는 CAD 소프트웨어 중 하나로, 2D 제도 및 3D 모델링 분야에서 사실상의 표준(De facto Standard)으로 자리매김했다. 그러나 국내 토목 엔지니어링 산업은 이러한 AutoCAD의 독점적 지위로 인해 다양한 문제에 직면해 있다. 높은 라이선스 비용, 국내 실정에 맞지 않는 기술적 한계, 그리고 데이터 종속으로 인한 지식재산권 문제 등은 국내 산업의 지속 가능한 발전과 글로벌 경쟁력 확보에 심각한 걸림돌로 작용하고 있다.</p>
<p>본 보고서는 한국 토목 엔지니어링 소프트웨어 시장의 현황과 AutoCAD 독점으로 인한 문제점을 심층 분석하고, 이에 대한 해결 방안으로 지식재산권 확보 및 인하우스(In-house) 소프트웨어 개발의 필요성을 제언하고자 한다. 이를 통해 비효율적인 관행을 넘어, 국내 토목 산업이 기술 주권을 확보하고 데이터 기반의 고부가가치 지식 산업으로 나아갈 방향을 모색하는 것을 목표로 한다.</p>
<h2>1.1 시장 점유율 현황 및 AutoCAD의 독점적 지위</h2>
<p>현재 국내 토목 엔지니어링 소프트웨어 시장은 특정 외산 소프트웨어인 오토캐드(AutoCAD)에 대한 의존도가 매우 높다. 2024년 기준, AutoCAD의 2D CAD 시장 점유율은 64.12%에 달하며, 이는 시장의 독점적 구조를 명확히 보여준다. BIM (Building Information Modeling) 시장으로 넘어가면 Autodesk 제품군(Revit, Civil 3D 등)의 점유율은 90% 이상으로 추산되어, 사실상 완전한 독점 상태에 가깝다. 이러한 독점은 2D CAD 시장에서 시작된 지배력이 3D BIM 시장으로까지 그대로 이어지며 더욱 공고해지는 양상을 보인다.</p>
<p>이러한 독점적 지위는 특정 기업의 파일 포맷인 DWG가 지난 수십 년간 업계의 표준처럼 사용되어 온 역사적 배경에 기인한다. 발주처, 협력사, 엔지니어 등 모든 건설 주체가 DWG 파일을 기반으로 소통하고 데이터를 교환함에 따라, 다른 포맷을 사용하는 신규 소프트웨어는 시장에 진입할 기회조차 얻기 힘든 '잠김 효과(Lock-in Effect)'가 발생했다. 이는 기술적 우위나 효율성과는 무관하게, 단지 '호환성'이라는 명목으로 기존 소프트웨어의 사용을 강제하는 강력한 진입장벽으로 작용한다.</p>
<figure>
<svg width="600" height="300" viewBox="0 0 600 300" class="atomic-block">
<rect x="0" y="0" width="600" height="300" fill="#f8f8f8" rx="10" ry="10"/>
<line x1="80" y1="50" x2="80" y2="250" stroke="#ccc" stroke-width="1"/>
<text x="60" y="255" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">0%</text>
<text x="60" y="150" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">50%</text>
<text x="60" y="55" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">100%</text>
<text x="40" y="150" font-family="sans-serif" font-size="12" fill="#555" transform="rotate(-90 40 150)">점유율 (%)</text>
<line x1="80" y1="250" x2="550" y2="250" stroke="#ccc" stroke-width="1"/>
<rect x="150" y="91.58" width="40" height="158.42" fill="#607d8b" />
<text x="170" y="85" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">79.21%</text>
<rect x="200" y="121.76" width="40" height="128.24" fill="#90a4ae" />
<text x="220" y="115" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">64.12%</text>
<text x="190" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">AutoCAD</text>
<rect x="350" y="208.42" width="40" height="41.58" fill="#66bb6a" />
<text x="370" y="202" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">20.79%</text>
<rect x="400" y="178.24" width="40" height="71.76" fill="#a5d6a7" />
<text x="420" y="172" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">35.88%</text>
<text x="390" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">대안 CAD</text>
</svg>
<figcaption>그림 1. 국내 2D CAD 시장 점유율 변동 현황 (2019년 vs 2024년)</figcaption>
</figure>
<p>다만, 최근 몇 년간 AutoCAD의 높은 비용과 일방적인 라이선스 정책 변경에 대한 부담으로 인해 대안 CAD를 찾는 움직임이 가속화되고 있다. AutoCAD의 점유율은 2019년 79.21%에서 2024년 64.12%로 15.09%P 감소하는 추세가 나타났다. 반면, GstarCAD, CADian, ZWCAD와 같은 주요 대안 CAD 브랜드의 합산 점유율은 같은 기간 20.79%에서 35.88%로 크게 증가했다. 이는 AutoCAD의 독점에 가까웠던 국내 2D CAD 시장에 의미 있는 변화의 흐름이 감지되고 있음을 보여준다.</p>
<h2>1.2 독점적 지위의 배경과 그로 인한 문제점</h2>
<p>국내에서 Autodesk 제품이 광범위하게 사용되는 것은 40년간 AutoCAD가 시장을 독점적으로 지배해 온 영향력이 크며, 이는 다음과 같은 복합적 배경에서 비롯된다.</p>
<div class="highlight-box">
<ul>
<li><strong>역사적 선점 및 표준화:</strong> AutoCAD는 CAD 데이터 교환의 범용 형식으로 간주되는 .dwg 파일 형식을 사용하며, 이는 산업 전반의 표준으로 자리 잡았다. 이로 인해 모든 프로젝트 참여자들이 DWG 포맷을 중심으로 작업하게 되었다.</li>
<li><strong>광범위한 기능 및 생태계 구축:</strong> 오토데스크는 렌더링, 설계, 해석, 클라우드 시스템 등 수십 가지 프로그램을 인수·발전시키며 영향력을 지속적으로 확대하고, 서드파티(3rd-party) 프로그램 개발을 유도하여 자사 생태계에 사용자를 묶어두는 전략을 사용했다.</li>
<li><strong>교육 시스템의 편중성:</strong> 대학의 토목공학 교육과정 및 직업훈련기관의 실무 교육이 특정 상용 소프트웨어의 기능(Tool) 사용법 교육에만 치중되어, 예비 엔지니어와 실무자들이 다른 선택지를 고려할 기회조차 갖지 못하게 만들었다.</li>
<li><strong>정부 및 발주처의 관행:</strong> 정부나 발주처가 성과품 납품 시 특정 소프트웨어의 확장자 사용을 강제함으로써 다른 소프트웨어의 개발 및 사용을 원천적으로 제약하는 결과를 낳았다. 이는 시장의 공정한 경쟁을 저해하고 특정 기업의 독점을 제도적으로 뒷받침하는 결과를 초래했다.</li>
</ul>
</div>
<p>이러한 독점적 지위는 국내 토목 산업에 여러 심각한 문제점을 야기하고 있다. 가장 큰 문제는 일방적인 정책 변경으로 인한 비용 부담 증가이다. 오토데스크는 기존의 영구 라이선스(케어플랜) 방식을 구독 방식(서브스크립션)으로 전환했으며, 2020년 8월 7일부터는 여러 명이 하나의 라이선스를 공유하던 네트워크 라이선스를 폐지하고 1인 1개 프로그램을 사용하는 '지정 사용자(Named User)' 라이선스 정책을 도입했다. 이로 인해 기업의 소프트웨어 유지 비용은 4~7배까지 급증하는 사례가 발생하고 있다.</p>
<div class="highlight-box">
<h3>독점 구조의 핵심 문제점</h3>
<ul>
<li><strong>경제적 부담 가중:</strong> 일방적인 라이선스 정책 변경으로 기업의 비용 부담이 기하급수적으로 증가한다. 특히 중소기업의 생존을 위협하는 수준이다.</li>
<li><strong>기술 발전 저해:</strong> 독점 기업은 시장 지배력에 안주하여 국내 환경에 맞는 혁신적인 기능 개발에 소극적이며, 산업 전체의 기술 발전이 특정 기업에 종속된다.</li>
<li><strong>지식재산권 왜곡:</strong> 엔지니어의 핵심 노하우가 담긴 설계 성과물이 특정 기업의 폐쇄적인 파일 포맷에 종속되어 실질적인 데이터 주권을 상실하게 된다.</li>
<li><strong>서비스 품질 저하 및 선택권 제약:</strong> 경쟁 압력이 없어 국내 사용자를 위한 기술 지원이나 버그 수정에 미흡한 경우가 많으며, 사용자는 울며 겨자 먹기로 해당 소프트웨어를 계속 사용할 수밖에 없다.</li>
</ul>
</div>
<h1>2. AutoCAD, 토목설계에 정말 적합한가?</h1>
<h2>2.1 토목과 건축의 차이 - 레고와 찰흙 비유</h2>
<p>토목 엔지니어링과 건축 설계는 겉으로 보기에 유사하지만, 작업 대상과 특성에서 근본적인 차이를 가진다. 현재 토목 업계가 겪는 비효율의 근본 원인은 '건축'을 위해 개발된 범용 소프트웨어를 '토목'에 적용하려는 시도 자체에 있다. 두 분야의 차이는 '레고'와 '찰흙'의 비유를 통해 명확하게 설명할 수 있다.</p>
<table>
<thead>
<tr>
<th>구분</th>
<th>건축 설계 (레고)</th>
<th>토목 설계 (찰흙)</th>
</tr>
</thead>
<tbody>
<tr>
<td>특징</td>
<td>표준화/규격화된 부품(기둥, 보, 벽)을 정해진 공간(부지)에 논리적으로 조립</td>
<td>정형화되지 않은 자연 지형을 다듬어 유기적인 형태(도로, 교량)를 창조</td>
</tr>
<tr>
<td>핵심 개념</td>
<td>객체(Object) 중심, 모듈화, 반복성. 동일 부품이 반복 사용됨.</td>
<td>위치(GIS) 기반, 비정형성, 일회성. 모든 프로젝트가 고유함.</td>
</tr>
<tr>
<td>데이터 특성</td>
<td>짧은 단위의 상대 좌표. 라이브러리 활용도가 높음.</td>
<td>광범위한 절대 좌표(GIS). 라이브러리 활용도가 매우 낮음.</td>
</tr>
<tr>
<td>소프트웨어 역할</td>
<td>디지털 부품(객체)의 효율적 배치, 간섭 검토, 수량 집계에 특화 (예: Revit)</td>
<td>광역 공간 데이터(GIS)와 3D 모델(BIM)을 융합하여 실시간 형상 생성 및 최적화 필요</td>
</tr>
</tbody>
</table>
<p>결론적으로, 현재 한국 토목 업계는 '레고'를 조립하기 위해 만들어진 도구로 '찰흙'을 빚으려는 모순적인 상황에 처해 있으며, 이는 수많은 비효율과 기술적 한계를 낳는 근본 원인이다.</p>
<h2>2.2 토목 분야에서의 불완전성 및 실무적 기능의 한계</h2>
<p>AutoCAD와 같은 범용 소프트웨어는 토목 분야의 특수성을 충분히 반영하지 못하여 다음과 같은 한계를 보인다. 국내에서 주로 사용되는 Autodesk 사의 제품은 기존 GIS 소프트웨어에 일부 기능을 추가하거나 건축용 소프트웨어(예: Revit)의 방식을 약간 변형하여 인프라 시설에 적용하고 있다. 그러나 이는 위치 기반의 비정형 지형에 맞춤형으로 건설되어야 하는 토목 시설물의 상세 설계 및 시공 단계에서의 활용에 매우 비효율적이다.</p>
<div class="highlight-box">
<ul>
<li><strong>범용 소프트웨어의 본질적 한계:</strong> 판매(구독) 수입 확보를 위해 사용자 수를 늘리고자 넓은 범위에서 사용 가능한 형태로 개발되므로, 분야별 특성을 반영한 전문성과 효율성을 기대하기 어렵다.</li>
<li><strong>GIS 기능의 통합 부족:</strong> 넓고 긴 지형에 시설물을 배치하는 토목 특성상 단순 CAD 그래픽 기능만으로는 곤란하며 GIS 소프트웨어가 필수적이지만, 범용 CAD는 이를 완벽하게 통합하지 못한다.</li>
<li><strong>비정형 시설물 모델링의 어려움:</strong> 토목 시설물은 매번 새롭게 모델링해야 하므로 재사용성 및 반복성이 매우 낮고 라이브러리 표준화가 곤란하다. 특히 복잡한 인터체인지(IC)나 분기점(JC)의 3차원 선형 및 편경사 처리는 범용 소프트웨어만으로 한계가 명확하다.</li>
<li><strong>국내 설계 기준 미반영:</strong> 미국 중심의 글로벌 표준에 맞춰 개발된 소프트웨어는 국내의 상세한 설계 기준(KDS)이나 시방서, 표준도 등을 완벽하게 지원하지 못해, 엔지니어는 소프트웨어가 생성한 결과물을 국내 기준에 맞게 수동으로 검증하고 수정하는 이중 작업을 반복해야 한다.</li>
<li><strong>구조물별 전문성 부재:</strong> 교량, 터널, 옹벽 등 각기 다른 공학적 원리를 가진 구조물별 전문 모듈이 부재하여, 별도의 전문 해석 소프트웨어나 고가의 서드파티 프로그램을 추가 구매해야 한다.</li>
</ul>
</div>
<h2>2.3 기술적 비효율과 작업 흐름의 단절</h2>
<p>토목 설계 분야에서 AutoCAD와 같은 범용 CAD 소프트웨어의 사용은 기술적 비효율과 작업의 단절을 초래하며, 이는 반복적인 수작업과 데이터 호환 문제로 이어진다. BIM의 핵심은 3D 통합 모델에서 모든 정보(도면, 수량 등)가 파생되는 것이지만, 국내 현장에서는 2D 도면 설계를 먼저 완료한 후, 이를 바탕으로 3D 모델을 별도로 제작하는 '전환설계'가 관행처럼 굳어져 있다. 이는 BIM의 본질을 완전히 왜곡하는 방식으로, 단순히 3D 모델링이라는 추가 업무만 발생시킬 뿐, 공기 단축이나 비용 절감 효과를 기대하기 어렵다. 오히려 2D 도면과 3D 모델 간의 불일치로 인한 오류 가능성만 증대시킨다.</p>
<div class="highlight-box">
<h3>실제 사례: 국내 A 엔지니어링 업체의 데이터 호환성 문제</h3>
<p>2023년 서울시 도로 설계 프로젝트에서 A 엔지니어링 업체는 비용 절감을 위해 ZWCAD를 사용하여 도면을 작성했으나, 발주처 요구에 따라 AutoCAD로 변환하는 과정에서 다음과 같은 문제가 발생했다.</p>
<ul>
<li>도면 내 좌표 정보 4곳에서 소수점 오류 발생</li>
<li>한글 폰트 12개 파일에서 깨짐 현상 발생</li>
<li>선형 데이터 3개 구간에서 그래픽 왜곡 발생</li>
<li>수정 작업에 추가 3일 소요, 약 180만원 비용 발생</li>
</ul>
</div>
<p>하나의 프로젝트를 수행하기 위해 GIS 분석, 지형 모델링, 구조물 모델링, 구조 해석 등 수많은 소프트웨어를 사용해야 하는 파편화된 워크플로우 또한 심각한 문제다. 각 단계마다 데이터를 변환하고 내보내고 가져오는 과정에서 정보의 누락이나 왜곡이 필연적으로 발생하며, 이는 프로젝트 전반의 데이터 일관성을 심각하게 저해하고 원활한 협업을 가로막는 주된 원인이다. 한 조사에 따르면, 도로 설계 프로젝트당 평균 반복 작업 시간은 전체 작업의 35%에 달하며, DWG 파일 호환성 문제로 인한 재작업률은 8.3%, 이로 인한 평균 프로젝트 지연 시간은 2.7일에 달하는 것으로 나타났다.</p>
<h2>2.4 기술 트렌드와의 부조화</h2>
<p>AutoCAD는 미래 지향적인 토목 설계 환경에서 여러 기술적 한계와 비효율성을 드러내고 있다. 정부의 BIM 도입 정책에도 불구하고, 국내 엔지니어링 업계에서는 BIM 설계에 투입되는 사업 비용이 수주 금액을 초과하여 손실을 보는 사례가 발생하고 있다. AutoCAD는 본연의 2D 도면 작성 기능에 치중하여, 3D 모델링 및 BIM 시스템과의 연동은 제한적이며, 시공 단계의 상세 모델링이 설계 단계에 전가되는 등 불분명한 업무 범위로 인해 오히려 업무 효율성이 떨어지는 경우가 많다.</p>
<p>또한, 폐쇄적인 데이터 포맷은 디지털 트윈(Digital Twin) 구현에 근본적인 제약으로 작용한다. 디지털 트윈은 현실 세계의 시설물을 가상 세계에 동일하게 구현하고, 생애주기 전반의 데이터를 실시간으로 연동하여 시뮬레이션 및 예측을 수행하는 기술이다. 이를 위해서는 데이터의 개방성과 상호운용성이 필수적이지만, Autodesk의 DWG, RVT와 같은 폐쇄적인 데이터 포맷은 타 시스템과의 자유로운 데이터 교환을 원천적으로 차단한다. 결과적으로 특정 기업의 생태계 안에서만 작동하는 '반쪽짜리 디지털 트윈'에 머물게 되며, 진정한 의미의 데이터 통합 및 활용이 불가능하다. 이는 AI 기반 설계 자동화나 최적화 기술을 적용하는 데에도 근본적인 한계로 작용한다.</p>
<div class="highlight-box">
<h3>실제 사례: 고속도로 건설 프로젝트의 BIM 전환 실패</h3>
<p>2022년 경부고속도로 확장 구간에서 BIM 기반 설계를 시도했으나, 기존 AutoCAD 기반 2D 도면과의 호환성 문제로 프로젝트 지연이 발생했다.</p>
<ul>
<li>2D 도면 → BIM 모델 변환 과정에서 지형 정보 30% 손실</li>
<li>구조물 상세 정보 불일치로 설계 검토 3회 반복</li>
<li>최종적으로 기존 2D 방식으로 회귀, 2.3억원 손실 및 프로젝트 일정 45일 지연</li>
</ul>
</div>
<h1>3. 시장의 족쇄: 관행인가, 필수인가?</h1>
<h2>3.1 익숙함의 함정 : 기술적 편의성과 굳어진 관행</h2>
<p>오랜 기간 사용해온 AutoCAD와 그 기반의 작업 방식은 일견 '기술적 편의성'을 제공하는 것처럼 보이지만, 실제로는 미래 지향적 설계 환경으로의 전환을 가로막는 '익숙함의 함정'으로 작용하고 있다. "원래 그렇게 해왔고, 다들 그렇게 한다"는 안일한 인식이 변화를 가로막는 가장 큰 내부 장벽이다. 새로운 기술이나 소프트웨어를 학습하는 것에 대한 심리적 저항감과 시간적 부담 때문에, 비효율적임을 알면서도 익숙한 방식을 고수하는 경향이 강하다.</p>
<p>국내 토목 설계 회사들은 수천억 원에 이르는 대규모 토목 공사를 설계하면서도 자체 매뉴얼 없이 '구멍 가게처럼' 운영되고 있다는 지적이 있다. 이는 수십 년에 걸쳐 축적된 기술과 경험이 담긴 매뉴얼을 통해 신속하고 정확하게 업무를 처리하는 건설 선진국과 대조된다. 개인의 능력에만 의존하는 업무 처리, 기술 축적 및 차별화 노력 부족, 발주처의 기술적 차별화 무관심 등이 복합적으로 작용한 결과다. 이는 엔지니어를 공학적 원리를 바탕으로 창의적인 해결책을 제시하는 전문가가 아닌, 특정 도구에 종속된 단순 기능인(Technician)으로 전락시키는 결과를 초래한다.</p>
<h2>3.2 선택의 제약과 압박 : 라이선스 비용 및 유지보수 문제</h2>
<p>현재 국내 건설산업은 제조업 대비 낮은 연평균 1%의 생산성 증가율을 보이며, 이는 낮은 디지털화 수준 때문으로 분석된다. 오토데스크의 독과점적 지위는 사용자에게 과도한 비용 부담을 지우고, 불공정 행위로까지 이어져 성과물 소유권 왜곡 문제를 심화시킨다. 라이선스 정책 변경으로 인한 비용 급증은 기업의 생존을 위협하는 수준이다.</p>
<p>오토데스크는 2017년부터 영구 라이선스 판매를 중단하고 구독 방식으로 전환했으며, 2020년 8월 7일부터는 여러 명이 하나의 라이선스를 공유하던 네트워크 라이선스의 갱신 및 판매를 종료했다. 이는 기업의 필요 라이선스 수를 2~3배 증가시켰다. 일부 업체는 SW 라이선스 비용이 엔지니어 1인당 월급의 10% 수준에 달하는 것으로 추산하며, 연간 400만 원(AEC 컬렉션 기준)을 지출하는 설계사무소의 경우 신입 엔지니어 월급의 10%를 소프트웨어 비용으로 내는 셈이다. 이러한 비용 부담은 중소기업에 더 큰 압박으로 작용하며, 많은 기업이 대안 CAD로의 전환을 모색하는 주된 이유가 되고 있다.</p>
<figure>
<svg width="600" height="300" viewBox="0 0 600 300" class="atomic-block">
<rect x="0" y="0" width="600" height="300" fill="#f8f8f8" rx="10" ry="10"/>
<line x1="100" y1="50" x2="100" y2="250" stroke="#ccc" stroke-width="1"/>
<text x="90" y="255" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">0</text>
<text x="90" y="150" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">100</text>
<text x="90" y="55" font-family="sans-serif" font-size="10" fill="#555" text-anchor="end">200</text>
<text x="60" y="150" font-family="sans-serif" font-size="12" fill="#555" transform="rotate(-90 60 150)">비용 (만원)</text>
<line x1="100" y1="250" x2="550" y2="250" stroke="#ccc" stroke-width="1"/>
<rect x="150" y="50" width="40" height="200" fill="#e74c3c" />
<text x="170" y="45" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">201</text>
<text x="170" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">AutoCAD</text>
<rect x="250" y="215" width="40" height="35" fill="#2ecc71" />
<text x="270" y="210" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">35</text>
<text x="270" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">CADian</text>
<rect x="350" y="190" width="40" height="60" fill="#f1c40f" />
<text x="370" y="185" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">60</text>
<text x="370" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">ZWCAD</text>
<rect x="450" y="170" width="40" height="80" fill="#3498db" />
<text x="470" y="165" font-family="sans-serif" font-size="10" fill="#333" text-anchor="middle">80</text>
<text x="470" y="265" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">MidasCAD</text>
</svg>
<figcaption>그림 2. CAD 소프트웨어 비용 비교 (연간 사용료 기준)</figcaption>
</figure>
<p>불법 소프트웨어 단속의 압박도 심각하다. 2023년 5월부터 오토데스크는 불법 크랙 사용에 대한 단속을 강화하여, 정품 사용 중인 PC라도 동일 네트워크 내에서 불법 소프트웨어 사용 이력이 있다면 경고 팝업이 뜨고, 기업에 과도한 합의금과 정품 구매를 강요하는 사례가 발생하고 있다. 이러한 상황으로 인해 사용자들은 "돈 벌어서 오토데스크 라이선스 비용으로 다 내고 나면 회사는 어떻게 운영하냐"는 공통된 불만을 표출하고 있다.</p>
<h2>3.3 기술적 우위의 허상</h2>
<p>오토데스크의 AutoCAD는 '업계 표준'이라는 인식 아래 유지되는 기술적 우위가 실제로는 과도한 비용 부담, 기술 종속성, 혁신 저해, 그리고 BIM 도입의 현실적인 한계를 야기하는 '족쇄'로 작용하고 있다. 현재 AutoCAD의 독점적 지위는 토목 분야에서 기술적으로 가장 뛰어나기 때문이 아니라, PC 보급 초기에 시장을 선점하고, 이를 바탕으로 강력한 마케팅과 생태계 구축을 통해 경쟁자의 진입을 막아온 결과물이다.</p>
<p>복잡한 사용자 인터페이스를 통한 기능적 사용 치중 유도, 서드파티 프로그램 유도 및 제한, 파일 호환성 문제 야기 등은 오토데스크의 기술 예속 전략이다. 이는 사용자들을 AutoCAD 시스템에 길들이기 위해 많은 명령어 창과 복잡한 사용법을 만들어 기능적 사용에 치중하게 만든다. 경쟁 부재는 기술 정체를 낳는다. 독점 기업은 치열한 기술 경쟁에 나설 유인이 부족하며, 사용자의 불편이나 비효율을 개선하기보다는, 기존의 시장 지배력을 유지하고 수익을 극대화하는 방향(라이선스 정책 변경 등)에 더 집중하게 된다.</p>
<p>유럽, 일본 등 기술 선진국에서는 특정 소프트웨어의 점유율이 50%를 넘지 않는 건강한 경쟁 구도가 형성되어 있다. 다양한 소프트웨어 기업들이 경쟁하며 사용자의 요구를 반영하고 기술 혁신을 주도함으로써, 산업 전체가 동반 성장하는 선순환 구조를 만든다. 이는 국내 시장의 기형적인 독점 구조가 얼마나 비정상적이며, 산업 발전에 해로운지를 명확히 보여주는 증거다.</p>
<h1>4. 지식재산권 : 문제점과 해결 방안</h1>
<h2>4.1 성과물 소유권의 왜곡</h2>
<p>국내 건설 엔지니어링 시장에서는 발주처(정부기관 포함)가 특정 소프트웨어 확장자를 사용하여 성과물을 납품하도록 강제하는 관행이 존재한다. 특히 BIM 도입이 가속화되면서, 일부 발주처는 Autodesk Civil 3D와 같은 특정 BIM 소프트웨어 사용을 명시적으로 권장하며 독점을 부추긴다는 지적이 나온다. 설계사나 엔지니어링 기업이 제작한 도면이나 모델 등의 성과물은 특정 소프트웨어의 포맷에 강력하게 종속된다. 이는 성과물에 대한 법적 소유권과 별개로, 실질적인 활용 및 수정 권한이 해당 소프트웨어 라이선스와 기술 환경에 묶이는 결과를 초래한다.</p>
<p>현재 국내에서는 엔지니어링 설계 시 생성되는 계산서나 기술서가 회사의 지적재산권(노하우)으로 인식되어 내부용으로만 사용되고, 요약된 계산서만 발주처에 납품되는 경향이 있다. 이는 기술서의 오류 개선이나 업그레이드를 통한 기술 축적 및 발전을 저해하며, 공학적 판단 근거를 명확히 기술하고 설계 투명성을 확보하는 데 한계를 초래한다. 발주처에서 특정 소프트웨어의 확장자(예: DWG)로 납품을 강제함에 따라, 설계 창작물이 파일 형식 자체에 종속되어 설계자의 지적재산권 및 지적 기여도가 발주처에 귀속되는 형태가 발생할 수 있다.</p>
<h2>4.2 종속성과 지식재산권 제약</h2>
<p>오토데스크는 자사의 AutoCAD에서 생성된 .dwg 파일(Trusted DWG 또는 RealDWG)이 다른 CAD 프로그램에서 생성된 파일보다 데이터 사용성과 안정성이 뛰어나다고 주장하며, 유사 CAD에서 작성된 DWG 파일을 AutoCAD에서 열 때 계산 오류, 그래픽 깨짐, 폰트 유실 등의 문제가 발생할 수 있다고 경고한다. 이는 시장 독점 체제를 공고히 하기 위해 의도적으로 호환성을 불편하게 만드는 전략으로 볼 수 있다.</p>
<p>모든 BIM 소프트웨어는 각자의 특성을 고려한 Format과 Schema를 가지므로, 현재까지 모든 소프트웨어의 모든 결과물을 받아들일 수 있는 제품은 없다. Autodesk Revit 제품의 경우, 상하위 버전 간 호환조차 불가능하여 사용자들이 지속적인 소프트웨어 업데이트 및 구독을 강제당하게 만들며, 이는 데이터 접근성을 통제하는 효과를 낸다. 이는 설계 데이터의 활용성을 저해하고, 특정 소프트웨어 없이는 데이터에 접근할 수 없게 만들어 장기 보존성에 문제를 야기한다.</p>
<h2>4.3 데이터 주권 및 보안 문제</h2>
<p>외산 소프트웨어 사용 환경은 직접적인 해킹 외에도 다양한 형태의 보안 취약성과 잠재적 데이터 유출 위험을 내포한다. 건설업계의 주요 당면 과제 중 하나로 데이터 보안이 12%를 차지할 정도로 인식되고 있다. 특히 오토데스크의 클라우드 기반 서비스 확대와 구독 방식 전환은 설계 데이터가 해외 서버에 저장되거나 전송될 가능성을 높이며, 이는 도로, 교량, 터널 등 국가 기반시설 관련 민감 정보의 유출 위험을 내포한다. 이는 심각한 데이터 주권 문제를 야기하며, 국제 정세의 변화나 해당 기업의 정책 변경에 따라 국가 안보와 직결된 중요 데이터에 대한 접근이 제한될 수 있는 잠재적 위험을 안고 있다.</p>
<div class="highlight-box">
<h3>데이터 주권 및 보안 위협 사례</h3>
<ul>
<li><strong>국가 기반시설 데이터의 해외 의존:</strong> 핵심 설계 데이터가 외국 기업 소프트웨어에 전적으로 의존하여 데이터 주권 침해 우려.</li>
<li><strong>클라우드 서비스의 보안 위험:</strong> 클라우드 서비스 이용 시 핵심 설계 정보의 해외 유출 가능성 상존.</li>
<li><strong>백도어 문제:</strong> 중국산 CAD의 백도어 문제처럼, 외산 소프트웨어 사용 시 도면 및 기밀 유출 가능성 제기.</li>
<li><strong>학생용 라이선스의 소유권 문제:</strong> Autodesk 학생용 라이선스로 제작된 작품의 소유권은 Autodesk에 귀속되며 교육용 외 사용이 제한됨.</li>
</ul>
</div>
<h2>4.4 해결 방안</h2>
<p>현재의 종속적 구조에서 벗어나 국내 건설 엔지니어링 산업의 지식재산권을 보호하고 기술 자립성을 확보하기 위해서는 다각적인 노력이 필요하다.</p>
<div class="highlight-box">
<ul>
<li><strong>개방형 포맷(Open Format) 도입 의무화:</strong> 정부 및 공공 발주처는 성과품 납품 시 특정 상용 포맷(DWG, RVT)이 아닌, 국제 표준의 개방형 포맷(IFC, LandXML 등) 제출을 의무화해야 한다. 이를 통해 데이터의 호환성과 장기적 재활용성을 확보하고 특정 소프트웨어에 대한 종속성을 근본적으로 해결할 수 있다.</li>
<li><strong>국산 및 대안 소프트웨어 활용 및 육성:</strong> ZWCAD, CADian 등 AutoCAD와 유사한 사용자 환경 및 DWG 호환성을 갖추면서도 상대적으로 저렴한 국산 및 대안 CAD의 활용을 적극적으로 모색해야 한다. 정부 차원의 국산 소프트웨어 개발 지원 및 도입 장려 정책 마련이 시급하다.</li>
<li><strong>기업 및 기관 차원의 인하우스(In-house) SW 개발 역량 강화:</strong> 엔지니어링 기업들이 자체적인 기술 개발 투자를 통해 엔지니어링 지식과 IT 기술을 융합한 전문 소프트웨어를 개발해야 한다. 이는 단순한 도구 사용을 넘어 창의적 문제 해결과 고부가가치 창출에 집중할 수 있도록 프로세스를 혁신하는 진정한 디지털 전환을 가능하게 한다.</li>
<li><strong>자체 기술력 축적 및 매뉴얼화:</strong> 국내 토목설계회사들이 선진국처럼 자체 매뉴얼을 마련하고 기술을 축적하여 업무의 질과 신뢰도를 향상시켜야 한다. 정확한 지식 기반의 설계 매뉴얼을 먼저 구축하고 이를 바탕으로 소프트웨어를 개발하는 패러다임 전환이 필요하다.</li>
</ul>
</div>
<h1>5. 새로운 가능성 : 대안을 찾아서</h1>
<h2>5.1 왜 새로운 소프트웨어가 필요한가?</h2>
<p>현재 건설산업은 생산성 정체 현상을 겪고 있으며 디지털 전환(DX)은 아날로그 정보의 디지털화에서 시작하여 업무 프로세스의 혁신을 동반해야 한다. BIM은 이러한 디지털 전환의 핵심 기술로 부상하고 있지만 기존 시스템으로는 여러 한계에 직면해 있다. 기존 시스템의 주요 한계점은 비효율성, 데이터 단절, 설계 오류, 기술 종속성 등이다. 토목시설물은 위치 기반의 비정형 지형에 맞춤형으로 건설되어야 하므로 건축에서 사용하던 방식을 일부 수정하여 적용하는 Autodesk사의 제품은 매우 비효율적이다. 기획, 설계, 구매, 시공 등 건설 단계별로 주요 정보와 처리 프로세스가 상이하고 주체가 달라지면서 데이터가 단절되어 중복 작업이 잦다.</p>
<p>따라서 이러한 한계를 극복하고 미래 토목 엔지니어링 환경에 부합하는 새로운 소프트웨어가 필수적이다.</p>
<h2>5.2 엔지니어의 핵심 요구사항</h2>
<p>새로운 소프트웨어는 단순 반복 작업을 줄이는 것을 목표로 하며 이는 건설비용 감소와 인력 투입 최소화로 이어진다. 사용자 친화적인 인터페이스와 쉬운 학습 곡선을 갖춘 소프트웨어를 선호하며 클라우드 기반의 공통 데이터 환경(CDE)을 통해 실시간 협업이 가능한 워크플로우를 원한다.</p>
<table>
<thead>
<tr>
<th>핵심 요구사항</th>
<th>상세 내용</th>
<th>기대 효과</th>
</tr>
</thead>
<tbody>
<tr>
<td>통합된 작업 환경</td>
<td>GIS 데이터 분석, 지형 모델링, 선형 계획, 토공 및 구조물 설계, 도면 및 수량 산출 등 분절된 작업을 하나의 플랫폼에서 연속적으로 수행할 수 있는 환경</td>
<td>데이터 변환 오류 제거, 작업 효율 극대화</td>
</tr>
<tr>
<td>프로세스 혁신 지원</td>
<td>2D 도면을 그리고 3D로 변환하는 전환설계가 아닌 3D 통합 모델을 기반으로 최적의 설계를 수행하는 혁신적인 프로세스 지원, 단순 반복 작업의 자동화</td>
<td>전환설계 폐해 극복, 엔지니어의 창의적 업무 집중</td>
</tr>
<tr>
<td>데이터의 자유로운 활용</td>
<td>특정 기업에 종속되지 않는 개방형 데이터 포맷(Open Format)을 기본으로 지원, 타 소프트웨어 및 하드웨어와 원활한 데이터 연동</td>
<td>디지털 트윈, 스마트 건설 구현의 토대 마련</td>
</tr>
<tr>
<td>직관성과 사용 편의성</td>
<td>수백 개의 복잡한 명령어를 암기하지 않아도 엔지니어가 자신의 공학적 지식과 설계 의도를 직관적으로 구현하고 검토할 수 있는 사용자 중심의 인터페이스(UI/UX)</td>
<td>학습 곡선 최소화, 엔지니어를 단순 기능인에서 전문가로 전환</td>
</tr>
<tr>
<td>국내 실정 맞춤 기능</td>
<td>국내 설계 기준(KDS), 시방서, 표준도 등을 완벽하게 지원하고 국내 지형 특성을 고려한 특화 기능 제공</td>
<td>수동 검증 및 수정 작업 최소화, 설계 정확도 향상</td>
</tr>
</tbody>
</table>
<h2>5.3 시장의 대안 소프트웨어 옵션 및 국내 개발의 전략적 중요성</h2>
<p>현재 시장에는 AutoCAD의 대안으로 고려할 수 있는 다양한 CAD/BIM 소프트웨어들이 존재한다. SOLIDWORKS, ZWCAD, FreeCAD, BricsCAD 등 다양한 외산 소프트웨어들이 각자의 장점을 내세우고 있다. 또한 CADian, MidasCAD, ZYXCAD 등 국산 대안 소프트웨어들은 AutoCAD와 유사한 사용자 환경과 DWG 호환성을 갖추고 있으며 상대적으로 저렴한 가격이 장점이다.</p>
<table>
<thead>
<tr>
<th>소프트웨어</th>
<th>국가</th>
<th>연간 가격 (약)</th>
<th>영구 라이선스 가격 (약)</th>
<th>특징</th>
</tr>
</thead>
<tbody>
<tr>
<td>AutoCAD</td>
<td>미국</td>
<td>201만원</td>
<td>중단</td>
<td>시장 표준, 높은 비용, 구독 전용</td>
</tr>
<tr>
<td>CADian</td>
<td>한국</td>
<td>35만원</td>
<td>99만원</td>
<td>국산, 높은 가격 경쟁력, AutoCAD와 유사</td>
</tr>
<tr>
<td>ZWCAD</td>
<td>중국</td>
<td>60만원</td>
<td>110만원</td>
<td>높은 호환성, 다양한 서드파티 지원, 백도어 우려</td>
</tr>
<tr>
<td>MidasCAD</td>
<td>한국</td>
<td>80만원</td>
<td>120만원</td>
<td>네트워크 버전 지원, 1:1 기술 지원, 토목 특화 기능</td>
</tr>
<tr>
<td>BricsCAD</td>
<td>벨기에</td>
<td>다양함</td>
<td>제공</td>
<td>강력한 2D/3D 기능, DWG 기반</td>
</tr>
</tbody>
</table>
<p>그러나 국내 토목 설계 현실은 지형의 변화가 심한 산악지가 많고 시공상세설계(Shop Drawing) 수준의 상세 설계를 요구하기 때문에 미국 중심의 범용 소프트웨어로는 국내 실정에 적합하지 못한 제약이 많다. 단순히 다른 외산 소프트웨어로 전환하는 것은 또 다른 종속을 낳을 뿐 근본적인 해결책이 될 수 없다. 진정한 기술 독립과 산업 경쟁력 확보를 위해서는 국내 토목 환경에 최적화된 국산 소프트웨어 개발이 필수적이다. 구조해석 분야에서 세계적인 소프트웨어로 성장한 마이다스아이티(Midas IT)의 성공 사례는 우리에게 충분한 가능성을 보여준다.</p>
<div class="highlight-box">
<h3>국산 인하우스 SW 개발의 전략적 가치</h3>
<ul>
<li><strong>기술 주권 확보:</strong> 외산 소프트웨어의 정책 변화나 국제 정세에 흔들리지 않고 우리 기술로 국가 핵심 인프라를 설계하고 데이터를 관리할 수 있는 능력을 확보하는 것은 국가 안보 차원에서도 매우 중요하다.</li>
<li><strong>산업 맞춤형 최적화:</strong> 국내의 복잡한 지형, 고유한 설계 기준, 실무 프로세스, 법규 등을 100% 반영한 소프트웨어를 개발함으로써 외산 소프트웨어로는 불가능했던 실질적인 생산성 향상과 품질 개선을 이룰 수 있다.</li>
<li><strong>새로운 부가가치 및 일자리 창출:</strong> 성공적으로 개발된 국산 소프트웨어와 솔루션은 그 자체가 새로운 수출 상품이 될 수 있다. 이는 토목 엔지니어링 산업을 단순 용역업에서 고부가가치 지식 산업으로 전환시키고 소프트웨어 개발, 기획, 기술 지원 등 양질의 일자리를 창출하는 원동력이 된다.</li>
<li><strong>지식의 자산화:</strong> 기업의 고유 기술과 설계 노하우를 코드로 구현하여 외부 영향 없이 완벽하게 디지털 자산(IP)으로 전환할 수 있다.</li>
</ul>
</div>
<h1>6. 결론 및 시사점</h1>
<h2>6.1 결론</h2>
<p>국내 토목 엔지니어링 소프트웨어 시장에서 Autodesk의 AutoCAD가 지닌 독점적 지위는 여러 가지 심각한 문제점을 야기하고 있습니다. 이러한 문제점들은 단순히 비용 증가를 넘어, 국내 산업의 기술 발전 저해, 지식재산권 침해, 그리고 국가 안보에까지 영향을 미치고 있습니다.</p>
<div class="highlight-box">
<ul>
<li><strong>비용 증가 및 부담 가중:</strong> 구독 방식으로의 전환과 지정 사용자 정책 강행으로 인해 기업의 소프트웨어 구매 및 유지 비용이 4~7배 급증하여 중소기업에게 특히 큰 압박으로 작용하고 있습니다. 이는 기업의 재정 건전성을 위협하고 신규 투자 여력을 감소시키는 주요 원인이 됩니다.</li>
<li><strong>생산성 저하 및 기술적 불안정성:</strong> AutoCAD는 건축 설계에 최적화된 범용 소프트웨어로서, 토목 분야의 비정형적이고 위치 기반의 특수성을 충분히 반영하지 못합니다. 이로 인해 데이터 호환성 문제, 반복적인 수작업, 그리고 2D-3D 전환설계와 같은 비효율적인 작업 흐름이 고착화되어 전반적인 생산성을 저하시키고 설계 오류의 가능성을 높입니다.</li>
<li><strong>기술 발전 저해 및 기술 종속 심화:</strong> 오토데스크의 독점적 지위는 타 CAD 소프트웨어의 개발 및 시장 진입을 제약하며, 사용자들을 특정 SW의 사용법에 길들이는 기술 예속 전략을 통해 국내 시장의 기술 혁신을 저해합니다. 이는 국내 토목 산업이 자체적인 기술 역량을 확보하지 못하고 외산 기술에 영구히 종속될 위험을 높입니다.</li>
<li><strong>지식재산권 및 데이터 주권 침해:</strong> 폐쇄적인 파일 포맷(DWG, RVT)은 엔지니어의 핵심 노하우가 담긴 설계 성과물에 대한 실질적 소유권을 왜곡하고, 국가 핵심 인프라 데이터가 해외 기업의 서버에 저장되거나 통제될 수 있는 심각한 데이터 주권 및 안보 문제를 야기합니다. 이는 디지털 트윈과 같은 미래 기술 구현에도 근본적인 제약이 됩니다.</li>
</ul>
</div>
<figure>
<svg width="400" height="200" viewBox="0 0 400 200" class="atomic-block">
<rect x="0" y="0" width="400" height="200" fill="#f8f8f8" rx="10" ry="10"/>
<g transform="translate(50, 70)">
<circle cx="0" cy="0" r="20" fill="#e74c3c"/>
<text x="0" y="5" font-family="sans-serif" font-size="12" fill="white" text-anchor="middle"></text>
<text x="0" y="40" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">비용 증가</text>
</g>
<g transform="translate(150, 70)">
<circle cx="0" cy="0" r="20" fill="#f39c12"/>
<path d="M-10,-10 L10,-10 L10,10 L-10,10 Z M-5,0 L5,0" fill="white"/>
<text x="0" y="40" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">생산성 저하</text>
</g>
<g transform="translate(250, 70)">
<circle cx="0" cy="0" r="20" fill="#3498db"/>
<path d="M-10,0 L10,0 M0,-10 L0,10" stroke="white" stroke-width="2"/>
<text x="0" y="40" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">기술 종속</text>
</g>
<g transform="translate(350, 70)">
<circle cx="0" cy="0" r="20" fill="#9b59b6"/>
<path d="M-8,-8 L8,8 M-8,8 L8,-8" stroke="white" stroke-width="2"/>
<text x="0" y="40" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">데이터 주권</text>
</g>
<text x="200" y="150" font-family="sans-serif" font-size="14" fill="#666" text-anchor="middle">AutoCAD 독점은 국내 토목 산업의 지속 가능한 발전을 저해합니다.</text>
</svg>
<figcaption>그림 3. AutoCAD 독점의 주요 문제점</figcaption>
</figure>
<h2>6.2 시사점</h2>
<p>현재의 딜레마를 극복하고 국내 토목 엔지니어링 산업이 미래 경쟁력을 확보하기 위해서는 패러다임의 전환과 다각적인 노력이 시급합니다.</p>
<div class="highlight-box">
<ul>
<li><strong>인하우스 소프트웨어 개발의 필요성:</strong> 국내 토목 엔지니어링 분야는 비정형성과 낮은 재사용성이라는 고유한 특수성을 가지고 있습니다. 현재 시판되는 범용 BIM 소프트웨어는 이러한 특성을 완벽하게 반영하지 못하며, 시공 및 유지관리 단계에서 필요한 기능이 개념적인 형태로만 존재하여 시설물 생애주기 관리에 한계를 보입니다. 인하우스 소프트웨어 개발은 이러한 국내 특수성에 최적화된 맞춤 솔루션을 제공하고, 데이터 주권 확보 및 지식재산권을 보호하며, 독점 소프트웨어 의존도를 감소시켜 산업 전반의 경쟁력을 강화하는 기반이 됩니다. 또한, 자체적인 소프트웨어 개발은 사용자의 피드백을 신속하게 반영하여 기능을 개선하고 안정적인 유지보수 시스템을 구축할 수 있게 하여 해외 상용 SW의 제한적인 고객 지원 문제를 해결하는 방안이 될 수 있습니다. 인하우스 소프트웨어 개발은 더 이상 일부 대기업의 전유물이나 선택적 투자 대상이 아니라, 기술 종속에서 벗어나 기업의 핵심 노하우를 온전한 디지털 자산(IP)으로 전환하고 급변하는 시장 환경에서 생존하기 위한 필수 전략입니다.</li>
<li><strong>기업의 과제: R&D 투자 및 인식 전환:</strong> 단기적 편의성 추구를 지양하고 인하우스 소프트웨어 개발과 같은 R&D 투자를 비용이 아닌 미래를 위한 필수 투자로 인식해야 합니다. 이를 위해 자사의 설계 프로세스를 표준화하고 핵심 기술을 담은 기술 매뉴얼 정립이 선행되어야 합니다.</li>
<li><strong>엔지니어의 과제: 역할 전환:</strong> 특정 소프트웨어의 기능(Tool Skill) 습득에 매몰되지 말고 공학적 본질에 대한 깊은 이해를 바탕으로 창의적인 문제 해결 능력(Engineering Skill)을 키워야 합니다. 나아가 소프트웨어 기획과 개발에 적극적으로 참여하여 프로세스를 혁신하는 생산자로 거듭나야 합니다.</li>
<li><strong>새로운 기술 도입 및 소프트웨어 다양성 확보의 중요성:</strong> BIM, AI 등 최신 기술 트렌드를 적극적으로 수용하고 소프트웨어 다양성을 확보하는 것은 국내 토목 엔지니어링 산업의 미래를 대비하는 데 핵심적입니다. BIM은 3D 모델링을 넘어 공정 정보(4D) 및 유지관리 정보(5D)를 포함하는 개념으로 발전하고 있으며, AI는 반복적인 설계 작업을 자동화하고 오류를 조기에 수정하며 프로젝트 일정을 단축하고 자원 사용을 최적화하는 데 기여할 수 있습니다.</li>
<li><strong>정책적 지원 및 산업계의 노력 방향:</strong> 산학연 협력 모델 구축을 통해 산업계의 풍부한 실무 지식과 데이터, 학계의 기초 연구 역량, 연구소의 첨단 기술을 유기적으로 융합하는 한국형 토목 엔지니어링 솔루션 개발을 위한 컨소시엄을 구성해야 합니다. 대학 교육과정 또한 특정 툴 사용법이 아닌 공학 원리와 데이터 구조 이해를 높이는 융합형 인재를 양성해야 합니다. 정부는 BIM 기반의 디지털 전환 로드맵을 통해 국내 건설 산업의 생산성을 향상시키고 고부가가치 산업으로 전환하여 국제 시장에서 기술적 우위를 확보할 수 있도록 지원해야 합니다.</li>
</ul>
</div>
<figure>
<svg width="600" height="250" viewBox="0 0 600 250" class="atomic-block">
<rect x="0" y="0" width="600" height="250" fill="#f8f8f8" rx="10" ry="10"/>
<g transform="translate(100, 80)">
<rect x="-40" y="-40" width="80" height="80" fill="#2ecc71" rx="10" ry="10"/>
<path d="M-15,0 L15,0 M0,-15 L0,15" stroke="white" stroke-width="3"/>
<text x="0" y="60" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">인하우스 SW</text>
<text x="0" y="75" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">개발</text>
</g>
<g transform="translate(250, 80)">
<rect x="-40" y="-40" width="80" height="80" fill="#f1c40f" rx="10" ry="10"/>
<path d="M-20,10 L0,-20 L20,10 Z" fill="white"/>
<text x="0" y="60" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">R&D 투자</text>
<text x="0" y="75" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">인식 전환</text>
</g>
<g transform="translate(400, 80)">
<rect x="-40" y="-40" width="80" height="80" fill="#9b59b6" rx="10" ry="10"/>
<circle cx="0" cy="-10" r="10" fill="white"/>
<path d="M-15,10 C-15,20 15,20 15,10 L15,0 L-15,0 Z" fill="white"/>
<text x="0" y="60" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">엔지니어</text>
<text x="0" y="75" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">역할 전환</text>
</g>
<g transform="translate(550, 80)">
<rect x="-40" y="-40" width="80" height="80" fill="#3498db" rx="10" ry="10"/>
<path d="M-15,-10 L15,-10 L15,10 L-15,10 Z" fill="white"/>
<text x="0" y="60" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">정책적 지원</text>
<text x="0" y="75" font-family="sans-serif" font-size="12" fill="#555" text-anchor="middle">및 협력</text>
</g>
<text x="300" y="200" font-family="sans-serif" font-size="14" fill="#666" text-anchor="middle">기술 주권 확보와 산업 경쟁력 강화를 위한 핵심 전략들</text>
</svg>
<figcaption>그림 4. 국내 토목 엔지니어링 분야 경쟁력 확보를 위한 제언</figcaption>
</figure>
</div>
</div>
<template id="page-template">
<div class="sheet">
<div class="page-header"></div>
<div class="body-content"></div>
<div class="page-footer">
<span class="rpt-title"></span>
<span class="pg-num"></span>
</div>
</div>
</template>
<script>
window.addEventListener("load", async () => {
await document.fonts.ready;
// [Config] 297mm - 20mm(상) - 20mm(하) = 257mm ≈ 970px
const CONFIG = { maxHeight: 985 };
const rawContainer = document.getElementById('raw-container');
if (rawContainer) {
rawContainer.innerHTML = rawContainer.innerHTML.replace(
/(<rect[^>]*?)\s+y="[^"]*"\s+([^>]*?y="[^"]*")/gi,
"$1 $2"
);
}
const raw = {
cover: document.getElementById('box-cover'),
toc: document.getElementById('box-toc'),
summary: document.getElementById('box-summary'),
content: document.getElementById('box-content')
};
let globalPage = 1;
let reportTitle = raw.cover.querySelector('h1')?.innerText || "Report";
function cleanH1Text(text) {
if (!text) return "";
const parts = text.split("-");
return parts[0].trim();
}
function detox(node) {
if (node.nodeType !== 1) return;
// [Safety Check 1] SVG 내부는 절대 건드리지 않음 (차트 깨짐 방지)
if (node.closest('svg')) return;
let cls = "";
if (node.hasAttribute('class')) {
cls = node.getAttribute('class');
}
/* 차트/그리드 클래스는 정화 대상에서 제외 */
if ( (cls.includes('bg-') || cls.includes('border-') || cls.includes('box')) &&
!cls.includes('title-box') &&
!cls.includes('toc-') &&
!cls.includes('cover-') &&
!cls.includes('donut-') && /* 추가됨 */
!cls.includes('chart-') && /* 추가됨 */
!cls.includes('concept-') && /* 추가됨 */
!cls.includes('image-grid') && /* 추가됨 */
!cls.includes('highlight-box') ) {
// 1. 표준 클래스로 강제 교체
node.setAttribute('class', 'highlight-box atomic-block');
// 2. 박스 내부 제목 스타일 초기화 (기존 스타일과의 충돌 방지)
const internalHeads = node.querySelectorAll('h3, h4, strong, b');
internalHeads.forEach(head => {
head.removeAttribute('style');
head.removeAttribute('class');
});
// 3. 인라인 스타일 삭제
node.removeAttribute('style');
cls = 'highlight-box atomic-block';
}
if (node.hasAttribute('class')) {
if (!cls.includes('toc-') &&
!cls.includes('cover-') &&
!cls.includes('highlight-') &&
!cls.includes('title-box') &&
!cls.includes('donut-') && /* 추가됨 */
!cls.includes('concept-') && /* 추가됨 */
!cls.includes('image-grid') && /* 추가됨 */
!cls.includes('atomic-block')) {
node.removeAttribute('class');
}
}
node.removeAttribute('style');
if (node.tagName === 'TABLE') node.border = "1";
if (node.tagName === 'FIGURE') {
const internalTitles = node.querySelectorAll('h3, h4, .chart-title');
internalTitles.forEach(t => t.style.display = 'none');
}
}
function formatTOC(container) {
// 1. 기존 ul/li 구조가 있다면 분석
const nodes = container.querySelectorAll("h1, h2, h3");
// 2. 헤더가 하나도 없다면 리턴 (에러 방지)
if(nodes.length === 0) return;
let tocHTML = "<ul style='padding-left:0; margin:0;'>";
nodes.forEach(node => {
let text = node.innerText.trim();
let lvlClass = node.tagName === "H1" ? "toc-lvl-1" : (node.tagName === "H2" ? "toc-lvl-2" : "toc-lvl-3");
let num = "", title = text;
const match = text.match(/^(\d+(\.\d+)*)\s+(.*)/);
if (match) {
num = match[1];
title = match[3];
}
tocHTML += `<li class='toc-item ${lvlClass}'>
<span class='toc-number'>${num}</span>
<span class='toc-text'>${title}</span>
</li>`;
});
tocHTML += "</ul>";
container.innerHTML = tocHTML;
}
function getFlatNodes(element) {
// [1] 목차(TOC) 처리 로직 (제목 생성 + 완벽한 그룹화)
if(element.id === 'box-toc') {
// 1. 스타일 초기화
element.querySelectorAll('*').forEach(el => detox(el));
// 2. 레벨 분석 (위의 formatTOC 실행)
formatTOC(element);
const tocNodes = [];
// [수정] 원본에 H1이 없으면 '목차' 타이틀 강제 생성
let title = element.querySelector('h1');
if (!title) {
title = document.createElement('h1');
title.innerText = "목차";
}
tocNodes.push(title.cloneNode(true));
// 3. 그룹화 로직 (Flattened List -> Grouped Divs)
const allLis = element.querySelectorAll('li');
let currentGroup = null;
allLis.forEach(li => {
const isLevel1 = li.classList.contains('toc-lvl-1');
// 대목차(Level 1)가 나오면 새로운 그룹 시작
if (isLevel1) {
// 이전 그룹이 있으면 저장
if (currentGroup) tocNodes.push(currentGroup);
// 새 그룹 박스 생성
currentGroup = document.createElement('div');
currentGroup.className = 'toc-group atomic-block';
// 내부 UL 생성 (들여쓰기 구조용)
const ulWrapper = document.createElement('ul');
ulWrapper.style.margin = "0";
ulWrapper.style.padding = "0";
currentGroup.appendChild(ulWrapper);
}
if (!currentGroup) {
currentGroup = document.createElement('div');
currentGroup.className = 'toc-group atomic-block';
const ulWrapper = document.createElement('ul');
ulWrapper.style.margin = "0";
ulWrapper.style.padding = "0";
currentGroup.appendChild(ulWrapper);
}
currentGroup.querySelector('ul').appendChild(li.cloneNode(true));
});
if (currentGroup) tocNodes.push(currentGroup);
return tocNodes;
}
let nodes = [];
Array.from(element.children).forEach(child => {
detox(child);
if (child.classList.contains('highlight-box')) {
child.querySelectorAll('h3, h4, strong, b').forEach(head => {
head.removeAttribute('style');
head.removeAttribute('class');
});
nodes.push(child.cloneNode(true));
}
else if(['DIV','SECTION','ARTICLE','MAIN'].includes(child.tagName)) {
nodes = nodes.concat(getFlatNodes(child));
}
else if (['UL','OL'].includes(child.tagName)) {
Array.from(child.children).forEach((li, idx) => {
detox(li);
const w = document.createElement(child.tagName);
w.style.margin="0"; w.style.paddingLeft="20px";
if(child.tagName==='OL') w.start=idx+1;
const cloneLi = li.cloneNode(true);
cloneLi.querySelectorAll('*').forEach(el => detox(el));
w.appendChild(cloneLi);
nodes.push(w);
});
} else {
const clone = child.cloneNode(true);
detox(clone);
clone.querySelectorAll('*').forEach(el => detox(el));
nodes.push(clone);
}
});
return nodes;
}
// 고아를 방지
function renderFlow(sectionType, sourceNodes) {
if (!sourceNodes.length) return;
let currentHeaderTitle = sectionType === 'toc' ? "목차" : (sectionType === 'summary' ? "요약" : reportTitle);
let page = createPage(sectionType, currentHeaderTitle);
let body = page.querySelector('.body-content');
let queue = [...sourceNodes];
while (queue.length > 0) {
let node = queue.shift();
let clone = node.cloneNode(true);
let isH1 = clone.tagName === 'H1';
let isHeading = ['H2', 'H3'].includes(clone.tagName);
let isText = ['P', 'LI'].includes(clone.tagName) && !clone.classList.contains('atomic-block');
let isAtomic = ['TABLE', 'FIGURE', 'IMG', 'SVG'].includes(clone.tagName) ||
clone.querySelector('table, img, svg') ||
clone.classList.contains('atomic-block');
// [전처리] H1 텍스트 정제
if (isH1 && clone.innerText.includes('-')) {
clone.innerText = clone.innerText.split('-')[0].trim();
}
// [Rule 1] H1 처리
if (isH1 && (sectionType === 'body' || sectionType === 'summary')) {
currentHeaderTitle = clone.innerText;
if (body.children.length > 0) {
page = createPage(sectionType, currentHeaderTitle);
body = page.querySelector('.body-content');
} else {
page.querySelector('.page-header').innerText = currentHeaderTitle;
}
}
// [Rule 2] Orphan Control
if (isHeading) {
const spaceLeft = CONFIG.maxHeight - body.scrollHeight;
if (spaceLeft < 160) {
page = createPage(sectionType, currentHeaderTitle);
body = page.querySelector('.body-content');
}
}
body.appendChild(clone);
if (isText && clone.innerText.length > 10) {
const originalHeight = clone.offsetHeight;
clone.style.letterSpacing = "-1.3px";
if (clone.offsetHeight < originalHeight) {
clone.style.letterSpacing = "-1.3px";
console.log("Squeeze 성공!", clone.innerText.substring(0, 10) + "...");
} else {
clone.style.letterSpacing = "";
}
}
// [Rule 3] 넘침 감지
if (body.scrollHeight > CONFIG.maxHeight) {
if (sectionType === 'toc' && !body.classList.contains('toc-squeeze') &&
body.children.length > 0) {
// 1. 압축 모드 발동!
body.classList.add('toc-squeeze');
if (body.scrollHeight <= CONFIG.maxHeight) {
continue;
} else {
body.classList.remove('toc-squeeze');
body.removeChild(clone);
}
}
// 3-1. 텍스트 분할 (Split) - LI 태그 포함
if (isText) {
body.removeChild(clone);
let textContent = node.innerText;
let tempP = node.cloneNode(false);
tempP.innerText = "";
if (clone.style.letterSpacing) tempP.style.letterSpacing = clone.style.letterSpacing;
body.appendChild(tempP);
const words = textContent.split(' ');
let currentText = "";
for (let i = 0; i < words.length; i++) {
let word = words[i];
let prevText = currentText;
currentText += (currentText ? " " : "") + word;
tempP.innerText = currentText;
if (body.scrollHeight > CONFIG.maxHeight) {
tempP.innerText = prevText;
tempP.style.textAlign = "justify";
tempP.style.textAlignLast = "justify";
let remainingText = words.slice(i).join(' ');
let remainingNode = node.cloneNode(false);
remainingNode.innerText = remainingText;
queue.unshift(remainingNode);
page = createPage(sectionType, currentHeaderTitle);
body = page.querySelector('.body-content');
body.style.lineHeight = "";
body.style.letterSpacing = "";
break;
// for문 탈출
}
}
}
// 3-2. 표, 그림, 박스인 경우 -> 통째로 다음 장으로 이동
else {
body.removeChild(clone);
let spaceLeft = CONFIG.maxHeight - body.scrollHeight;
if (body.children.length > 0 && spaceLeft > 50 && queue.length > 0) {
while(queue.length > 0) {
let candidate = queue[0];
if (['H1','H2','H3'].includes(candidate.tagName) ||
candidate.classList.contains('atomic-block') ||
candidate.querySelector('img, table')) break;
let filler = candidate.cloneNode(true);
if(['P','LI'].includes(filler.tagName) && filler.innerText.length > 10) {
const hBefore = filler.offsetHeight;
filler.style.letterSpacing = "-1.0px";
}
body.appendChild(filler);
if (body.scrollHeight <= CONFIG.maxHeight) {
if(filler.style.letterSpacing === "-1.0px") filler.style.letterSpacing = "-0.8px";
queue.shift();
} else {
body.removeChild(filler);
break;
}
}
}
// 2. 이미지 배치 (수정된 핵심 로직)
if (body.children.length > 0) {
page = createPage(sectionType, currentHeaderTitle);
body = page.querySelector('.body-content');
}
body.appendChild(clone);
if (isAtomic && body.scrollHeight > CONFIG.maxHeight) {
const currentH = clone.offsetHeight;
const overflow = body.scrollHeight - CONFIG.maxHeight;
body.removeChild(clone);
if (overflow > 0 && overflow < (currentH * 0.15)) {
clone.style.transform = "scale(0.85)";
clone.style.transformOrigin = "top center";
clone.style.marginBottom = `-${currentH * 0.15}px`;
body.appendChild(clone);
} else {
body.appendChild(clone);
}
}
}
}
}
}
function createPage(type, headerTitle) {
const tpl = document.getElementById('page-template');
const clone = tpl.content.cloneNode(true);
const sheet = clone.querySelector('.sheet');
if (type === 'cover') {
sheet.innerHTML = "";
const title = raw.cover.querySelector('h1')?.innerText || "Report";
const sub = raw.cover.querySelector('h2')?.innerText || "";
const pTags = raw.cover.querySelectorAll('p');
const infos = pTags.length > 0 ? Array.from(pTags).map(p => p.innerText).join(" / ") : "";
sheet.innerHTML = `
<div style="position:absolute; top:20mm; right:20mm; text-align:right; font-size:11pt; color:#666;">${infos}</div>
<div style="display:flex; flex-direction:column; justify-content:center; align-items:center; height:100%; text-align:center; width:100%;">
<div style="width:85%;">
<div style="font-size:32pt; font-weight:900; color:var(--primary); line-height:1.2; margin-bottom:30px; word-break:keep-all;">${title}</div>
<div style="font-size:20pt; font-weight:300; color:#444; word-break:keep-all;">${sub}</div>
</div>
</div>`;
} else {
// ... (나머지 페이지 생성 로직 기존 유지) ...
clone.querySelector('.page-header').innerText = headerTitle;
clone.querySelector('.rpt-title').innerText = reportTitle;
if (type !== 'toc') clone.querySelector('.pg-num').innerText = `- ${globalPage++} -`;
else clone.querySelector('.pg-num').innerText = "";
}
document.body.appendChild(sheet);
return sheet;
}
createPage('cover');
if(raw.toc) renderFlow('toc', getFlatNodes(raw.toc));
const summaryNodes = getFlatNodes(raw.summary);
// 1. 가상 공간에 미리 렌더링하여 높이 측정
const tempBox = document.createElement('div');
tempBox.style.width = "210mm";
tempBox.style.position = "absolute";
tempBox.style.visibility = "hidden";
tempBox.id = 'box-summary';
// CSS 적용
document.body.appendChild(tempBox);
summaryNodes.forEach(node => tempBox.appendChild(node.cloneNode(true)));
// 2. 높이 분석 (Smart Runt Control)
const totalHeight = tempBox.scrollHeight;
const pageHeight = CONFIG.maxHeight; // 1페이지 가용 높이 (약 970px)
const lastPart = totalHeight % pageHeight;
if (totalHeight > pageHeight && lastPart > 0 && lastPart < 180) {
summaryNodes.forEach(node => {
if(node.nodeType === 1) {
node.classList.add('squeeze');
if(node.tagName === 'H1') node.classList.add('squeeze-title');
if(node.tagName === 'P' || node.tagName === 'LI') {
node.style.fontSize = "9.5pt";
node.style.lineHeight = "1.4";
node.style.letterSpacing = "-0.8px";
}
}
});
}
document.body.removeChild(tempBox);
// 3. 렌더링 실행
renderFlow('summary', summaryNodes);
renderFlow('body', getFlatNodes(raw.content));
document.querySelectorAll('.sheet h1, .sheet h2').forEach(el => {
let fs = 100;
while(el.scrollWidth > el.clientWidth && fs > 50) { el.style.fontSize = (--fs)+"%"; }
});
const allTextNodes = document.querySelectorAll('.sheet .body-content p, .sheet .body-content li');
allTextNodes.forEach(el => {
if (el.closest('table') || el.closest('figure') || el.closest('.chart')) return;
if (el.innerText.trim().length < 10) return;
const originH = el.offsetHeight;
const originSpacing = el.style.letterSpacing;
el.style.fontSize = "12pt";
el.style.letterSpacing = "-1.4px";
const newH = el.offsetHeight;
if (newH < originH) {
el.style.letterSpacing = "-1.0px";
}
else {
el.style.letterSpacing = originSpacing;
}
});
// 제목 자동 축소
document.querySelectorAll('.sheet h1, .sheet h2').forEach(el => {
let fs = 100;
while(el.scrollWidth > el.clientWidth && fs > 50) { el.style.fontSize = (--fs)+"%"; }
});
const pages = document.querySelectorAll('.sheet');
if (pages.length >= 2) {
const lastSheet = pages[pages.length - 1];
const prevSheet = pages[pages.length - 2];
if(lastSheet.querySelector('.rpt-title')) {
const lastBody = lastSheet.querySelector('.body-content');
const prevBody = prevSheet.querySelector('.body-content');
// 마지막 페이지 내용이 3줄(약 150px) 이하인가?
if (lastBody.scrollHeight < 150 && lastBody.innerText.trim().length > 0) {
prevBody.style.lineHeight = "1.3";
prevBody.style.paddingBottom = "0px";
const contentToMove = Array.from(lastBody.children);
contentToMove.forEach(child => prevBody.appendChild(child.cloneNode(true)));
if (prevBody.scrollHeight <= CONFIG.maxHeight + 5) {
lastSheet.remove();
} else {
for(let i=0; i<contentToMove.length; i++) prevBody.lastElementChild.remove();
prevBody.style.lineHeight = "";
}
}
}
}
const rawToRemove = document.getElementById('raw-container');
if(rawToRemove) rawToRemove.remove();
});
</script>
</body>
</html>