{"id":285,"date":"2026-06-30T22:52:23","date_gmt":"2026-06-30T14:52:23","guid":{"rendered":"https:\/\/numsimlab.com\/?p=285"},"modified":"2026-06-30T22:52:23","modified_gmt":"2026-06-30T14:52:23","slug":"dxf-textmtext","status":"publish","type":"post","link":"https:\/\/numsimlab.com\/?p=285","title":{"rendered":"DXF TEXT&amp;MTEXT"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"zh\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title><span data-lang=\"zh\">DXF TEXT &amp; MTEXT \u5b9e\u4f53\u5b8c\u5168\u53c2\u8003<\/span><span data-lang=\"en\">DXF TEXT &amp; MTEXT Entity Complete Reference<\/span><\/title>\n<style>\n:root {\n  --bg: #f5faf7;\n  --bg2: #eef6f1;\n  --ink: #1a2e23;\n  --muted: #5a7a6e;\n  --rule: #c0d8cc;\n  --accent: #059669;\n  --accent2: #0d9488;\n  --code-bg: #1e2d26;\n  --code-fg: #d1fae5;\n  --warn-bg: #fff7ed;\n  --warn-border: #f97316;\n  --info-bg: #eff6ff;\n  --info-border: #3b82f6;\n}\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\nhtml { scroll-behavior: smooth; }\n\nbody {\n  font-family: \"Microsoft YaHei\", \"PingFang SC\", system-ui, -apple-system, sans-serif;\n  background: var(--bg);\n  color: var(--ink);\n  line-height: 1.8;\n}\n\nbody.en-active { font-family: system-ui, -apple-system, sans-serif; }\n\n\/* Language Switcher Bar *\/\n.lang-bar {\n  position: sticky;\n  top: 0;\n  z-index: 1000;\n  background: var(--accent);\n  display: flex;\n  justify-content: center;\n  gap: 1rem;\n  padding: 0.6rem 1rem;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n}\n\n.lang-bar button {\n  background: rgba(255,255,255,0.2);\n  border: 2px solid transparent;\n  color: #fff;\n  padding: 0.4rem 1.2rem;\n  border-radius: 4px;\n  cursor: pointer;\n  font-size: 0.95rem;\n  font-weight: 600;\n  transition: all 0.2s;\n}\n\n.lang-bar button:hover {\n  background: rgba(255,255,255,0.35);\n}\n\n.lang-bar button.active {\n  background: #fff;\n  color: var(--accent);\n  border-color: #fff;\n}\n\n\/* Container *\/\n.container {\n  max-width: 1100px;\n  margin: 0 auto;\n  padding: 0 1.5rem;\n}\n\n\/* Cover *\/\n.cover {\n  text-align: center;\n  padding: 4rem 1rem 3rem;\n  background: var(--bg2);\n  border-bottom: 1px solid var(--rule);\n}\n\n.cover h1 {\n  font-size: 2.2rem;\n  color: var(--ink);\n  margin-bottom: 0.8rem;\n  font-weight: 700;\n}\n\n.cover .subtitle {\n  font-size: 1.3rem;\n  color: var(--accent);\n  font-weight: 600;\n  margin-bottom: 0.6rem;\n}\n\n.cover .desc {\n  font-size: 1rem;\n  color: var(--muted);\n}\n\n\/* TOC *\/\n.toc {\n  background: #fff;\n  border: 1px solid var(--rule);\n  border-radius: 8px;\n  padding: 1.5rem 2rem;\n  margin: 2rem 0;\n}\n\n.toc h2 {\n  font-size: 1.3rem;\n  margin-bottom: 1rem;\n  color: var(--accent);\n}\n\n.toc ol, .toc ul {\n  padding-left: 1.5rem;\n}\n\n.toc li {\n  margin: 0.4rem 0;\n}\n\n.toc a {\n  color: var(--ink);\n  text-decoration: none;\n  transition: color 0.2s;\n}\n\n.toc a:hover {\n  color: var(--accent);\n  text-decoration: underline;\n}\n\n\/* Sections *\/\nsection {\n  background: #fff;\n  border: 1px solid var(--rule);\n  border-radius: 8px;\n  padding: 2rem 2.5rem;\n  margin: 2rem 0;\n}\n\nsection h2 {\n  font-size: 1.6rem;\n  color: var(--accent);\n  margin-bottom: 1.2rem;\n  padding-bottom: 0.5rem;\n  border-bottom: 2px solid var(--rule);\n}\n\nsection h3 {\n  font-size: 1.25rem;\n  color: var(--accent2);\n  margin: 1.5rem 0 0.8rem;\n}\n\nsection h4 {\n  font-size: 1.1rem;\n  color: var(--ink);\n  margin: 1.2rem 0 0.6rem;\n}\n\nsection p {\n  margin-bottom: 0.9rem;\n  text-align: justify;\n}\n\n\/* Tables *\/\ntable {\n  width: 100%;\n  border-collapse: collapse;\n  margin: 1.2rem 0;\n  font-size: 0.95rem;\n}\n\nth, td {\n  border: 1px solid var(--rule);\n  padding: 0.7rem 0.9rem;\n  text-align: left;\n}\n\nth {\n  background: var(--bg2);\n  font-weight: 600;\n  color: var(--ink);\n}\n\ntr:nth-child(even) { background: var(--bg); }\n\n\/* Code *\/\npre {\n  background: var(--code-bg);\n  color: var(--code-fg);\n  padding: 1.2rem 1.5rem;\n  border-radius: 6px;\n  overflow-x: auto;\n  font-family: Consolas, \"Courier New\", monospace;\n  font-size: 0.9rem;\n  line-height: 1.6;\n  margin: 1rem 0;\n}\n\ncode {\n  font-family: Consolas, \"Courier New\", monospace;\n  background: rgba(5,150,105,0.1);\n  padding: 0.15rem 0.4rem;\n  border-radius: 3px;\n  font-size: 0.9em;\n  color: var(--accent);\n}\n\npre code {\n  background: transparent;\n  padding: 0;\n  color: inherit;\n}\n\n\/* Group code highlight *\/\n.gc {\n  font-family: Consolas, \"Courier New\", monospace;\n  font-weight: 700;\n  color: var(--accent2);\n}\n\n\/* Type badges *\/\n.type-badge {\n  display: inline-block;\n  padding: 0.15em 0.5em;\n  border-radius: 4px;\n  font-size: 0.72rem;\n  font-weight: 600;\n  white-space: nowrap;\n}\n\n.type-str { background: #d1fae5; color: #065f46; }\n.type-float { background: #e0e7ff; color: #3730a3; }\n.type-int { background: #fef3c7; color: #92400e; }\n.type-bool { background: #dbeafe; color: #1e40af; }\n.type-handle { background: #fef9c3; color: #854d0e; }\n.type-binary { background: #fce7f3; color: #9d174d; }\n.type-special { background: #f3f4f6; color: #4b5563; }\n\n\/* Tip box *\/\n.tip-box {\n  background: #ecfdf5;\n  border-left: 4px solid var(--accent);\n  padding: 1rem 1.2rem;\n  margin: 1.2rem 0;\n  border-radius: 0 6px 6px 0;\n  font-size: 0.95rem;\n}\n\n.tip-box strong { color: var(--accent); }\n\n\/* Warning box *\/\n.warn-box {\n  background: var(--warn-bg);\n  border-left: 4px solid var(--warn-border);\n  padding: 1rem 1.2rem;\n  margin: 1.2rem 0;\n  border-radius: 0 6px 6px 0;\n  font-size: 0.95rem;\n}\n\n.warn-box strong { color: var(--warn-border); }\n\n\/* Info box *\/\n.info-box {\n  background: var(--info-bg);\n  border-left: 4px solid var(--info-border);\n  padding: 1rem 1.2rem;\n  margin: 1.2rem 0;\n  border-radius: 0 6px 6px 0;\n  font-size: 0.95rem;\n}\n\n.info-box strong { color: var(--info-border); }\n\n\/* Table wrap for scrolling *\/\n.table-wrap {\n  overflow-x: auto;\n  margin-bottom: 1rem;\n}\n\n\/* Section icon *\/\n.section-icon {\n  width: 32px;\n  height: 32px;\n  border-radius: 8px;\n  background: var(--bg2);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 1rem;\n  margin-right: 0.6rem;\n  vertical-align: middle;\n}\n\n\/* Comparison grid *\/\n.compare-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 1.5rem;\n  margin: 1.5rem 0;\n}\n\n.compare-card {\n  background: var(--bg);\n  border: 1px solid var(--rule);\n  border-radius: 8px;\n  padding: 1.2rem;\n}\n\n.compare-card h4 {\n  margin-top: 0;\n  color: var(--accent);\n  border-bottom: 1px solid var(--rule);\n  padding-bottom: 0.5rem;\n}\n\n\/* Diagram area *\/\n.diagram-area {\n  background: #fff;\n  border: 1px solid var(--rule);\n  border-radius: 8px;\n  padding: 1.5rem;\n  margin: 1.2rem 0;\n  text-align: center;\n}\n\n.diagram-title {\n  font-weight: 600;\n  color: var(--muted);\n  margin-bottom: 1rem;\n  font-size: 0.9rem;\n}\n\n\/* Footnotes *\/\n.footnotes {\n  font-size: 0.85rem;\n  color: var(--muted);\n  border-top: 1px solid var(--rule);\n  margin-top: 2rem;\n  padding-top: 1rem;\n  text-align: center;\n}\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  .cover h1 { font-size: 1.5rem; }\n  .cover .subtitle { font-size: 1.05rem; }\n  section { padding: 1.2rem 1rem; }\n  section h2 { font-size: 1.3rem; }\n  .compare-grid { grid-template-columns: 1fr; }\n  table { font-size: 0.85rem; }\n  th, td { padding: 0.5rem; }\n}\n\n\/* Language display control *\/\n[data-lang=\"en\"] { display: none; }\nhtml[lang=\"en\"] [data-lang=\"zh\"] { display: none; }\nhtml[lang=\"en\"] [data-lang=\"en\"] { display: inline; }\n\n\/* For block elements *\/\nh2 [data-lang=\"en\"], h3 [data-lang=\"en\"], h4 [data-lang=\"en\"], p [data-lang=\"en\"], li [data-lang=\"en\"], th [data-lang=\"en\"], td [data-lang=\"en\"], div [data-lang=\"en\"] {\n  display: none;\n}\n\nhtml[lang=\"en\"] h2 [data-lang=\"zh\"], html[lang=\"en\"] h3 [data-lang=\"zh\"], html[lang=\"en\"] h4 [data-lang=\"zh\"], html[lang=\"en\"] p [data-lang=\"zh\"], html[lang=\"en\"] li [data-lang=\"zh\"], html[lang=\"en\"] th [data-lang=\"zh\"], html[lang=\"en\"] td [data-lang=\"zh\"], html[lang=\"en\"] div [data-lang=\"zh\"] {\n  display: none;\n}\n\nhtml[lang=\"en\"] h2 [data-lang=\"en\"], html[lang=\"en\"] h3 [data-lang=\"en\"], html[lang=\"en\"] h4 [data-lang=\"en\"], html[lang=\"en\"] p [data-lang=\"en\"], html[lang=\"en\"] li [data-lang=\"en\"], html[lang=\"en\"] th [data-lang=\"en\"], html[lang=\"en\"] td [data-lang=\"en\"], html[lang=\"en\"] div [data-lang=\"en\"] {\n  display: inline;\n}\n\n\/* Inline fix for block-level multilingual wrappers *\/\n.toc h2 span, .cover h1 span, .cover .subtitle span, .cover .desc span, section h2 span, section h3 span, section h4 span, .code-label span, .stat-label span {\n  display: inline;\n}\n\nhtml[lang=\"en\"] .toc h2 [data-lang=\"zh\"], html[lang=\"en\"] .cover h1 [data-lang=\"zh\"], html[lang=\"en\"] .cover .subtitle [data-lang=\"zh\"], html[lang=\"en\"] .cover .desc [data-lang=\"zh\"], html[lang=\"en\"] section h2 [data-lang=\"zh\"], html[lang=\"en\"] section h3 [data-lang=\"zh\"], html[lang=\"en\"] section h4 [data-lang=\"zh\"], html[lang=\"en\"] .code-label [data-lang=\"zh\"], html[lang=\"en\"] .stat-label [data-lang=\"zh\"] {\n  display: none;\n}\n\nhtml[lang=\"en\"] .toc h2 [data-lang=\"en\"], html[lang=\"en\"] .cover h1 [data-lang=\"en\"], html[lang=\"en\"] .cover .subtitle [data-lang=\"en\"], html[lang=\"en\"] .cover .desc [data-lang=\"en\"], html[lang=\"en\"] section h2 [data-lang=\"en\"], html[lang=\"en\"] section h3 [data-lang=\"en\"], html[lang=\"en\"] section h4 [data-lang=\"en\"], html[lang=\"en\"] .code-label [data-lang=\"en\"], html[lang=\"en\"] .stat-label [data-lang=\"en\"] {\n  display: inline;\n}\n\n\/* Attachment point grid diagram *\/\n.attachment-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 80px);\n  grid-template-rows: repeat(3, 80px);\n  gap: 4px;\n  margin: 1rem auto;\n  width: fit-content;\n}\n\n.attachment-cell {\n  border: 2px solid var(--rule);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 0.85rem;\n  font-weight: 600;\n  color: var(--muted);\n  background: #fff;\n  border-radius: 4px;\n  position: relative;\n}\n\n.attachment-cell.default {\n  border-color: var(--accent);\n  background: #ecfdf5;\n  color: var(--accent);\n}\n\n.attachment-cell .cell-pos {\n  position: absolute;\n  top: 2px;\n  left: 4px;\n  font-size: 0.65rem;\n  opacity: 0.7;\n}\n\n\/* Baseline diagram *\/\n.baseline-diagram {\n  position: relative;\n  height: 120px;\n  margin: 1rem auto;\n  max-width: 500px;\n  border-left: 2px solid var(--ink);\n  border-bottom: 2px solid var(--ink);\n}\n\n.baseline-line {\n  position: absolute;\n  left: 0;\n  right: 0;\n  border-top: 2px dashed var(--accent);\n}\n\n.baseline-label {\n  position: absolute;\n  font-size: 0.8rem;\n  color: var(--muted);\n}\n<\/style>\n<\/head>\n<body>\n\n<!-- Language Switcher -->\n<div class=\"lang-bar\">\n  <button id=\"btn-zh\" class=\"active\" onclick=\"switchLanguage('zh')\">\n    <span data-lang=\"zh\">\u4e2d\u6587<\/span><span data-lang=\"en\">Chinese<\/span>\n  <\/button>\n  <button id=\"btn-en\" onclick=\"switchLanguage('en')\">\n    <span data-lang=\"zh\">English<\/span><span data-lang=\"en\">English<\/span>\n  <\/button>\n<\/div>\n\n<div class=\"container\">\n\n<!-- Cover -->\n<div class=\"cover\">\n  <h1><span data-lang=\"zh\">DXF TEXT &amp; MTEXT \u5b9e\u4f53\u5b8c\u5168\u53c2\u8003<\/span><span data-lang=\"en\">DXF TEXT &amp; MTEXT Entity Complete Reference<\/span><\/h1>\n  <div class=\"subtitle\">DXF Text Entities Deep Dive<\/div>\n  <div class=\"desc\"><span data-lang=\"zh\">\u6df1\u5165\u89e3\u6790 DXF \u6587\u4ef6\u4e2d TEXT\uff08\u5355\u884c\u6587\u5b57\uff09\u4e0e MTEXT\uff08\u591a\u884c\u6587\u5b57\uff09\u5b9e\u4f53\u7684\u7ec4\u7801\u5b9a\u4e49\u3001\u5bf9\u9f50\u673a\u5236\u3001\u57fa\u7ebf\u6982\u5ff5\u53ca\u7f16\u7a0b\u63a5\u53e3<\/span><span data-lang=\"en\">Deep dive into TEXT (single-line) and MTEXT (multiline) entity group codes, alignment mechanisms, baseline concepts, and programming interfaces<\/span><\/div>\n<\/div>\n\n<!-- Table of Contents -->\n<nav class=\"toc\">\n  <h2><span data-lang=\"zh\">\u76ee\u5f55<\/span><span data-lang=\"en\">Table of Contents<\/span><\/h2>\n  <ol>\n    <li><a href=\"#baseline\"><span data-lang=\"zh\">\u4ec0\u4e48\u662f\u57fa\u7ebf\uff08Baseline\uff09<\/span><span data-lang=\"en\">What is the Baseline<\/span><\/a><\/li>\n    <li><a href=\"#diff\"><span data-lang=\"zh\">TEXT \u4e0e MTEXT \u6838\u5fc3\u533a\u522b<\/span><span data-lang=\"en\">TEXT vs MTEXT Core Differences<\/span><\/a><\/li>\n    <li><a href=\"#text-entity\"><span data-lang=\"zh\">TEXT \u5b9e\u4f53\u8be6\u89e3<\/span><span data-lang=\"en\">TEXT Entity in Detail<\/span><\/a><\/li>\n    <li><a href=\"#mtext-entity\"><span data-lang=\"zh\">MTEXT \u5b9e\u4f53\u8be6\u89e3<\/span><span data-lang=\"en\">MTEXT Entity in Detail<\/span><\/a><\/li>\n    <li><a href=\"#alignment\"><span data-lang=\"zh\">\u5bf9\u9f50\u673a\u5236\u5bf9\u6bd4<\/span><span data-lang=\"en\">Alignment Mechanism Comparison<\/span><\/a><\/li>\n    <li><a href=\"#bbox\"><span data-lang=\"zh\">\u5982\u4f55\u7406\u89e3 BBox\uff08\u8fb9\u754c\u6846\uff09<\/span><span data-lang=\"en\">Understanding BBox (Bounding Box)<\/span><\/a><\/li>\n    <li><a href=\"#size-methods\"><span data-lang=\"zh\">text_size \u4e0e mtext_size \u65b9\u6cd5<\/span><span data-lang=\"en\">text_size and mtext_size Methods<\/span><\/a><\/li>\n    <li><a href=\"#common-errors\"><span data-lang=\"zh\">\u5e38\u89c1\u9519\u8bef\u4e0e\u6ce8\u610f\u4e8b\u9879<\/span><span data-lang=\"en\">Common Errors &amp; Pitfalls<\/span><\/a><\/li>\n  <\/ol>\n<\/nav>\n\n<!-- Section 1: What is Baseline -->\n<section id=\"baseline\">\n<div class=\"section-icon\">\ud83d\udccf<\/div>\n<h2><span data-lang=\"zh\">\u4ec0\u4e48\u662f\u57fa\u7ebf\uff08Baseline\uff09<\/span><span data-lang=\"en\">What is the Baseline<\/span><\/h2>\n\n<p><span data-lang=\"zh\">\u5728\u6392\u7248\u5b66\u548c CAD \u7ed8\u56fe\u4e2d\uff0c<strong>\u57fa\u7ebf\uff08Baseline\uff09<\/strong>\u662f\u6587\u5b57\u5b57\u7b26\u6240\u5750\u843d\u7684\u4e00\u6761\u5047\u60f3\u6c34\u5e73\u7ebf\u3002\u5bf9\u4e8e\u62c9\u4e01\u5b57\u6bcd\uff08\u5982 a, b, c\uff09\uff0c\u5b57\u7b26\u7684\u4e3b\u4f53\u90e8\u5206\u5750\u843d\u5728\u57fa\u7ebf\u4e0a\uff0c\u800c\u4e0b\u4f38\u90e8\u5206\uff08\u5982 g, p, y \u7684\u5c3e\u90e8\uff09\u5219\u4f1a\u5ef6\u4f38\u5230\u57fa\u7ebf\u4e0b\u65b9\u3002<\/span><span data-lang=\"en\">In typography and CAD drawing, the <strong>baseline<\/strong> is an imaginary horizontal line on which text characters sit. For Latin letters (a, b, c), the main body rests on the baseline, while descenders (like g, p, y) extend below it.<\/span><\/p>\n\n<div class=\"diagram-area\">\n  <div class=\"diagram-title\"><span data-lang=\"zh\">\u6587\u5b57\u57fa\u7ebf\u793a\u610f\u56fe<\/span><span data-lang=\"en\">Text Baseline Diagram<\/span><\/div>\n  <svg viewBox=\"0 0 500 140\" style=\"max-width:500px;width:100%;height:auto;\">\n    <!-- Ascent line -->\n    <line x1=\"30\" y1=\"25\" x2=\"470\" y2=\"25\" stroke=\"#c0d8cc\" stroke-dasharray=\"4,4\" stroke-width=\"1\"\/>\n    <text x=\"10\" y=\"28\" font-size=\"11\" fill=\"#5a7a6e\" text-anchor=\"end\">Ascent<\/text>\n\n    <!-- X-height line -->\n    <line x1=\"30\" y1=\"65\" x2=\"470\" y2=\"65\" stroke=\"#c0d8cc\" stroke-dasharray=\"4,4\" stroke-width=\"1\"\/>\n    <text x=\"10\" y=\"68\" font-size=\"11\" fill=\"#5a7a6e\" text-anchor=\"end\">X-height<\/text>\n\n    <!-- Baseline -->\n    <line x1=\"30\" y1=\"95\" x2=\"470\" y2=\"95\" stroke=\"#059669\" stroke-width=\"2\"\/>\n    <text x=\"10\" y=\"100\" font-size=\"11\" fill=\"#059669\" font-weight=\"bold\" text-anchor=\"end\">Baseline<\/text>\n\n    <!-- Descent line -->\n    <line x1=\"30\" y1=\"115\" x2=\"470\" y2=\"115\" stroke=\"#c0d8cc\" stroke-dasharray=\"4,4\" stroke-width=\"1\"\/>\n    <text x=\"10\" y=\"118\" font-size=\"11\" fill=\"#5a7a6e\" text-anchor=\"end\">Descent<\/text>\n\n    <!-- Sample text -->\n    <text x=\"50\" y=\"95\" font-family=\"serif\" font-size=\"60\" fill=\"#1a2e23\">AbgXp<\/text>\n\n    <!-- Dimension arrows for height -->\n    <line x1=\"280\" y1=\"25\" x2=\"280\" y2=\"95\" stroke=\"#0d9488\" stroke-width=\"1\" marker-end=\"url(#arrowup)\" marker-start=\"url(#arrowdown)\"\/>\n    <text x=\"285\" y=\"62\" font-size=\"11\" fill=\"#0d9488\" font-weight=\"bold\">Text Height<\/text>\n\n    <!-- Arrow markers -->\n    <defs>\n      <marker id=\"arrowup\" markerWidth=\"6\" markerHeight=\"6\" refX=\"3\" refY=\"6\" orient=\"auto\">\n        <path d=\"M0,6 L3,0 L6,6\" fill=\"#0d9488\"\/>\n      <\/marker>\n      <marker id=\"arrowdown\" markerWidth=\"6\" markerHeight=\"6\" refX=\"3\" refY=\"0\" orient=\"auto\">\n        <path d=\"M0,0 L3,6 L6,0\" fill=\"#0d9488\"\/>\n      <\/marker>\n    <\/defs>\n  <\/svg>\n<\/div>\n\n<p><span data-lang=\"zh\">\u5728 DXF \u7684 <code>TEXT<\/code> \u5b9e\u4f53\u4e2d\uff0c\u9ed8\u8ba4\u7684\u63d2\u5165\u70b9\uff08\u7ec4\u7801 10\/20\/30\uff09\u5c31\u4f4d\u4e8e\u6587\u5b57\u7684<strong>\u5de6\u7aef\u57fa\u7ebf\u5904<\/strong>\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5f53\u4f60\u8f93\u5165\u4e00\u4e2a TEXT \u5b9e\u4f53\u800c\u4e0d\u6307\u5b9a\u4efb\u4f55\u5bf9\u9f50\u65b9\u5f0f\u65f6\uff0c\u6587\u5b57\u5c06\u4ece\u63d2\u5165\u70b9\u5f00\u59cb\u5411\u53f3\u4fa7\u5ef6\u4f38\uff0c\u5b57\u7b26\u5e95\u90e8\u5750\u843d\u5728\u57fa\u7ebf\u4e0a\u3002\u8fd9\u4e0e <code>MTEXT<\/code> \u4e0d\u540c\uff1aMTEXT \u9ed8\u8ba4\u7684\u63d2\u5165\u70b9\u4f4d\u4e8e\u6587\u5b57\u7684<strong>\u5de6\u4e0a\u89d2<\/strong>\u3002<\/span><span data-lang=\"en\">In DXF <code>TEXT<\/code> entities, the default insertion point (group codes 10\/20\/30) is at the <strong>left end of the baseline<\/strong>. When you create a TEXT entity without specifying alignment, text extends to the right from the insertion point with characters sitting on the baseline. This differs from <code>MTEXT<\/code>, whose default insertion point is at the <strong>top-left corner<\/strong> of the text.<\/span><\/p>\n\n<div class=\"tip-box\">\n<strong><span data-lang=\"zh\">\u8bb0\u5fc6\u8981\u70b9<\/span><span data-lang=\"en\">Key Takeaway<\/span><\/strong><br\/>\n<span data-lang=\"zh\">TEXT \u9ed8\u8ba4\u63d2\u5165\u70b9 = \u5de6\u4e0b\u89d2\u57fa\u7ebf\u5904\uff08\u8fd1\u4f3c\u5de6\u4e0b\u89d2\uff0c\u4f46\u56e0\u57fa\u7ebf\u975e\u6700\u5e95\u90e8\uff0c\u4e25\u683c\u8bf4\u662f\u5de6\u7aef\u57fa\u7ebf\uff09\u3002<br\/>MTEXT \u9ed8\u8ba4\u63d2\u5165\u70b9 = \u5de6\u4e0a\u89d2\u3002<\/span>\n<span data-lang=\"en\">TEXT default insertion point = left end of baseline (approximately lower-left, but strictly speaking left end of baseline since baseline is not the very bottom).<br\/>MTEXT default insertion point = top-left corner.<\/span>\n<\/div>\n<\/section>\n\n<!-- Section 2: TEXT vs MTEXT Differences -->\n<section id=\"diff\">\n<div class=\"section-icon\">\u2696\ufe0f<\/div>\n<h2><span data-lang=\"zh\">TEXT \u4e0e MTEXT \u6838\u5fc3\u533a\u522b<\/span><span data-lang=\"en\">TEXT vs MTEXT Core Differences<\/span><\/h2>\n\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u7279\u6027<\/span><span data-lang=\"en\">Feature<\/span><\/th>\n<th><span data-lang=\"zh\">TEXT\uff08\u5355\u884c\u6587\u5b57\uff09<\/span><span data-lang=\"en\">TEXT (Single-line)<\/span><\/th>\n<th><span data-lang=\"zh\">MTEXT\uff08\u591a\u884c\u6587\u5b57\uff09<\/span><span data-lang=\"en\">MTEXT (Multiline)<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span data-lang=\"zh\">\u6587\u5b57\u5185\u5bb9<\/span><span data-lang=\"en\">Content<\/span><\/td>\n<td><span data-lang=\"zh\">\u5355\u884c\u7eaf\u6587\u672c\uff0c\u65e0\u683c\u5f0f\u63a7\u5236<\/span><span data-lang=\"en\">Single line of plain text, no formatting<\/span><\/td>\n<td><span data-lang=\"zh\">\u591a\u884c\u6587\u672c\uff0c\u652f\u6301\u5bcc\u683c\u5f0f\uff08\u5b57\u4f53\u3001\u989c\u8272\u3001\u9ad8\u5ea6\u3001\u5806\u53e0\u7b49\uff09<\/span><span data-lang=\"en\">Multiline text with rich formatting (font, color, height, stacking, etc.)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u6362\u884c\u652f\u6301<\/span><span data-lang=\"en\">Line Breaks<\/span><\/td>\n<td><span data-lang=\"zh\">\u4e0d\u652f\u6301\u81ea\u52a8\u6362\u884c\uff0c\u9700\u624b\u52a8\u63d2\u5165\u591a\u4e2a TEXT<\/span><span data-lang=\"en\">No automatic wrapping; multiple TEXT entities needed<\/span><\/td>\n<td><span data-lang=\"zh\">\u652f\u6301\u81ea\u52a8\u6362\u884c\u548c\u6bb5\u843d<\/span><span data-lang=\"en\">Supports automatic wrapping and paragraphs<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u9ed8\u8ba4\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Default Insertion Point<\/span><\/td>\n<td><span data-lang=\"zh\">\u5de6\u7aef\u57fa\u7ebf\u5904\uff08\u5de6\u4e0b\u8fd1\u4f3c\uff09<\/span><span data-lang=\"en\">Left end of baseline (approx. lower-left)<\/span><\/td>\n<td><span data-lang=\"zh\">\u5de6\u4e0a\u89d2<\/span><span data-lang=\"en\">Top-left corner<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u5bf9\u9f50\u63a7\u5236<\/span><span data-lang=\"en\">Alignment Control<\/span><\/td>\n<td><span data-lang=\"zh\"><code>halign<\/code> (72) + <code>valign<\/code> (73) \u4e24\u4e2a\u5b57\u6bb5<\/span><span data-lang=\"en\"><code>halign<\/code> (72) + <code>valign<\/code> (73) two fields<\/span><\/td>\n<td><span data-lang=\"zh\"><code>attachment_point<\/code> (71) \u5355\u4e00\u5b57\u6bb5<\/span><span data-lang=\"en\"><code>attachment_point<\/code> (71) single field<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u6587\u5b57\u9ad8\u5ea6<\/span><span data-lang=\"en\">Text Height<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 40\uff0c\u7edf\u4e00\u9ad8\u5ea6<\/span><span data-lang=\"en\">Group code 40, uniform height<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 40 \u4e3a\u6807\u79f0\u9ad8\u5ea6\uff0c\u6bcf\u884c\u53ef\u4e0d\u540c<\/span><span data-lang=\"en\">Group code 40 is nominal height; each line may differ<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u5bbd\u5ea6\u56e0\u5b50<\/span><span data-lang=\"en\">Width Factor<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 41<\/span><span data-lang=\"en\">Group code 41<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 41 \u4e3a\u53c2\u8003\u77e9\u5f62\u5bbd\u5ea6<\/span><span data-lang=\"en\">Group code 41 is reference rectangle width<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u65cb\u8f6c\u89d2\u5ea6<\/span><span data-lang=\"en\">Rotation<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 50<\/span><span data-lang=\"en\">Group code 50<\/span><\/td>\n<td><span data-lang=\"zh\">\u7ec4\u7801 50<\/span><span data-lang=\"en\">Group code 50<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u9002\u7528\u573a\u666f<\/span><span data-lang=\"en\">Use Case<\/span><\/td>\n<td><span data-lang=\"zh\">\u7b80\u5355\u6807\u7b7e\u3001\u6807\u6ce8\u6587\u5b57\u3001\u5c5e\u6027\u503c<\/span><span data-lang=\"en\">Simple labels, dimension text, attribute values<\/span><\/td>\n<td><span data-lang=\"zh\">\u6bb5\u843d\u8bf4\u660e\u3001\u6280\u672f\u6ce8\u91ca\u3001\u591a\u884c\u6807\u6ce8<\/span><span data-lang=\"en\">Paragraph descriptions, technical notes, multiline annotations<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"info-box\">\n<strong><span data-lang=\"zh\">\u5b9e\u4f53\u7c7b\u578b\u6807\u8bc6<\/span><span data-lang=\"en\">Entity Type Identifiers<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u5728 DXF \u6587\u4ef6\u4e2d\uff0c\u7ec4\u7801 0 \u7684\u503c\u533a\u5206\u4e24\u79cd\u5b9e\u4f53\uff1a<code>TEXT<\/code> \u8868\u793a\u5355\u884c\u6587\u5b57\uff0c<code>MTEXT<\/code> \u8868\u793a\u591a\u884c\u6587\u5b57\u3002\u4e24\u8005\u4e0d\u80fd\u6df7\u7528\uff0c\u5404\u81ea\u62e5\u6709\u72ec\u7acb\u7684\u7ec4\u7801\u5b9a\u4e49\u3002<\/span>\n<span data-lang=\"en\">In DXF files, group code 0 distinguishes the two: <code>TEXT<\/code> for single-line text, <code>MTEXT<\/code> for multiline text. They are not interchangeable and each has its own group code definitions.<\/span>\n<\/div>\n<\/section>\n\n<!-- Section 3: TEXT Entity -->\n<section id=\"text-entity\">\n<div class=\"section-icon\">\ud83d\udcdd<\/div>\n<h2><span data-lang=\"zh\">TEXT \u5b9e\u4f53\u8be6\u89e3<\/span><span data-lang=\"en\">TEXT Entity in Detail<\/span><\/h2>\n\n<p><span data-lang=\"zh\"><code>TEXT<\/code> \u662f DXF \u4e2d\u6700\u57fa\u672c\u7684\u6587\u5b57\u5b9e\u4f53\uff0c\u7528\u4e8e\u8868\u793a\u5355\u884c\u6587\u5b57\u3002\u5b83\u7684\u63d2\u5165\u70b9\u3001\u9ad8\u5ea6\u3001\u65cb\u8f6c\u89d2\u5ea6\u548c\u5bf9\u9f50\u65b9\u5f0f\u90fd\u7531\u72ec\u7acb\u7684\u7ec4\u7801\u63a7\u5236\u3002<\/span><span data-lang=\"en\"><code>TEXT<\/code> is the most basic text entity in DXF, representing a single line of text. Its insertion point, height, rotation angle, and alignment are controlled by independent group codes.<\/span><\/p>\n\n<h3><span data-lang=\"zh\">TEXT \u4e13\u5c5e\u7ec4\u7801<\/span><span data-lang=\"en\">TEXT-Specific Group Codes<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u7ec4\u7801<\/span><span data-lang=\"en\">Code<\/span><\/th>\n<th><span data-lang=\"zh\">\u5b57\u6bb5\u540d<\/span><span data-lang=\"en\">Field Name<\/span><\/th>\n<th><span data-lang=\"zh\">\u4e2d\u6587\u8bf4\u660e<\/span><span data-lang=\"en\">Description<\/span><\/th>\n<th><span data-lang=\"zh\">\u7c7b\u578b<\/span><span data-lang=\"en\">Type<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><span class=\"gc\">1<\/span><\/td><td>Text String<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u5185\u5bb9\u5b57\u7b26\u4e32<\/span><span data-lang=\"en\">The text string itself<\/span><\/td><td><span class=\"type-badge type-str\">String<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">10<\/span><\/td><td>Insertion Point X<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 X \u5750\u6807\uff08\u9ed8\u8ba4\u5728\u5de6\u7aef\u57fa\u7ebf\uff09<\/span><span data-lang=\"en\">Insertion point X (default at left baseline)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">20<\/span><\/td><td>Insertion Point Y<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 Y \u5750\u6807<\/span><span data-lang=\"en\">Insertion point Y<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">30<\/span><\/td><td>Insertion Point Z<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 Z \u5750\u6807\uff08\u53ef\u7701\u7565\uff0c\u9ed8\u8ba4 0\uff09<\/span><span data-lang=\"en\">Insertion point Z (optional, default 0)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">40<\/span><\/td><td>Text Height<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u9ad8\u5ea6\uff08\u6cbf\u57fa\u7ebf\u5230 ascent \u7684\u8ddd\u79bb\uff09<\/span><span data-lang=\"en\">Text height (baseline to ascent distance)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">41<\/span><\/td><td>Relative X Scale Factor<\/td><td><span data-lang=\"zh\">X \u65b9\u5411\u5bbd\u5ea6\u6bd4\u4f8b\u56e0\u5b50\uff08\u9ed8\u8ba4 1.0\uff09<\/span><span data-lang=\"en\">X scale factor (default 1.0)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">50<\/span><\/td><td>Rotation Angle<\/td><td><span data-lang=\"zh\">\u65cb\u8f6c\u89d2\u5ea6\uff08\u5ea6\uff0c\u7ed5\u63d2\u5165\u70b9\u9006\u65f6\u9488\uff09<\/span><span data-lang=\"en\">Rotation angle in degrees (CCW around insert point)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">51<\/span><\/td><td>Oblique Angle<\/td><td><span data-lang=\"zh\">\u503e\u659c\u89d2\u5ea6\uff08\u5ea6\uff0c\u7528\u4e8e\u659c\u4f53\u5b57\uff09<\/span><span data-lang=\"en\">Oblique angle in degrees (for italic effect)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">7<\/span><\/td><td>Text Style Name<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6837\u5f0f\u540d\u79f0\uff08\u5982 &#8220;Standard&#8221;\uff09<\/span><span data-lang=\"en\">Text style name (e.g. &#8220;Standard&#8221;)<\/span><\/td><td><span class=\"type-badge type-str\">String<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">71<\/span><\/td><td>Text Generation Flags<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u751f\u6210\u6807\u5fd7\uff082=\u5012\u7f6e, 4=\u53cd\u5411\uff09<\/span><span data-lang=\"en\">Text generation flags (2=upside-down, 4=backwards)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">72<\/span><\/td><td>Horizontal Alignment<\/td><td><span data-lang=\"zh\">\u6c34\u5e73\u5bf9\u9f50\u65b9\u5f0f\uff08halign\uff09<\/span><span data-lang=\"en\">Horizontal alignment (halign)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">73<\/span><\/td><td>Vertical Alignment<\/td><td><span data-lang=\"zh\">\u5782\u76f4\u5bf9\u9f50\u65b9\u5f0f\uff08valign\uff09<\/span><span data-lang=\"en\">Vertical alignment (valign)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">11<\/span><\/td><td>Alignment Point X<\/td><td><span data-lang=\"zh\">\u5bf9\u9f50\u70b9 X\uff08\u5f53 halign\/valign \u975e\u9ed8\u8ba4\u65f6\u6709\u6548\uff09<\/span><span data-lang=\"en\">Alignment point X (used when halign\/valign non-default)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">21<\/span><\/td><td>Alignment Point Y<\/td><td><span data-lang=\"zh\">\u5bf9\u9f50\u70b9 Y<\/span><span data-lang=\"en\">Alignment point Y<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">31<\/span><\/td><td>Alignment Point Z<\/td><td><span data-lang=\"zh\">\u5bf9\u9f50\u70b9 Z<\/span><span data-lang=\"en\">Alignment point Z<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">210<\/span><\/td><td>Extrusion X<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 X\uff08\u5b9a\u4e49\u6587\u5b57\u6240\u5728\u5e73\u9762\uff09<\/span><span data-lang=\"en\">Extrusion direction X (defines text plane)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">220<\/span><\/td><td>Extrusion Y<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 Y<\/span><span data-lang=\"en\">Extrusion direction Y<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">230<\/span><\/td><td>Extrusion Z<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 Z\uff08\u9ed8\u8ba4 0,0,1 \u5373 XY \u5e73\u9762\uff09<\/span><span data-lang=\"en\">Extrusion direction Z (default 0,0,1 = XY plane)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h3><span data-lang=\"zh\">TEXT \u6c34\u5e73\u5bf9\u9f50\uff08halign\uff0c\u7ec4\u7801 72\uff09<\/span><span data-lang=\"en\">TEXT Horizontal Alignment (halign, code 72)<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u53d6\u503c<\/span><span data-lang=\"en\">Value<\/span><\/th>\n<th><span data-lang=\"zh\">\u4e2d\u6587\u540d\u79f0<\/span><span data-lang=\"en\">Name<\/span><\/th>\n<th><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u7f6e\u8bf4\u660e<\/span><span data-lang=\"en\">Insertion Point Description<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><span class=\"gc\">0<\/span><\/td><td><span data-lang=\"zh\">\u5de6\u5bf9\u9f50\uff08\u9ed8\u8ba4\uff09<\/span><span data-lang=\"en\">Left (default)<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u5de6\u7aef\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Left end of text at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">1<\/span><\/td><td><span data-lang=\"zh\">\u5c45\u4e2d\u5bf9\u9f50<\/span><span data-lang=\"en\">Center<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6c34\u5e73\u4e2d\u5fc3\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Horizontal center of text at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">2<\/span><\/td><td><span data-lang=\"zh\">\u53f3\u5bf9\u9f50<\/span><span data-lang=\"en\">Right<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u53f3\u7aef\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Right end of text at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">3<\/span><\/td><td><span data-lang=\"zh\">\u5bf9\u9f50\uff08Aligned\uff09<\/span><span data-lang=\"en\">Aligned<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u4e24\u7aef\u5206\u522b\u5bf9\u9f50\u5230\u4e24\u4e2a\u70b9\uff0c\u9ad8\u5ea6\u81ea\u52a8\u8c03\u6574<\/span><span data-lang=\"en\">Text stretched between two points, height auto-adjusted<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">4<\/span><\/td><td><span data-lang=\"zh\">\u5e03\u6ee1\uff08Fit\uff09<\/span><span data-lang=\"en\">Fit<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u4e24\u7aef\u5206\u522b\u5bf9\u9f50\u5230\u4e24\u4e2a\u70b9\uff0c\u9ad8\u5ea6\u4e0d\u53d8<\/span><span data-lang=\"en\">Text fitted between two points, height fixed<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">5<\/span><\/td><td><span data-lang=\"zh\">\u57fa\u7ebf\u5c45\u4e2d\u5bf9\u9f50<\/span><span data-lang=\"en\">Baseline Center<\/span><\/td><td><span data-lang=\"zh\">\u57fa\u7ebf\u4e2d\u70b9\u4f4d\u4e8e\u63d2\u5165\u70b9\uff08\u4e0e 1 \u7c7b\u4f3c\u4f46\u5b9a\u4f4d\u5728\u57fa\u7ebf\uff09<\/span><span data-lang=\"en\">Baseline midpoint at insertion point<\/span><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h3><span data-lang=\"zh\">TEXT \u5782\u76f4\u5bf9\u9f50\uff08valign\uff0c\u7ec4\u7801 73\uff09<\/span><span data-lang=\"en\">TEXT Vertical Alignment (valign, code 73)<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u53d6\u503c<\/span><span data-lang=\"en\">Value<\/span><\/th>\n<th><span data-lang=\"zh\">\u4e2d\u6587\u540d\u79f0<\/span><span data-lang=\"en\">Name<\/span><\/th>\n<th><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u7f6e\u8bf4\u660e<\/span><span data-lang=\"en\">Insertion Point Description<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><span class=\"gc\">0<\/span><\/td><td><span data-lang=\"zh\">\u57fa\u7ebf\u5bf9\u9f50\uff08\u9ed8\u8ba4\uff09<\/span><span data-lang=\"en\">Baseline (default)<\/span><\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u4e8e\u6587\u5b57\u57fa\u7ebf<\/span><span data-lang=\"en\">Insertion point on text baseline<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">1<\/span><\/td><td><span data-lang=\"zh\">\u5e95\u90e8\u5bf9\u9f50<\/span><span data-lang=\"en\">Bottom<\/span><\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u4e8e\u6587\u5b57\u6700\u5e95\u90e8\uff08\u542b\u4e0b\u4f38\u90e8\uff09<\/span><span data-lang=\"en\">Insertion point at text bottom (including descenders)<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">2<\/span><\/td><td><span data-lang=\"zh\">\u5c45\u4e2d\u5bf9\u9f50<\/span><span data-lang=\"en\">Middle<\/span><\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u4e8e\u6587\u5b57\u5782\u76f4\u4e2d\u5fc3<\/span><span data-lang=\"en\">Insertion point at vertical center<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">3<\/span><\/td><td><span data-lang=\"zh\">\u9876\u90e8\u5bf9\u9f50<\/span><span data-lang=\"en\">Top<\/span><\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9\u4f4d\u4e8e\u6587\u5b57\u6700\u9876\u90e8<\/span><span data-lang=\"en\">Insertion point at text top<\/span><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"tip-box\">\n<strong><span data-lang=\"zh\">\u5bf9\u9f50\u70b9\uff08\u7ec4\u7801 11\/21\/31\uff09<\/span><span data-lang=\"en\">Alignment Point (codes 11\/21\/31)<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u5f53 halign \u6216 valign \u4e0d\u4e3a 0\uff08\u9ed8\u8ba4\u503c\uff09\u65f6\uff0c\u7ec4\u7801 11\/21\/31 \u5b9a\u4e49\u7684\u6587\u5b57\u5bf9\u9f50\u70b9\u751f\u6548\uff0c\u800c\u7ec4\u7801 10\/20\/30 \u7684\u63d2\u5165\u70b9\u4ec5\u7528\u4e8e\u5b9a\u4f4d\u3002\u82e5 halign=0 \u4e14 valign=0\uff0c\u5219\u5bf9\u9f50\u70b9\u4e0e\u63d2\u5165\u70b9\u91cd\u5408\u3002<\/span>\n<span data-lang=\"en\">When halign or valign is non-zero, the alignment point (codes 11\/21\/31) takes effect, while codes 10\/20\/30 serve only for positioning. If both are 0, the alignment point coincides with the insertion point.<\/span>\n<\/div>\n<\/section>\n\n<!-- Section 4: MTEXT Entity -->\n<section id=\"mtext-entity\">\n<div class=\"section-icon\">\ud83d\udcc4<\/div>\n<h2><span data-lang=\"zh\">MTEXT \u5b9e\u4f53\u8be6\u89e3<\/span><span data-lang=\"en\">MTEXT Entity in Detail<\/span><\/h2>\n\n<p><span data-lang=\"zh\"><code>MTEXT<\/code>\uff08\u591a\u884c\u6587\u5b57\uff09\u662f\u529f\u80fd\u66f4\u5f3a\u5927\u7684\u6587\u5b57\u5b9e\u4f53\uff0c\u652f\u6301\u591a\u884c\u663e\u793a\u3001\u5185\u5d4c\u683c\u5f0f\u4ee3\u7801\u3001\u6bb5\u843d\u8bbe\u7f6e\u548c\u5206\u680f\u3002\u5b83\u7684\u5bf9\u9f50\u65b9\u5f0f\u7531\u5355\u4e00\u7684 <code>attachment_point<\/code> \u5b57\u6bb5\u63a7\u5236\u3002<\/span><span data-lang=\"en\"><code>MTEXT<\/code> (multiline text) is a more powerful entity supporting multiple lines, inline format codes, paragraph settings, and columns. Its alignment is controlled by a single <code>attachment_point<\/code> field.<\/span><\/p>\n\n<h3><span data-lang=\"zh\">MTEXT \u4e13\u5c5e\u7ec4\u7801<\/span><span data-lang=\"en\">MTEXT-Specific Group Codes<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u7ec4\u7801<\/span><span data-lang=\"en\">Code<\/span><\/th>\n<th><span data-lang=\"zh\">\u5b57\u6bb5\u540d<\/span><span data-lang=\"en\">Field Name<\/span><\/th>\n<th><span data-lang=\"zh\">\u4e2d\u6587\u8bf4\u660e<\/span><span data-lang=\"en\">Description<\/span><\/th>\n<th><span data-lang=\"zh\">\u7c7b\u578b<\/span><span data-lang=\"en\">Type<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><span class=\"gc\">1<\/span><\/td><td>Text Content<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u5185\u5bb9\uff08\u542b\u683c\u5f0f\u4ee3\u7801\uff0c\u5982 \\Hxxx; \u63a7\u5236\u9ad8\u5ea6\uff09<\/span><span data-lang=\"en\">Text content (with format codes like \\Hxxx; for height)<\/span><\/td><td><span class=\"type-badge type-str\">String<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">3<\/span><\/td><td>Additional Text<\/td><td><span data-lang=\"zh\">\u9644\u52a0\u6587\u5b57\uff08\u5185\u5bb9\u8d85\u957f\u65f6\u7eed\u63a5\uff0c\u53ef\u591a\u4e2a\u7ec4\u7801 3\uff09<\/span><span data-lang=\"en\">Additional text (continuation when content is long, multiple code 3 allowed)<\/span><\/td><td><span class=\"type-badge type-str\">String<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">10<\/span><\/td><td>Insertion Point X<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 X\uff08\u9ed8\u8ba4\u5de6\u4e0a\u89d2\uff09<\/span><span data-lang=\"en\">Insertion point X (default top-left)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">20<\/span><\/td><td>Insertion Point Y<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 Y<\/span><span data-lang=\"en\">Insertion point Y<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">30<\/span><\/td><td>Insertion Point Z<\/td><td><span data-lang=\"zh\">\u63d2\u5165\u70b9 Z<\/span><span data-lang=\"en\">Insertion point Z<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">40<\/span><\/td><td>Nominal Text Height<\/td><td><span data-lang=\"zh\">\u6807\u79f0\u6587\u5b57\u9ad8\u5ea6\uff08\u9ed8\u8ba4\u884c\u9ad8\uff09<\/span><span data-lang=\"en\">Nominal text height (default line height)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">41<\/span><\/td><td>Reference Rectangle Width<\/td><td><span data-lang=\"zh\">\u53c2\u8003\u77e9\u5f62\u5bbd\u5ea6\uff08\u81ea\u52a8\u6362\u884c\u7684\u8fb9\u754c\u5bbd\u5ea6\uff0c0=\u4e0d\u6362\u884c\uff09<\/span><span data-lang=\"en\">Reference rectangle width (wrap boundary, 0=no wrapping)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">42<\/span><\/td><td>Reference Rectangle Height<\/td><td><span data-lang=\"zh\">\u53c2\u8003\u77e9\u5f62\u9ad8\u5ea6<\/span><span data-lang=\"en\">Reference rectangle height<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">43<\/span><\/td><td>Actual Rectangle Height<\/td><td><span data-lang=\"zh\">\u5b9e\u9645\u77e9\u5f62\u9ad8\u5ea6\uff08DXF \u8f93\u51fa\u65f6\u586b\u5145\uff09<\/span><span data-lang=\"en\">Actual rectangle height (filled on DXF output)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">50<\/span><\/td><td>Rotation Angle<\/td><td><span data-lang=\"zh\">\u65cb\u8f6c\u89d2\u5ea6\uff08\u5ea6\uff09<\/span><span data-lang=\"en\">Rotation angle in degrees<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">71<\/span><\/td><td>Attachment Point<\/td><td><span data-lang=\"zh\">\u9644\u7740\u70b9 \/ \u5bf9\u9f50\u65b9\u5f0f\uff081~9\uff0c\u89c1\u4e0b\u8868\uff09<\/span><span data-lang=\"en\">Attachment point \/ alignment (1-9, see table below)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">72<\/span><\/td><td>Drawing Direction<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u7ed8\u5236\u65b9\u5411\uff081=\u5de6\u5230\u53f3, 3=\u4e0a\u5230\u4e0b, 5=\u53f3\u5230\u5de6\uff09<\/span><span data-lang=\"en\">Drawing direction (1=L-R, 3=T-B, 5=R-L)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">73<\/span><\/td><td>Line Spacing Style<\/td><td><span data-lang=\"zh\">\u884c\u95f4\u8ddd\u6837\u5f0f\uff081=\u81f3\u5c11, 2=\u7cbe\u786e\uff09<\/span><span data-lang=\"en\">Line spacing style (1=at least, 2=exact)<\/span><\/td><td><span class=\"type-badge type-int\">Int16<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">44<\/span><\/td><td>Line Spacing Factor<\/td><td><span data-lang=\"zh\">\u884c\u95f4\u8ddd\u6bd4\u4f8b\u56e0\u5b50\uff08\u57fa\u4e8e\u6587\u5b57\u9ad8\u5ea6\u7684\u500d\u6570\uff09<\/span><span data-lang=\"en\">Line spacing factor (multiple of text height)<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">7<\/span><\/td><td>Text Style Name<\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6837\u5f0f\u540d\u79f0<\/span><span data-lang=\"en\">Text style name<\/span><\/td><td><span class=\"type-badge type-str\">String<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">90<\/span><\/td><td>Column Type<\/td><td><span data-lang=\"zh\">\u5206\u680f\u7c7b\u578b\uff080=\u65e0, 1=\u9759\u6001, 2=\u52a8\u6001\uff0cR2018+\uff09<\/span><span data-lang=\"en\">Column type (0=none, 1=static, 2=dynamic, R2018+)<\/span><\/td><td><span class=\"type-badge type-int\">Int32<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">210<\/span><\/td><td>Extrusion X<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 X<\/span><span data-lang=\"en\">Extrusion direction X<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">220<\/span><\/td><td>Extrusion Y<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 Y<\/span><span data-lang=\"en\">Extrusion direction Y<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">230<\/span><\/td><td>Extrusion Z<\/td><td><span data-lang=\"zh\">\u62c9\u4f38\u65b9\u5411 Z<\/span><span data-lang=\"en\">Extrusion direction Z<\/span><\/td><td><span class=\"type-badge type-float\">Double<\/span><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h3><span data-lang=\"zh\">MTEXT \u9644\u7740\u70b9\uff08attachment_point\uff0c\u7ec4\u7801 71\uff09<\/span><span data-lang=\"en\">MTEXT Attachment Point (code 71)<\/span><\/h3>\n<p><span data-lang=\"zh\">MTEXT \u7684 <code>attachment_point<\/code> \u7528\u5355\u4e2a\u6570\u503c 1~9 \u8868\u793a\u4e5d\u5bab\u683c\u4f4d\u7f6e\uff0c\u540c\u65f6\u63a7\u5236\u6c34\u5e73\u548c\u5782\u76f4\u5bf9\u9f50\uff1a<\/span><span data-lang=\"en\">MTEXT&#8217;s <code>attachment_point<\/code> uses a single value 1-9 to represent a 3&#215;3 grid position, controlling both horizontal and vertical alignment simultaneously:<\/span><\/p>\n\n<div class=\"diagram-area\">\n  <div class=\"diagram-title\"><span data-lang=\"zh\">MTEXT \u9644\u7740\u70b9\u4e5d\u5bab\u683c\uff08\u7ec4\u7801 71\uff09<\/span><span data-lang=\"en\">MTEXT Attachment Point Grid (code 71)<\/span><\/div>\n  <div class=\"attachment-grid\">\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">3<\/span><span data-lang=\"zh\">\u53f3\u4e0a<\/span><span data-lang=\"en\">TR<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">2<\/span><span data-lang=\"zh\">\u4e0a\u4e2d<\/span><span data-lang=\"en\">TC<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">1<\/span><span data-lang=\"en\">TL<\/span><span data-lang=\"zh\">\u5de6\u4e0a<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">6<\/span><span data-lang=\"zh\">\u53f3\u4e2d<\/span><span data-lang=\"en\">MR<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">5<\/span><span data-lang=\"zh\">\u6b63\u4e2d<\/span><span data-lang=\"en\">MC<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">4<\/span><span data-lang=\"zh\">\u5de6\u4e2d<\/span><span data-lang=\"en\">ML<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">9<\/span><span data-lang=\"zh\">\u53f3\u4e0b<\/span><span data-lang=\"en\">BR<\/span><\/div>\n    <div class=\"attachment-cell\"><span class=\"cell-pos\">8<\/span><span data-lang=\"zh\">\u4e0b\u4e2d<\/span><span data-lang=\"en\">BC<\/span><\/div>\n    <div class=\"attachment-cell default\"><span class=\"cell-pos\">7<\/span><span data-lang=\"zh\">\u5de6\u4e0b<\/span><span data-lang=\"en\">BL<\/span><\/div>\n  <\/div>\n  <p style=\"font-size:0.85rem;color:var(--muted);margin-top:0.5rem;\"><span data-lang=\"zh\">\u7eff\u8272\u8fb9\u6846 = \u9ed8\u8ba4\u9644\u7740\u70b9\uff08\u5de6\u4e0a\u89d2\u5728 DXF \u4e2d\u8bb0\u4e3a 1\uff0c\u4f46\u5728\u4e0a\u56fe\u4e2d\u4e3a\u4e86\u7b26\u5408\u89c6\u89c9\u4e60\u60ef\u5c06 1 \u653e\u5728\u5de6\u4e0a\uff1b\u6ce8\u610f\uff1a\u6807\u51c6 DXF \u6587\u6863\u4e2d 1=\u5de6\u4e0a, 2=\u4e0a\u4e2d, 3=\u53f3\u4e0a, 4=\u5de6\u4e2d, 5=\u6b63\u4e2d, 6=\u53f3\u4e2d, 7=\u5de6\u4e0b, 8=\u4e0b\u4e2d, 9=\u53f3\u4e0b\uff09<\/span><span data-lang=\"en\">Green border = default attachment point. In standard DXF: 1=Top-Left, 2=Top-Center, 3=Top-Right, 4=Middle-Left, 5=Middle-Center, 6=Middle-Right, 7=Bottom-Left, 8=Bottom-Center, 9=Bottom-Right.<\/span><\/p>\n<\/div>\n\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u53d6\u503c<\/span><span data-lang=\"en\">Value<\/span><\/th>\n<th><span data-lang=\"zh\">\u82f1\u6587\u7f29\u5199<\/span><span data-lang=\"en\">Abbreviation<\/span><\/th>\n<th><span data-lang=\"zh\">\u4e2d\u6587\u540d\u79f0<\/span><span data-lang=\"en\">Name<\/span><\/th>\n<th><span data-lang=\"zh\">\u63d2\u5165\u70b9\u76f8\u5bf9\u4f4d\u7f6e<\/span><span data-lang=\"en\">Relative Position<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><span class=\"gc\">1<\/span><\/td><td>TL<\/td><td><span data-lang=\"zh\">\u5de6\u4e0a\u89d2\uff08\u9ed8\u8ba4\uff09<\/span><span data-lang=\"en\">Top-Left (default)<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u5de6\u4e0a\u89d2\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box top-left at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">2<\/span><\/td><td>TC<\/td><td><span data-lang=\"zh\">\u4e0a\u4e2d<\/span><span data-lang=\"en\">Top-Center<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u4e0a\u8fb9\u4e2d\u70b9\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box top-center at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">3<\/span><\/td><td>TR<\/td><td><span data-lang=\"zh\">\u53f3\u4e0a\u89d2<\/span><span data-lang=\"en\">Top-Right<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u53f3\u4e0a\u89d2\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box top-right at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">4<\/span><\/td><td>ML<\/td><td><span data-lang=\"zh\">\u5de6\u4e2d<\/span><span data-lang=\"en\">Middle-Left<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u5de6\u8fb9\u4e2d\u70b9\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box middle-left at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">5<\/span><\/td><td>MC<\/td><td><span data-lang=\"zh\">\u6b63\u4e2d\u5fc3<\/span><span data-lang=\"en\">Middle-Center<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u51e0\u4f55\u4e2d\u5fc3\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box geometric center at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">6<\/span><\/td><td>MR<\/td><td><span data-lang=\"zh\">\u53f3\u4e2d<\/span><span data-lang=\"en\">Middle-Right<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u53f3\u8fb9\u4e2d\u70b9\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box middle-right at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">7<\/span><\/td><td>BL<\/td><td><span data-lang=\"zh\">\u5de6\u4e0b\u89d2<\/span><span data-lang=\"en\">Bottom-Left<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u5de6\u4e0b\u89d2\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box bottom-left at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">8<\/span><\/td><td>BC<\/td><td><span data-lang=\"zh\">\u4e0b\u4e2d<\/span><span data-lang=\"en\">Bottom-Center<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u4e0b\u8fb9\u4e2d\u70b9\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box bottom-center at insertion point<\/span><\/td><\/tr>\n<tr><td><span class=\"gc\">9<\/span><\/td><td>BR<\/td><td><span data-lang=\"zh\">\u53f3\u4e0b\u89d2<\/span><span data-lang=\"en\">Bottom-Right<\/span><\/td><td><span data-lang=\"zh\">\u6587\u5b57\u6846\u53f3\u4e0b\u89d2\u4f4d\u4e8e\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Text box bottom-right at insertion point<\/span><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"warn-box\">\n<strong><span data-lang=\"zh\">\u91cd\u8981\u533a\u5206<\/span><span data-lang=\"en\">Important Distinction<\/span><\/strong><br\/>\n<span data-lang=\"zh\">MTEXT <strong>\u6ca1\u6709<\/strong> <code>halign<\/code> \u548c <code>valign<\/code> \u5c5e\u6027\u3002\u82e5\u4f60\u7684\u4ee3\u7801\u540c\u65f6\u904d\u5386 TEXT \u548c MTEXT\uff0c\u8bfb\u53d6 <code>entity.dxf.halign<\/code> \u65f6\u9047\u5230 MTEXT \u4f1a\u629b\u51fa AttributeError\u3002\u5fc5\u987b\u5148\u5224\u65ad\u5b9e\u4f53\u7c7b\u578b\uff1a<code>entity.dxftype() == 'TEXT'<\/code> \u65f6\u624d\u8bfb\u53d6 halign\/valign\u3002<\/span>\n<span data-lang=\"en\">MTEXT <strong>does not have<\/strong> <code>halign<\/code> and <code>valign<\/code> attributes. If your code iterates over both TEXT and MTEXT, reading <code>entity.dxf.halign<\/code> on an MTEXT will raise AttributeError. Always check entity type first: only read halign\/valign when <code>entity.dxftype() == 'TEXT'<\/code>.<\/span>\n<\/div>\n<\/section>\n\n<!-- Section 5: Alignment Comparison -->\n<section id=\"alignment\">\n<div class=\"section-icon\">\ud83c\udfaf<\/div>\n<h2><span data-lang=\"zh\">\u5bf9\u9f50\u673a\u5236\u5bf9\u6bd4\u603b\u8868<\/span><span data-lang=\"en\">Alignment Mechanism Comparison<\/span><\/h2>\n\n<h3><span data-lang=\"zh\">TEXT \u5bf9\u9f50\u7ec4\u5408\u8868<\/span><span data-lang=\"en\">TEXT Alignment Combination<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u6c34\u5e73\u5bf9\u9f50 halign<\/span><span data-lang=\"en\">halign (code 72)<\/span><\/th>\n<th><span data-lang=\"zh\">\u53d6\u503c<\/span><span data-lang=\"en\">Value<\/span><\/th>\n<th><span data-lang=\"zh\">\u5782\u76f4\u5bf9\u9f50 valign<\/span><span data-lang=\"en\">valign (code 73)<\/span><\/th>\n<th><span data-lang=\"zh\">\u53d6\u503c<\/span><span data-lang=\"en\">Value<\/span><\/th>\n<th><span data-lang=\"zh\">\u63d2\u5165\u70b9\u5b9e\u9645\u4f4d\u7f6e<\/span><span data-lang=\"en\">Insertion Point Location<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span data-lang=\"zh\">\u5de6\u5bf9\u9f50\uff08\u9ed8\u8ba4\uff09<\/span><span data-lang=\"en\">Left (default)<\/span><\/td><td><span class=\"gc\">0<\/span><\/td>\n<td><span data-lang=\"zh\">\u57fa\u7ebf\u5bf9\u9f50\uff08\u9ed8\u8ba4\uff09<\/span><span data-lang=\"en\">Baseline (default)<\/span><\/td><td><span class=\"gc\">0<\/span><\/td>\n<td><span data-lang=\"zh\">\u6587\u5b57\u5de6\u7aef\u57fa\u7ebf\u5904\uff08\u8fd1\u4f3c\u5de6\u4e0b\u89d2\uff09<\/span><span data-lang=\"en\">Left end of baseline (approx. lower-left)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u5c45\u4e2d\u5bf9\u9f50<\/span><span data-lang=\"en\">Center<\/span><\/td><td><span class=\"gc\">1<\/span><\/td>\n<td><span data-lang=\"zh\">\u5e95\u90e8\u5bf9\u9f50<\/span><span data-lang=\"en\">Bottom<\/span><\/td><td><span class=\"gc\">1<\/span><\/td>\n<td><span data-lang=\"zh\">\u6587\u5b57\u6c34\u5e73\u4e2d\u5fc3 \u00d7 \u6700\u5e95\u90e8<\/span><span data-lang=\"en\">Horizontal center \u00d7 bottom<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u53f3\u5bf9\u9f50<\/span><span data-lang=\"en\">Right<\/span><\/td><td><span class=\"gc\">2<\/span><\/td>\n<td><span data-lang=\"zh\">\u5c45\u4e2d\u5bf9\u9f50<\/span><span data-lang=\"en\">Middle<\/span><\/td><td><span class=\"gc\">2<\/span><\/td>\n<td><span data-lang=\"zh\">\u6587\u5b57\u53f3\u7aef \u00d7 \u5782\u76f4\u4e2d\u5fc3<\/span><span data-lang=\"en\">Right end \u00d7 vertical center<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u5bf9\u9f50\uff08Aligned\uff09<\/span><span data-lang=\"en\">Aligned<\/span><\/td><td><span class=\"gc\">3<\/span><\/td>\n<td><span data-lang=\"zh\">\u9876\u90e8\u5bf9\u9f50<\/span><span data-lang=\"en\">Top<\/span><\/td><td><span class=\"gc\">3<\/span><\/td>\n<td><span data-lang=\"zh\">\u4e24\u7aef\u62c9\u4f38\u81f3\u6307\u5b9a\u5bbd\u5ea6\uff0c\u9ad8\u5ea6\u81ea\u52a8<\/span><span data-lang=\"en\">Stretched to width, height auto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-lang=\"zh\">\u5e03\u6ee1\uff08Fit\uff09<\/span><span data-lang=\"en\">Fit<\/span><\/td><td><span class=\"gc\">4<\/span><\/td>\n<td>&#8211;<\/td><td>&#8211;<\/td>\n<td><span data-lang=\"zh\">\u4e24\u7aef\u5bf9\u9f50\u81f3\u6307\u5b9a\u5bbd\u5ea6\uff0c\u9ad8\u5ea6\u56fa\u5b9a<\/span><span data-lang=\"en\">Fitted to width, height fixed<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h3><span data-lang=\"zh\">\u9ed8\u8ba4\u57fa\u51c6\u70b9\u5bf9\u6bd4<\/span><span data-lang=\"en\">Default Anchor Point Comparison<\/span><\/h3>\n<div class=\"compare-grid\">\n<div class=\"compare-card\">\n<h4>TEXT<\/h4>\n<p><span data-lang=\"zh\"><strong>\u9ed8\u8ba4\u63d2\u5165\u70b9\uff1a<\/strong>\u5de6\u7aef\u57fa\u7ebf\u5904<\/span><span data-lang=\"en\"><strong>Default insertion:<\/strong> Left end of baseline<\/span><\/p>\n<p><span data-lang=\"zh\">\u6587\u5b57\u5411\u53f3\u5ef6\u4f38\uff0c\u5b57\u7b26\u5750\u843d\u5728\u57fa\u7ebf\u4e0a\u3002\u4e0b\u4f38\u90e8\uff08g, p, y\uff09\u4f1a\u5411\u4e0b\u8d85\u51fa\u63d2\u5165\u70b9\u3002<\/span><span data-lang=\"en\">Text extends to the right, characters sit on baseline. Descenders (g, p, y) extend below insertion point.<\/span><\/p>\n<p><span data-lang=\"zh\"><strong>\u5bf9\u9f50\u5b57\u6bb5\uff1a<\/strong>halign (72) + valign (73)<\/span><span data-lang=\"en\"><strong>Alignment fields:<\/strong> halign (72) + valign (73)<\/span><\/p>\n<\/div>\n<div class=\"compare-card\">\n<h4>MTEXT<\/h4>\n<p><span data-lang=\"zh\"><strong>\u9ed8\u8ba4\u63d2\u5165\u70b9\uff1a<\/strong>\u5de6\u4e0a\u89d2<\/span><span data-lang=\"en\"><strong>Default insertion:<\/strong> Top-left corner<\/span><\/p>\n<p><span data-lang=\"zh\">\u6587\u5b57\u6846\u5411\u53f3\u4e0b\u65b9\u6269\u5c55\u3002\u63d2\u5165\u70b9\u59cb\u7ec8\u4f4d\u4e8e\u6587\u5b57\u6846\u7684\u8fb9\u754c\u4e0a\uff08\u7531 attachment_point \u51b3\u5b9a\u5177\u4f53\u54ea\u4e2a\u89d2\/\u8fb9\uff09\u3002<\/span><span data-lang=\"en\">Text box expands right and down. Insertion point is always on the text box boundary (specific corner\/edge determined by attachment_point).<\/span><\/p>\n<p><span data-lang=\"zh\"><strong>\u5bf9\u9f50\u5b57\u6bb5\uff1a<\/strong>attachment_point (71)<\/span><span data-lang=\"en\"><strong>Alignment field:<\/strong> attachment_point (71)<\/span><\/p>\n<\/div>\n<\/div>\n<\/section>\n\n<!-- Section 6: BBox -->\n<section id=\"bbox\">\n<div class=\"section-icon\">\ud83d\udcd0<\/div>\n<h2><span data-lang=\"zh\">\u5982\u4f55\u7406\u89e3 BBox\uff08\u8fb9\u754c\u6846\uff09<\/span><span data-lang=\"en\">Understanding BBox (Bounding Box)<\/span><\/h2>\n\n<p><span data-lang=\"zh\">\u5728 CAD \u7f16\u7a0b\u4e2d\uff0c<strong>BBox<\/strong>\uff08Bounding Box\uff0c\u8fb9\u754c\u6846\uff09\u662f\u6307\u80fd\u591f\u5b8c\u5168\u5305\u56f4\u4e00\u4e2a\u5b9e\u4f53\u7684\u6700\u5c0f\u8f74\u5bf9\u9f50\u77e9\u5f62\u3002\u5bf9\u4e8e\u6587\u5b57\u5b9e\u4f53\uff0cBBox \u662f\u8ba1\u7b97\u6587\u5b57\u6e32\u67d3\u540e\u7684\u5b9e\u9645\u5360\u636e\u7a7a\u95f4\u6240\u5f97\u5230\u7684\u77e9\u5f62\u3002<\/span><span data-lang=\"en\">In CAD programming, <strong>BBox<\/strong> (Bounding Box) is the minimum axis-aligned rectangle that fully encloses an entity. For text entities, the BBox is calculated from the actual rendered space occupied by the text.<\/span><\/p>\n\n<h3><span data-lang=\"zh\">TEXT \u7684 BBox<\/span><span data-lang=\"en\">TEXT BBox<\/span><\/h3>\n<p><span data-lang=\"zh\">TEXT \u7684 BBox \u7531\u4ee5\u4e0b\u56e0\u7d20\u51b3\u5b9a\uff1a<\/span><span data-lang=\"en\">TEXT&#8217;s BBox is determined by:<\/span><\/p>\n<ul style=\"margin-left:1.5rem;margin-bottom:1rem;\">\n<li><span data-lang=\"zh\"><strong>\u6587\u5b57\u5185\u5bb9<\/strong>\uff1a\u5b57\u7b26\u6570\u91cf\u51b3\u5b9a\u5bbd\u5ea6<\/span><span data-lang=\"en\"><strong>Text content:<\/strong> character count determines width<\/span><\/li>\n<li><span data-lang=\"zh\"><strong>\u6587\u5b57\u9ad8\u5ea6<\/strong>\uff08\u7ec4\u7801 40\uff09\uff1a\u51b3\u5b9a\u4ece\u57fa\u7ebf\u5230 ascent \u7684\u8ddd\u79bb<\/span><span data-lang=\"en\"><strong>Text height<\/strong> (code 40): determines baseline-to-ascent distance<\/span><\/li>\n<li><span data-lang=\"zh\"><strong>\u5bbd\u5ea6\u56e0\u5b50<\/strong>\uff08\u7ec4\u7801 41\uff09\uff1a\u6c34\u5e73\u7f29\u653e\u6bd4\u4f8b<\/span><span data-lang=\"en\"><strong>Width factor<\/strong> (code 41): horizontal scale ratio<\/span><\/li>\n<li><span data-lang=\"zh\"><strong>\u503e\u659c\u89d2\u5ea6<\/strong>\uff08\u7ec4\u7801 51\uff09\uff1a\u4f7f BBox \u503e\u659c<\/span><span data-lang=\"en\"><strong>Oblique angle<\/strong> (code 51): tilts the BBox<\/span><\/li>\n<li><span data-lang=\"zh\"><strong>\u65cb\u8f6c\u89d2\u5ea6<\/strong>\uff08\u7ec4\u7801 50\uff09\uff1a\u4f7f\u6574\u4e2a BBox \u7ed5\u63d2\u5165\u70b9\u65cb\u8f6c<\/span><span data-lang=\"en\"><strong>Rotation angle<\/strong> (code 50): rotates entire BBox around insertion point<\/span><\/li>\n<li><span data-lang=\"zh\"><strong>\u6587\u5b57\u6837\u5f0f<\/strong>\uff1a\u4e0d\u540c\u5b57\u4f53\u7684\u5b57\u7b26\u5bbd\u5ea6\u4e0d\u540c<\/span><span data-lang=\"en\"><strong>Text style:<\/strong> different fonts have different character widths<\/span><\/li>\n<\/ul>\n\n<div class=\"diagram-area\">\n  <div class=\"diagram-title\"><span data-lang=\"zh\">TEXT BBox \u793a\u610f\u56fe<\/span><span data-lang=\"en\">TEXT BBox Diagram<\/span><\/div>\n  <svg viewBox=\"0 0 500 160\" style=\"max-width:500px;width:100%;height:auto;\">\n    <!-- Text -->\n    <text x=\"80\" y=\"90\" font-family=\"serif\" font-size=\"50\" fill=\"#1a2e23\" transform=\"rotate(10 80 90)\">Hello<\/text>\n\n    <!-- BBox -->\n    <rect x=\"75\" y=\"45\" width=\"160\" height=\"65\" fill=\"none\" stroke=\"#059669\" stroke-width=\"2\" stroke-dasharray=\"6,3\" transform=\"rotate(10 80 90)\"\/>\n\n    <!-- Baseline -->\n    <line x1=\"75\" y1=\"90\" x2=\"240\" y2=\"90\" stroke=\"#0d9488\" stroke-width=\"2\" transform=\"rotate(10 80 90)\"\/>\n    <text x=\"250\" y=\"95\" font-size=\"11\" fill=\"#0d9488\" font-weight=\"bold\">Baseline<\/text>\n\n    <!-- Insertion point -->\n    <circle cx=\"80\" cy=\"90\" r=\"4\" fill=\"#f97316\"\/>\n    <text x=\"50\" y=\"105\" font-size=\"11\" fill=\"#f97316\" font-weight=\"bold\">Insert<\/text>\n\n    <!-- Labels -->\n    <text x=\"320\" y=\"55\" font-size=\"11\" fill=\"#059669\" font-weight=\"bold\">BBox (min X, min Y)<\/text>\n    <text x=\"320\" y=\"70\" font-size=\"11\" fill=\"#059669\" font-weight=\"bold\">to (max X, max Y)<\/text>\n  <\/svg>\n<\/div>\n\n<h3><span data-lang=\"zh\">MTEXT \u7684 BBox<\/span><span data-lang=\"en\">MTEXT BBox<\/span><\/h3>\n<p><span data-lang=\"zh\">MTEXT \u7684 BBox \u66f4\u4e3a\u590d\u6742\uff0c\u56e0\u4e3a\uff1a<\/span><span data-lang=\"en\">MTEXT&#8217;s BBox is more complex because:<\/span><\/p>\n<ul style=\"margin-left:1.5rem;margin-bottom:1rem;\">\n<li><span data-lang=\"zh\">\u5305\u542b\u591a\u884c\u6587\u5b57\uff0c\u9ad8\u5ea6\u7531\u884c\u6570\u548c\u884c\u95f4\u8ddd\u51b3\u5b9a<\/span><span data-lang=\"en\">Contains multiple lines; height depends on line count and spacing<\/span><\/li>\n<li><span data-lang=\"zh\">\u6bcf\u884c\u53ef\u80fd\u6709\u4e0d\u540c\u683c\u5f0f\uff08\u9ad8\u5ea6\u3001\u5b57\u4f53\u3001\u989c\u8272\uff09\uff0c\u5bfc\u81f4\u5404\u884c\u9ad8\u5ea6\u4e0d\u540c<\/span><span data-lang=\"en\">Each line may have different formatting (height, font, color), causing varying line heights<\/span><\/li>\n<li><span data-lang=\"zh\">\u81ea\u52a8\u6362\u884c\u4f7f\u5bbd\u5ea6\u53d7\u9650\u4e8e\u7ec4\u7801 41\uff08\u53c2\u8003\u77e9\u5f62\u5bbd\u5ea6\uff09<\/span><span data-lang=\"en\">Automatic wrapping limits width to group code 41 (reference rectangle width)<\/span><\/li>\n<li><span data-lang=\"zh\">\u5185\u8fb9\u8ddd\u548c\u6bb5\u843d\u95f4\u8ddd\u4e5f\u4f1a\u8d21\u732e\u5230\u603b\u9ad8\u5ea6<\/span><span data-lang=\"en\">Padding and paragraph spacing also contribute to total height<\/span><\/li>\n<\/ul>\n\n<div class=\"tip-box\">\n<strong><span data-lang=\"zh\">BBox \u7684\u8ba1\u7b97\u65b9\u5f0f<\/span><span data-lang=\"en\">How BBox is Calculated<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u5728 ezdxf \u7b49\u5e93\u4e2d\uff0c<code>entity.bbox()<\/code> \u6216 <code>entity.get_bbox()<\/code> \u901a\u5e38\u9700\u8981\u6e32\u67d3\u5f15\u64ce\u652f\u6301\uff08\u5982 matplotlib \u6216\u81ea\u5b9a\u4e49\u5b57\u4f53\u6d4b\u91cf\uff09\u3002\u5b83\u5e76\u975e\u76f4\u63a5\u8bfb\u53d6 DXF \u7ec4\u7801\uff0c\u800c\u662f\u6839\u636e\u5b57\u4f53\u6587\u4ef6\u52a8\u6001\u8ba1\u7b97\u6bcf\u4e2a\u5b57\u7b26\u7684\u8f6e\u5ed3\u540e\u53d6\u5e76\u96c6\u3002\u56e0\u6b64\uff0c\u6ca1\u6709\u5b57\u4f53\u6587\u4ef6\u65f6 BBox \u8ba1\u7b97\u53ef\u80fd\u4e0d\u51c6\u786e\u3002<\/span>\n<span data-lang=\"en\">In libraries like ezdxf, <code>entity.bbox()<\/code> or <code>entity.get_bbox()<\/code> typically requires a rendering engine (like matplotlib or custom font metrics). It does not directly read DXF group codes but dynamically calculates each character&#8217;s outline from the font file and takes the union. Without the font file, BBox calculation may be inaccurate.<\/span>\n<\/div>\n\n<h3><span data-lang=\"zh\">BBox \u7684\u6570\u5b66\u8868\u8fbe<\/span><span data-lang=\"en\">BBox Mathematical Expression<\/span><\/h3>\n<pre><code># \u4f2a\u4ee3\u7801\uff1aBBox \u7ed3\u6784\nclass BBox:\n    min_x: float   # \u5305\u56f4\u76d2\u5de6\u8fb9\u754c\n    min_y: float   # \u5305\u56f4\u76d2\u4e0b\u8fb9\u754c\n    min_z: float   # \u5305\u56f4\u76d2\u524d\u8fb9\u754c\uff08\u901a\u5e38\u6587\u5b57\u5728 XY \u5e73\u9762\uff0cZ=0\uff09\n    max_x: float   # \u5305\u56f4\u76d2\u53f3\u8fb9\u754c\n    max_y: float   # \u5305\u56f4\u76d2\u4e0a\u8fb9\u754c\n    max_z: float   # \u5305\u56f4\u76d2\u540e\u8fb9\u754c\n\n    @property\n    def width(self) -> float:\n        return self.max_x - self.min_x\n\n    @property\n    def height(self) -> float:\n        return self.max_y - self.min_y\n\n    @property\n    def center(self) -> Point:\n        return Point(\n            (self.min_x + self.max_x) \/ 2,\n            (self.min_y + self.max_y) \/ 2,\n            (self.min_z + self.max_z) \/ 2\n        )\n<\/code><\/pre>\n<\/section>\n\n<!-- Section 7: text_size \/ mtext_size -->\n<section id=\"size-methods\">\n<div class=\"section-icon\">\ud83d\udccf<\/div>\n<h2><span data-lang=\"zh\">text_size \u4e0e mtext_size \u65b9\u6cd5<\/span><span data-lang=\"en\">text_size and mtext_size Methods<\/span><\/h2>\n\n<p><span data-lang=\"zh\">\u5728 CAD \u7f16\u7a0b\u5e93\uff08\u5982 ezdxf\uff09\u4e2d\uff0c<code>text_size<\/code> \u548c <code>mtext_size<\/code> \u662f\u7528\u4e8e\u8ba1\u7b97\u6587\u5b57\u5b9e\u4f53\u6e32\u67d3\u5c3a\u5bf8\u7684\u5de5\u5177\u51fd\u6570\u3002\u5b83\u4eec\u5e2e\u52a9\u5f00\u53d1\u8005\u9884\u4f30\u6587\u5b57\u5728\u56fe\u7eb8\u4e0a\u7684\u5b9e\u9645\u5360\u636e\u7a7a\u95f4\u3002<\/span><span data-lang=\"en\">In CAD programming libraries (like ezdxf), <code>text_size<\/code> and <code>mtext_size<\/code> are utility functions for calculating the rendered size of text entities. They help developers estimate the actual space text occupies on the drawing.<\/span><\/p>\n\n<h3><span data-lang=\"zh\">text_size \u65b9\u6cd5<\/span><span data-lang=\"en\">text_size Method<\/span><\/h3>\n<p><span data-lang=\"zh\"><code>text_size<\/code> \u4e13\u95e8\u7528\u4e8e\u5355\u884c\u6587\u5b57\uff08TEXT \u5b9e\u4f53\uff09\uff0c\u5176\u8ba1\u7b97\u903b\u8f91\u76f8\u5bf9\u7b80\u5355\uff1a<\/span><span data-lang=\"en\"><code>text_size<\/code> is designed for single-line text (TEXT entities) with relatively simple calculation logic:<\/span><\/p>\n\n<pre><code># ezdxf \u98ce\u683c\u7684 text_size \u8ba1\u7b97\u903b\u8f91\uff08\u793a\u610f\uff09\ndef text_size(text_entity, font_info) -> Tuple[float, float]:\n    \"\"\"\n    \u8ba1\u7b97 TEXT \u5b9e\u4f53\u7684\u6e32\u67d3\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u3002\n    \u8fd4\u56de: (width, height)\n    \"\"\"\n    text = text_entity.dxf.text          # \u7ec4\u7801 1\n    height = text_entity.dxf.height      # \u7ec4\u7801 40\n    width_factor = text_entity.dxf.width # \u7ec4\u7801 41\uff08\u9ed8\u8ba4 1.0\uff09\n    oblique = text_entity.dxf.oblique    # \u7ec4\u7801 51\uff08\u503e\u659c\u89d2\uff09\n\n    # 1. \u83b7\u53d6\u6bcf\u4e2a\u5b57\u7b26\u5728\u6307\u5b9a\u5b57\u4f53\u4e0b\u7684\u5bbd\u5ea6\n    char_widths = [font_info.get_char_width(c) for c in text]\n    base_width = sum(char_widths) * height * width_factor\n\n    # 2. \u503e\u659c\u4f1a\u589e\u52a0\u6709\u6548\u5bbd\u5ea6\n    if oblique != 0:\n        base_width += height * abs(tan(radians(oblique)))\n\n    # 3. \u9ad8\u5ea6 = \u6587\u5b57\u9ad8\u5ea6 + \u4e0b\u4f38\u90e8\uff08\u5982\u679c\u6709\uff09\n    # \u6ce8\u610f\uff1a\u4e0d\u540c\u5b57\u4f53\u7684 ascent\/descent \u6bd4\u4f8b\u4e0d\u540c\n    actual_height = height * font_info.ascent_ratio\n\n    return (base_width, actual_height)\n<\/code><\/pre>\n\n<div class=\"info-box\">\n<strong><span data-lang=\"zh\">text_size \u7684\u5173\u952e\u53c2\u6570<\/span><span data-lang=\"en\">Key Parameters of text_size<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\n&#8211; <strong>\u6587\u5b57\u5185\u5bb9<\/strong>\uff1a\u76f4\u63a5\u5f71\u54cd\u5bbd\u5ea6<br\/>\n&#8211; <strong>\u6587\u5b57\u9ad8\u5ea6<\/strong>\uff08\u7ec4\u7801 40\uff09\uff1a\u57fa\u51c6\u9ad8\u5ea6\uff0c\u5b57\u7b26\u6309\u6bd4\u4f8b\u7f29\u653e<br\/>\n&#8211; <strong>\u5bbd\u5ea6\u56e0\u5b50<\/strong>\uff08\u7ec4\u7801 41\uff09\uff1a\u6c34\u5e73\u65b9\u5411\u7684\u989d\u5916\u7f29\u653e<br\/>\n&#8211; <strong>\u503e\u659c\u89d2\u5ea6<\/strong>\uff08\u7ec4\u7801 51\uff09\uff1a\u4f7f\u6587\u5b57\u503e\u659c\uff0c\u589e\u52a0\u6709\u6548\u5bbd\u5ea6\n<\/span>\n<span data-lang=\"en\">\n&#8211; <strong>Text content:<\/strong> directly affects width<br\/>\n&#8211; <strong>Text height<\/strong> (code 40): base height, characters scale proportionally<br\/>\n&#8211; <strong>Width factor<\/strong> (code 41): additional horizontal scaling<br\/>\n&#8211; <strong>Oblique angle<\/strong> (code 51): tilts text, increasing effective width\n<\/span>\n<\/div>\n\n<h3><span data-lang=\"zh\">mtext_size \u65b9\u6cd5<\/span><span data-lang=\"en\">mtext_size Method<\/span><\/h3>\n<p><span data-lang=\"zh\"><code>mtext_size<\/code> \u7528\u4e8e\u591a\u884c\u6587\u5b57\uff08MTEXT \u5b9e\u4f53\uff09\uff0c\u8ba1\u7b97\u66f4\u590d\u6742\uff0c\u9700\u8981\u89e3\u6790\u683c\u5f0f\u4ee3\u7801\uff1a<\/span><span data-lang=\"en\"><code>mtext_size<\/code> is for multiline text (MTEXT entities) and requires more complex calculation involving format code parsing:<\/span><\/p>\n\n<pre><code># ezdxf \u98ce\u683c\u7684 mtext_size \u8ba1\u7b97\u903b\u8f91\uff08\u793a\u610f\uff09\ndef mtext_size(mtext_entity, font_info) -> Tuple[float, float]:\n    \"\"\"\n    \u8ba1\u7b97 MTEXT \u5b9e\u4f53\u7684\u6e32\u67d3\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u3002\n    \u8fd4\u56de: (width, height)\n    \"\"\"\n    content = mtext_entity.text            # \u7ec4\u7801 1 + 3 \u62fc\u63a5\n    nominal_height = mtext_entity.dxf.height  # \u7ec4\u7801 40\uff08\u6807\u79f0\u9ad8\u5ea6\uff09\n    rect_width = mtext_entity.dxf.width    # \u7ec4\u7801 41\uff08\u53c2\u8003\u5bbd\u5ea6\uff09\n    line_spacing = mtext_entity.dxf.line_spacing_factor  # \u7ec4\u7801 44\n\n    # 1. \u89e3\u6790\u683c\u5f0f\u4ee3\u7801\uff08\u5982 \\H0.5x; \u8868\u793a\u9ad8\u5ea6\u4e3a\u6807\u79f0\u7684 0.5 \u500d\uff09\n    formatted_lines = parse_mtext_formatting(content)\n\n    # 2. \u9010\u884c\u8ba1\u7b97\u5c3a\u5bf8\n    max_line_width = 0\n    total_height = 0\n    for i, line in enumerate(formatted_lines):\n        line_height = line.get_height(nominal_height)  # \u8003\u8651 \\H \u4ee3\u7801\n        line_width = calculate_line_width(line, font_info, line_height)\n        max_line_width = max(max_line_width, line_width)\n\n        # \u9996\u884c\u4e0d\u52a0\u95f4\u8ddd\uff0c\u540e\u7eed\u884c\u52a0\u884c\u95f4\u8ddd\n        if i > 0:\n            total_height += line_height * line_spacing\n        else:\n            total_height += line_height\n\n    # 3. \u5982\u679c\u8bbe\u5b9a\u4e86\u53c2\u8003\u5bbd\u5ea6\uff0c\u5b9e\u9645\u5bbd\u5ea6 = min(\u5185\u5bb9\u5bbd\u5ea6, \u53c2\u8003\u5bbd\u5ea6)\n    actual_width = max_line_width\n    if rect_width > 0:\n        actual_width = min(max_line_width, rect_width)\n        # \u82e5\u5185\u5bb9\u88ab\u622a\u65ad\u6362\u884c\uff0c\u9ad8\u5ea6\u9700\u8981\u91cd\u65b0\u8ba1\u7b97\n        if max_line_width > rect_width:\n            total_height = recalc_wrapped_height(formatted_lines, rect_width)\n\n    return (actual_width, total_height)\n<\/code><\/pre>\n\n<div class=\"info-box\">\n<strong><span data-lang=\"zh\">mtext_size \u7684\u5173\u952e\u53c2\u6570<\/span><span data-lang=\"en\">Key Parameters of mtext_size<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\n&#8211; <strong>\u6587\u5b57\u5185\u5bb9<\/strong>\uff1a\u9700\u89e3\u6790\u5185\u5d4c\u683c\u5f0f\u4ee3\u7801\uff08\\H, \\W, \\F, \\P \u7b49\uff09<br\/>\n&#8211; <strong>\u6807\u79f0\u9ad8\u5ea6<\/strong>\uff08\u7ec4\u7801 40\uff09\uff1a\u9ed8\u8ba4\u884c\u9ad8\uff0c\u4f46\u6bcf\u884c\u53ef\u88ab\u683c\u5f0f\u4ee3\u7801\u8986\u76d6<br\/>\n&#8211; <strong>\u53c2\u8003\u5bbd\u5ea6<\/strong>\uff08\u7ec4\u7801 41\uff09\uff1a\u89e6\u53d1\u81ea\u52a8\u6362\u884c\u7684\u9608\u503c\uff0c0 \u8868\u793a\u4e0d\u6362\u884c<br\/>\n&#8211; <strong>\u884c\u95f4\u8ddd\u56e0\u5b50<\/strong>\uff08\u7ec4\u7801 44\uff09\uff1a\u63a7\u5236\u884c\u4e0e\u884c\u4e4b\u95f4\u7684\u95f4\u8ddd\u500d\u6570<br\/>\n&#8211; <strong>\u7ed8\u5236\u65b9\u5411<\/strong>\uff08\u7ec4\u7801 72\uff09\uff1a\u5f71\u54cd\u5bbd\/\u9ad8\u7684\u5b9a\u4e49\uff08\u5de6\u5230\u53f3 vs \u4e0a\u5230\u4e0b\uff09\n<\/span>\n<span data-lang=\"en\">\n&#8211; <strong>Text content:<\/strong> requires parsing inline format codes (\\H, \\W, \\F, \\P, etc.)<br\/>\n&#8211; <strong>Nominal height<\/strong> (code 40): default line height, but each line may be overridden by format codes<br\/>\n&#8211; <strong>Reference width<\/strong> (code 41): threshold for automatic wrapping, 0 means no wrapping<br\/>\n&#8211; <strong>Line spacing factor<\/strong> (code 44): controls spacing multiplier between lines<br\/>\n&#8211; <strong>Drawing direction<\/strong> (code 72): affects width\/height definitions (L-R vs T-B)\n<\/span>\n<\/div>\n\n<h3><span data-lang=\"zh\">\u5e38\u89c1 MTEXT \u683c\u5f0f\u4ee3\u7801<\/span><span data-lang=\"en\">Common MTEXT Format Codes<\/span><\/h3>\n<div class=\"table-wrap\">\n<table>\n<thead>\n<tr>\n<th><span data-lang=\"zh\">\u4ee3\u7801<\/span><span data-lang=\"en\">Code<\/span><\/th>\n<th><span data-lang=\"zh\">\u542b\u4e49<\/span><span data-lang=\"en\">Meaning<\/span><\/th>\n<th><span data-lang=\"zh\">\u793a\u4f8b<\/span><span data-lang=\"en\">Example<\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><code>\\H&lt;value&gt;;<\/code><\/td><td><span data-lang=\"zh\">\u8bbe\u7f6e\u6587\u5b57\u9ad8\u5ea6<\/span><span data-lang=\"en\">Set text height<\/span><\/td><td><code>\\H2.5;<\/code> <span data-lang=\"zh\">\u9ad8\u5ea6\u4e3a 2.5<\/span><span data-lang=\"en\">height=2.5<\/span><\/td><\/tr>\n<tr><td><code>\\H&lt;value&gt;x;<\/code><\/td><td><span data-lang=\"zh\">\u8bbe\u7f6e\u76f8\u5bf9\u9ad8\u5ea6\u500d\u6570<\/span><span data-lang=\"en\">Set relative height multiplier<\/span><\/td><td><code>\\H0.5x;<\/code> <span data-lang=\"zh\">\u9ad8\u5ea6\u4e3a\u9ed8\u8ba4\u7684\u4e00\u534a<\/span><span data-lang=\"en\">half default height<\/span><\/td><\/tr>\n<tr><td><code>\\W&lt;value&gt;;<\/code><\/td><td><span data-lang=\"zh\">\u8bbe\u7f6e\u5bbd\u5ea6\u56e0\u5b50<\/span><span data-lang=\"en\">Set width factor<\/span><\/td><td><code>\\W1.5;<\/code> <span data-lang=\"zh\">\u5bbd\u5ea6\u56e0\u5b50 1.5<\/span><span data-lang=\"en\">width factor 1.5<\/span><\/td><\/tr>\n<tr><td><code>\\F&lt;font&gt;;<\/code><\/td><td><span data-lang=\"zh\">\u8bbe\u7f6e\u5b57\u4f53<\/span><span data-lang=\"en\">Set font<\/span><\/td><td><code>\\FSimSun;<\/code> <span data-lang=\"zh\">\u5b8b\u4f53<\/span><span data-lang=\"en\">SimSun font<\/span><\/td><\/tr>\n<tr><td><code>\\C&lt;index&gt;;<\/code><\/td><td><span data-lang=\"zh\">\u8bbe\u7f6e\u989c\u8272\uff08AutoCAD \u989c\u8272\u7d22\u5f15\uff09<\/span><span data-lang=\"en\">Set color (ACI)<\/span><\/td><td><code>\\C1;<\/code> <span data-lang=\"zh\">\u7ea2\u8272<\/span><span data-lang=\"en\">Red<\/span><\/td><\/tr>\n<tr><td><code>\\P<\/code><\/td><td><span data-lang=\"zh\">\u6bb5\u843d\u6362\u884c<\/span><span data-lang=\"en\">Paragraph break<\/span><\/td><td><code>Line1\\PLine2<\/code><\/td><\/tr>\n<tr><td><code>\\S&lt;num&gt;^&lt;den&gt;;<\/code><\/td><td><span data-lang=\"zh\">\u5806\u53e0\u5206\u6570<\/span><span data-lang=\"en\">Stacked fraction<\/span><\/td><td><code>\\S1^2;<\/code> <span data-lang=\"zh\">\u4e8c\u5206\u4e4b\u4e00<\/span><span data-lang=\"en\">1\/2<\/span><\/td><\/tr>\n<tr><td><code>\\L ... \\l<\/code><\/td><td><span data-lang=\"zh\">\u4e0b\u5212\u7ebf<\/span><span data-lang=\"en\">Underline<\/span><\/td><td><code>\\Ltext\\l<\/code><\/td><\/tr>\n<tr><td><code>\\O ... \\o<\/code><\/td><td><span data-lang=\"zh\">\u4e0a\u5212\u7ebf<\/span><span data-lang=\"en\">Overline<\/span><\/td><td><code>\\Otext\\o<\/code><\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"tip-box\">\n<strong><span data-lang=\"zh\">\u7f16\u7a0b\u5efa\u8bae<\/span><span data-lang=\"en\">Programming Tip<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u82e5\u4f60\u7684\u5e93\uff08\u5982 ezdxf\uff09\u63d0\u4f9b\u4e86 <code>text_size()<\/code> \u548c <code>mtext_size()<\/code>\uff0c\u4f18\u5148\u4f7f\u7528\u5e93\u81ea\u5e26\u65b9\u6cd5\u800c\u975e\u81ea\u5df1\u8ba1\u7b97\uff0c\u56e0\u4e3a\u5b57\u4f53\u6d4b\u91cf\u548c\u683c\u5f0f\u89e3\u6790\u975e\u5e38\u4f9d\u8d56\u5e95\u5c42\u5b9e\u73b0\u3002\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>matplotlib.font_manager<\/code> \u6216 <code>PIL.ImageFont<\/code> \u6765\u8fd1\u4f3c\u6d4b\u91cf\u3002<\/span>\n<span data-lang=\"en\">If your library (like ezdxf) provides <code>text_size()<\/code> and <code>mtext_size()<\/code>, prefer the built-in methods over manual calculation, as font measurement and format parsing depend heavily on underlying implementation. If not available, you can approximate using <code>matplotlib.font_manager<\/code> or <code>PIL.ImageFont<\/code>.<\/span>\n<\/div>\n<\/section>\n\n<!-- Section 8: Common Errors -->\n<section id=\"common-errors\">\n<div class=\"section-icon\">\u26a0\ufe0f<\/div>\n<h2><span data-lang=\"zh\">\u5e38\u89c1\u9519\u8bef\u4e0e\u6ce8\u610f\u4e8b\u9879<\/span><span data-lang=\"en\">Common Errors &amp; Pitfalls<\/span><\/h2>\n\n<h3><span data-lang=\"zh\">\u9519\u8bef 1\uff1a\u5bf9 MTEXT \u8bfb\u53d6 halign \/ valign<\/span><span data-lang=\"en\">Error 1: Reading halign\/valign on MTEXT<\/span><\/h3>\n<div class=\"warn-box\">\n<strong><span data-lang=\"zh\">\u95ee\u9898<\/span><span data-lang=\"en\">Problem<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u4ee3\u7801\u540c\u65f6\u904d\u5386 TEXT \u548c MTEXT\uff0c\u76f4\u63a5\u8bbf\u95ee <code>entity.dxf.halign<\/code> \u4f1a\u5728\u9047\u5230 MTEXT \u65f6\u629b\u51fa <code>AttributeError<\/code>\uff0c\u56e0\u4e3a MTEXT \u6ca1\u6709\u8fd9\u4e24\u4e2a\u5c5e\u6027\u3002<\/span>\n<span data-lang=\"en\">Code iterating over both TEXT and MTEXT and directly accessing <code>entity.dxf.halign<\/code> will raise <code>AttributeError<\/code> when encountering MTEXT, because MTEXT does not have these attributes.<\/span>\n<\/div>\n\n<pre><code># \u9519\u8bef\u4ee3\u7801 \u274c\nfor entity in msp:\n    h = entity.dxf.halign   # MTEXT \u4f1a\u62a5\u9519\uff01\n    v = entity.dxf.valign\n\n# \u6b63\u786e\u4ee3\u7801 \u2705\nfor entity in msp:\n    if entity.dxftype() == 'TEXT':\n        h = entity.dxf.halign\n        v = entity.dxf.valign\n    elif entity.dxftype() == 'MTEXT':\n        att = entity.dxf.attachment_point\n<\/code><\/pre>\n\n<h3><span data-lang=\"zh\">\u9519\u8bef 2\uff1a\u6df7\u6dc6\u9ed8\u8ba4\u63d2\u5165\u70b9<\/span><span data-lang=\"en\">Error 2: Confusing Default Insertion Points<\/span><\/h3>\n<div class=\"warn-box\">\n<strong><span data-lang=\"en\">Problem<\/span><span data-lang=\"zh\">\u95ee\u9898<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\u5c06 TEXT \u7684\u63d2\u5165\u70b9\u5f53\u4f5c\u6587\u5b57\u5de6\u4e0a\u89d2\u5904\u7406\uff0c\u5bfc\u81f4\u6587\u5b57\u4f4d\u7f6e\u5411\u4e0b\u504f\u79fb\u4e00\u4e2a\u6587\u5b57\u9ad8\u5ea6\uff1b\u6216\u5c06 MTEXT \u7684\u63d2\u5165\u70b9\u5f53\u4f5c\u5de6\u4e0a\u89d2\u5904\u7406\u65f6\u5ffd\u7565\u4e86 attachment_point \u7684\u4fee\u6539\u3002<\/span>\n<span data-lang=\"en\">Treating TEXT&#8217;s insertion point as the top-left corner causes a downward offset of one text height; or ignoring attachment_point changes when treating MTEXT&#8217;s insertion point as top-left.<\/span>\n<\/div>\n\n<h3><span data-lang=\"zh\">\u9519\u8bef 3\uff1a\u5ffd\u7565\u5bf9\u9f50\u70b9\uff08\u7ec4\u7801 11\/21\/31\uff09<\/span><span data-lang=\"en\">Error 3: Ignoring Alignment Point (codes 11\/21\/31)<\/span><\/h3>\n<p><span data-lang=\"zh\">\u5f53 TEXT \u7684 halign \u6216 valign \u975e\u96f6\u65f6\uff0c\u7ec4\u7801 10\/20\/30 \u4e0d\u518d\u662f\u6587\u5b57\u7684\u5b9e\u9645\u5b9a\u4f4d\u70b9\uff0c\u771f\u6b63\u7684\u5bf9\u9f50\u53c2\u8003\u70b9\u662f\u7ec4\u7801 11\/21\/31\u3002\u82e5\u53ea\u8bfb\u53d6\u63d2\u5165\u70b9\u800c\u5ffd\u7565\u5bf9\u9f50\u70b9\uff0c\u6e32\u67d3\u4f4d\u7f6e\u4f1a\u504f\u5dee\u3002<\/span><span data-lang=\"en\">When TEXT&#8217;s halign or valign is non-zero, group codes 10\/20\/30 are no longer the actual positioning point; the true alignment reference is codes 11\/21\/31. Reading only the insertion point while ignoring the alignment point will cause rendering position errors.<\/span><\/p>\n\n<h3><span data-lang=\"zh\">\u9519\u8bef 4\uff1aMTEXT \u5185\u5bb9\u622a\u65ad<\/span><span data-lang=\"en\">Error 4: MTEXT Content Truncation<\/span><\/h3>\n<p><span data-lang=\"zh\">MTEXT \u7684\u5185\u5bb9\u8d85\u8fc7 250 \u5b57\u7b26\u65f6\u4f1a\u88ab\u62c6\u5206\u5230\u591a\u4e2a\u7ec4\u7801 3 \u4e2d\u3002\u53ea\u8bfb\u53d6\u7ec4\u7801 1 \u4f1a\u5bfc\u81f4\u5185\u5bb9\u4e0d\u5b8c\u6574\uff0c\u5fc5\u987b\u6309\u987a\u5e8f\u62fc\u63a5\u6240\u6709\u7ec4\u7801 3 \u7684\u503c\u3002<\/span><span data-lang=\"en\">When MTEXT content exceeds 250 characters, it is split across multiple group code 3 entries. Reading only group code 1 will result in incomplete content; you must concatenate all group code 3 values in order.<\/span><\/p>\n\n<pre><code># ezdxf \u4f1a\u81ea\u52a8\u5904\u7406\u62fc\u63a5\uff0c\u4f46\u539f\u751f DXF \u89e3\u6790\u9700\u6ce8\u610f\n# \u6b63\u786e\u8bfb\u53d6 MTEXT \u5185\u5bb9\u7684\u903b\u8f91\uff1a\ncontent = code_1_value\nfor extra in all_code_3_values:\n    content += extra\n<\/code><\/pre>\n\n<div class=\"tip-box\">\n<strong><span data-lang=\"zh\">\u6700\u4f73\u5b9e\u8df5<\/span><span data-lang=\"en\">Best Practices<\/span><\/strong><br\/>\n<span data-lang=\"zh\">\n1. \u59cb\u7ec8\u901a\u8fc7 <code>entity.dxftype()<\/code> \u5224\u65ad\u5b9e\u4f53\u7c7b\u578b\u540e\u518d\u8bbf\u95ee\u7279\u5b9a\u5c5e\u6027<br\/>\n2. TEXT \u6e32\u67d3\u65f6\u540c\u65f6\u8003\u8651\u63d2\u5165\u70b9\u548c\u5bf9\u9f50\u70b9\uff0c\u68c0\u67e5 halign\/valign \u662f\u5426\u4e3a 0<br\/>\n3. MTEXT \u8bfb\u53d6\u65f6\u62fc\u63a5\u7ec4\u7801 1 \u548c\u6240\u6709\u7ec4\u7801 3 \u7684\u5185\u5bb9<br\/>\n4. \u8ba1\u7b97 BBox \u65f6\u786e\u4fdd\u5b57\u4f53\u6587\u4ef6\u53ef\u7528\uff0c\u5426\u5219\u4f7f\u7528\u8fd1\u4f3c\u503c<br\/>\n5. \u5904\u7406\u65cb\u8f6c\u6587\u5b57\u65f6\uff0cBBox \u9700\u8981\u5728\u65cb\u8f6c\u540e\u91cd\u65b0\u8ba1\u7b97\uff08\u6216\u8ba1\u7b97\u65cb\u8f6c\u540e\u7684\u89d2\u70b9\uff09\n<\/span>\n<span data-lang=\"en\">\n1. Always check <code>entity.dxftype()<\/code> before accessing entity-specific attributes<br\/>\n2. When rendering TEXT, consider both insertion and alignment points; check if halign\/valign are 0<br\/>\n3. When reading MTEXT, concatenate code 1 with all code 3 values<br\/>\n4. Ensure font files are available when calculating BBox; otherwise use approximations<br\/>\n5. For rotated text, BBox must be recalculated after rotation (or compute rotated corner points)\n<\/span>\n<\/div>\n<\/section>\n\n<div class=\"footnotes\">\n  <p><span data-lang=\"zh\">DXF TEXT &amp; MTEXT \u5b9e\u4f53\u53c2\u8003 | \u57fa\u4e8e AutoCAD DXF Reference \u4e0e ezdxf \u6587\u6863\u7f16\u5236<\/span><span data-lang=\"en\">DXF TEXT &amp; MTEXT Entity Reference | Based on AutoCAD DXF Reference and ezdxf documentation<\/span><\/p>\n<\/div>\n\n<\/div><!-- end container -->\n\n<!-- Language Switcher Script -->\n<script>\nfunction switchLanguage(lang) {\n  document.documentElement.lang = lang;\n  document.body.className = (lang === 'en') ? 'en-active' : '';\n\n  var btnZh = document.getElementById('btn-zh');\n  var btnEn = document.getElementById('btn-en');\n\n  if (lang === 'zh') {\n    btnZh.classList.add('active');\n    btnEn.classList.remove('active');\n  } else {\n    btnEn.classList.add('active');\n    btnZh.classList.remove('active');\n  }\n}\n\n\/\/ Initialize\ndocument.addEventListener('DOMContentLoaded', function() {\n  switchLanguage('zh');\n});\n\n\/\/ Smooth scrolling for anchor links\ndocument.querySelectorAll('a[href^=\"#\"]').forEach(function(anchor) {\n  anchor.addEventListener('click', function(e) {\n    e.preventDefault();\n    var target = document.querySelector(this.getAttribute('href'));\n    if (target) {\n      target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n  });\n});\n<\/script>\n\n<!-- Print styles adjustment -->\n<style media=\"print\">\n  .lang-bar { display: none !important; }\n  section { page-break-inside: avoid; }\n<\/style>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>DXF TEXT &amp; MTEXT \u5b9e\u4f53\u5b8c\u5168\u53c2\u8003DXF TEXT &amp; MTEXT Entity  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,9],"tags":[],"class_list":["post-285","post","type-post","status-publish","format-standard","hentry","category-cad","category-ai"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=285"}],"version-history":[{"count":1,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/285\/revisions"}],"predecessor-version":[{"id":286,"href":"https:\/\/numsimlab.com\/index.php?rest_route=\/wp\/v2\/posts\/285\/revisions\/286"}],"wp:attachment":[{"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/numsimlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}