Files
oapy/wafer/oaReticle.html
2026-06-02 14:14:41 +08:00

664 lines
20 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>oaReticle</title>
<style>
body {
margin: 0;
background: #0d0b0b;
color: #f5f1ec;
font-family: Arial, Helvetica, sans-serif;
line-height: 1.5;
}
a {
color: #f2d6c2;
text-decoration: none;
}
a:hover {
text-decoration: underline;
color: #fff4ea;
}
.topbar {
border-bottom: 1px solid #6f3d2d;
background: #120f0f;
}
.topbar-inner {
max-width: 1440px;
margin: 0 auto;
padding: 14px 20px 10px;
}
.brand {
font-size: 28px;
font-weight: 700;
color: #fff8f2;
margin: 0 0 10px;
}
.tabs {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.tab {
display: inline-block;
padding: 6px 12px;
border: 1px solid #6f3d2d;
background: #151111;
color: #f2d6c2;
font-size: 13px;
}
.tab.active {
background: #4b2317;
font-weight: 700;
color: #fff8f2;
}
.layout {
max-width: 1440px;
margin: 0 auto;
display: grid;
grid-template-columns: 280px minmax(0, 1fr);
gap: 28px;
padding: 24px 24px 40px;
}
.sidebar {
font-size: 13px;
}
.sidebar-panel {
border: 1px solid #6f3d2d;
margin-bottom: 16px;
background: #151111;
}
.sidebar-title {
background: #2a1713;
border-bottom: 1px solid #6f3d2d;
padding: 8px 10px;
font-weight: 700;
color: #fff1e8;
}
.sidebar-body {
padding: 8px 10px;
}
.sidebar-search {
width: 100%;
box-sizing: border-box;
padding: 6px 8px;
border: 1px solid #6f3d2d;
background: #0d0b0b;
color: #f5f1ec;
font-size: 13px;
margin-bottom: 8px;
}
.sidebar-search::placeholder {
color: #c8a995;
}
.sidebar-body ul {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-body li.hidden {
display: none;
}
.active-link {
font-weight: 700;
color: #fff8f2;
}
.sidebar-body li + li {
margin-top: 6px;
}
.content {
min-width: 0;
}
.content-grid {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 0;
align-items: start;
}
.doc {
border: 1px solid #6f3d2d;
background: #120f0f;
padding: 24px 28px 32px;
min-width: 0;
}
.toc-panel {
border: 1px solid #6f3d2d;
background: #151111;
padding: 0;
position: sticky;
top: 16px;
margin-bottom: 16px;
}
.toc-toggle {
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 12px 14px;
border: 0;
background: #2a1713;
color: #fff1e8;
cursor: pointer;
font-size: 14px;
font-weight: 700;
}
.toc-toggle:hover {
background: #3a1d16;
}
.toc-toggle-indicator {
font-size: 12px;
color: #d6ac96;
}
.toc-body {
display: none;
padding: 14px 16px;
}
.toc-panel.open .toc-body {
display: block;
}
.toc-panel h2 {
margin: 0 0 10px;
padding: 0;
border: 0;
font-size: 18px;
color: #fff1e8;
}
.toc-panel ul {
list-style: none;
padding: 0;
margin: 0;
}
.toc-panel li + li {
margin-top: 8px;
}
.toc-panel a {
font-size: 13px;
line-height: 1.35;
color: #f2d6c2;
}
.crumbs {
color: #c8a995;
font-size: 13px;
margin-bottom: 14px;
}
.meta {
border: 1px solid #6f3d2d;
background: #151111;
padding: 10px 12px;
margin: 16px 0 20px;
font-size: 13px;
}
.meta div + div {
margin-top: 4px;
}
.doc h1 {
margin: 0 0 8px;
font-size: 34px;
color: #fff8f2;
}
.doc h2 {
margin: 28px 0 12px;
padding-bottom: 4px;
border-bottom: 1px solid #6f3d2d;
font-size: 22px;
color: #fff1e8;
}
.doc h3 {
margin: 22px 0 10px;
font-size: 18px;
color: #f7e1d5;
}
.doc p, .doc li {
font-size: 14px;
}
.doc pre {
overflow-x: auto;
background: #0d0b0b;
border: 1px solid #6f3d2d;
padding: 12px 14px;
}
.doc code {
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
font-size: 12px;
overflow-wrap: anywhere;
word-break: break-word;
color: #f7e1d5;
}
.doc table {
width: 100%;
border-collapse: collapse;
margin: 12px 0 18px;
font-size: 13px;
table-layout: fixed;
}
.doc th, .doc td {
border: 1px solid #6f3d2d;
padding: 7px 9px;
vertical-align: top;
text-align: left;
overflow-wrap: anywhere;
word-break: break-word;
}
.doc th {
background: #2a1713;
color: #fff1e8;
}
.doc blockquote {
margin: 14px 0;
padding: 8px 12px;
border-left: 4px solid #8a4a36;
background: #151111;
color: #f2d6c2;
}
.search-panel {
border: 1px solid #6f3d2d;
background: #151111;
padding: 16px 18px;
margin-bottom: 20px;
}
.search-panel input {
width: 100%;
box-sizing: border-box;
padding: 8px 10px;
border: 1px solid #6f3d2d;
background: #0d0b0b;
color: #f5f1ec;
font-size: 14px;
}
.search-panel input::placeholder {
color: #c8a995;
}
.search-results {
list-style: none;
padding: 0;
margin: 16px 0 0;
}
.search-results li {
border-top: 1px solid #4b2317;
padding: 10px 0;
}
.search-results li.hidden {
display: none;
}
.search-results a {
font-weight: 700;
}
.search-results .module-tag {
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
border: 1px solid #8a4a36;
background: #2a1713;
color: #f2d6c2;
font-size: 12px;
}
.search-results .result-path {
margin-top: 4px;
color: #c8a995;
font-size: 12px;
}
.footer {
max-width: 1440px;
margin: 0 auto;
padding: 0 20px 28px;
color: #b89481;
font-size: 12px;
}
.doc > * {
min-width: 0;
}
@media (max-width: 960px) {
.layout {
grid-template-columns: 1fr;
}
.content-grid {
grid-template-columns: 1fr;
}
.toc-panel {
position: static;
}
}
</style>
</head>
<body>
<div class="topbar">
<div class="topbar-inner">
<div class="brand"><a href="../index.html">AIVI / oapy API 中文文档</a></div>
<div class="tabs"><a class="tab" href="../base/index.html">base</a><a class="tab" href="../common/index.html">common</a><a class="tab" href="../cms/index.html">cms</a><a class="tab" href="../dm/index.html">dm</a><a class="tab" href="../design/index.html">design</a><a class="tab" href="../tech/index.html">tech</a><a class="tab active" href="../wafer/index.html">wafer</a></div>
</div>
</div>
<div class="layout">
<aside class="sidebar"><div class="sidebar-panel"><div class="sidebar-title">模块</div><div class="sidebar-body"><ul><li><a href="../classes.html">全部类</a></li><li><a href="../base/index.html">base</a></li><li><a href="../common/index.html">common</a></li><li><a href="../cms/index.html">cms</a></li><li><a href="../dm/index.html">dm</a></li><li><a href="../design/index.html">design</a></li><li><a href="../tech/index.html">tech</a></li><li><a class="active-link" href="../wafer/index.html">wafer</a></li></ul></div></div><div class="sidebar-panel"><div class="sidebar-title">wafer 类</div><div class="sidebar-body"><input class="sidebar-search" type="search" placeholder="筛选类" data-class-filter><ul><li data-class-item data-class-name="oadesigninst"><a href="oaDesignInst.html">oaDesignInst</a></li><li data-class-item data-class-name="oaframe"><a href="oaFrame.html">oaFrame</a></li><li data-class-item data-class-name="oaframeinst"><a href="oaFrameInst.html">oaFrameInst</a></li><li data-class-item data-class-name="oaimage"><a href="oaImage.html">oaImage</a></li><li data-class-item data-class-name="oalayermap"><a href="oaLayerMap.html">oaLayerMap</a></li><li data-class-item data-class-name="oalayermaparray"><a href="oaLayerMapArray.html">oaLayerMapArray</a></li><li data-class-item data-class-name="oamfglayerarray"><a href="oaMfgLayerArray.html">oaMfgLayerArray</a></li><li data-class-item data-class-name="oareticle"><a class="active-link" href="oaReticle.html">oaReticle</a></li><li data-class-item data-class-name="oareticleref"><a href="oaReticleRef.html">oaReticleRef</a></li><li data-class-item data-class-name="oareticleusage"><a href="oaReticleUsage.html">oaReticleUsage</a></li><li data-class-item data-class-name="oasteppermap"><a href="oaStepperMap.html">oaStepperMap</a></li><li data-class-item data-class-name="oawafer"><a href="oaWafer.html">oaWafer</a></li><li data-class-item data-class-name="oawaferdatatype"><a href="oaWaferDataType.html">oaWaferDataType</a></li><li data-class-item data-class-name="oawaferdesc"><a href="oaWaferDesc.html">oaWaferDesc</a></li><li data-class-item data-class-name="oawafererror"><a href="oaWaferError.html">oaWaferError</a></li><li data-class-item data-class-name="oawaferexception"><a href="oaWaferException.html">oaWaferException</a></li><li data-class-item data-class-name="oawaferfeature"><a href="oaWaferFeature.html">oaWaferFeature</a></li><li data-class-item data-class-name="oawaferfeaturetype"><a href="oaWaferFeatureType.html">oaWaferFeatureType</a></li><li data-class-item data-class-name="oawaferobject"><a href="oaWaferObject.html">oaWaferObject</a></li><li data-class-item data-class-name="oawaferunitstype"><a href="oaWaferUnitsType.html">oaWaferUnitsType</a></li></ul></div></div></aside>
<main class="content">
<div class="content-grid">
<div class="doc">
<div class="crumbs"><a href="../index.html">首页</a> / <a href="index.html">wafer</a> / oaReticle</div>
<h1 id="oareticle">oaReticle</h1>
<p><strong>模块</strong>: <code>oapy._oa._wafer</code>
<strong>导入</strong>: <code>from oapy._oa import _wafer</code></p>
<h2 id="_1">概览</h2>
<p><code>oaReticle</code><code>oapy</code> 中可用,可通过 <code>_wafer</code> 模块访问。</p>
<p>本页汇总 <code>oaReticle</code> 当前在 <code>oapy</code> 中可用的 Python 接口。</p>
<h2 id="_2">详细说明</h2>
<p>The oaReticle class defines a structure that would be etched onto a silicon wafer during lithographic processing。 The oaReticle was a boundary in which to fit the structure and a scale factor for the structure features。 The structure may be defined by instances of designs (layouts) and instances of frames for more complicated structures。 An oaReticle has a polygonal boundary。 Two coincident and three collinear points are illegal, and if detected, cause an exception to be thrown。 You can use oaPointArray::compress() to remove these combinations。 The oaReticle class can be observed by deriving from oaObserver<oaReticle></p>
<h2 id="_3">方法总览</h2>
<table>
<thead>
<tr>
<th>状态</th>
<th>Python 调用</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td><code>obj.destroy()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getName(name)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getBoundary(boundary)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getScale()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.setName(name)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.setBoundary(boundary)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.setScale(scale)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getFrameInsts()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getDesignInsts()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getImages()</code></td>
</tr>
<tr>
<td></td>
<td><code>_wafer.oaReticle.create(wafer, name, scale, boundary)</code></td>
</tr>
<tr>
<td></td>
<td><code>_wafer.oaReticle.find(wafer, name)</code></td>
</tr>
</tbody>
</table>
<h2 id="_4">方法说明</h2>
<h3 id="objdestroy"><code>obj.destroy()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.destroy()</code></p>
<p>This function destroys this reticle, removing it from the database。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.destroy()
</code></pre>
<h3 id="objgetnamename"><code>obj.getName(name)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getName(name)</code></p>
<p>This function returns the name of this reticle in the given string argument。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>name</code>: The oaString to return the name in。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getName(name)
</code></pre>
<h3 id="objgetboundaryboundary"><code>obj.getBoundary(boundary)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getBoundary(boundary)</code></p>
<p>This function returns the boundary of this reticle in the given boundary oaPointArray 。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>boundary</code>: The oaPointArray to return the reticle boundary in。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getBoundary(boundary)
</code></pre>
<h3 id="objgetscale"><code>obj.getScale()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getScale()</code></p>
<p>This function returns the scale factor associated with this reticle。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getScale()
</code></pre>
<h3 id="objsetnamename"><code>obj.setName(name)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.setName(name)</code></p>
<p>This function sets the name of this reticle to the specified 'name'。 An exception is thrown if another reticle already has the specified name。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>name</code>: The new name to give the reticle。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.setName(name)
</code></pre>
<h3 id="objsetboundaryboundary"><code>obj.setBoundary(boundary)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.setBoundary(boundary)</code></p>
<p>This function changes the boundary of this reticle to the specified boundary。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>boundary</code>: The oaPointArray that contains the new reticle boundary。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.setBoundary(boundary)
</code></pre>
<h3 id="objsetscalescale"><code>obj.setScale(scale)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.setScale(scale)</code></p>
<p>This function changes the scale of this reticle to the specified scale。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>scale</code>: The new scale factor to give the reticle。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.setScale(scale)
</code></pre>
<h3 id="objgetframeinsts"><code>obj.getFrameInsts()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getFrameInsts()</code></p>
<p>This function returns the collection of frameInsts associated with this reticle。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getFrameInsts()
</code></pre>
<h3 id="objgetdesigninsts"><code>obj.getDesignInsts()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getDesignInsts()</code></p>
<p>This function returns the collection of designInsts associated with this reticle。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getDesignInsts()
</code></pre>
<h3 id="objgetimages"><code>obj.getImages()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getImages()</code></p>
<p>This function returns the collection of images associated with this reticle。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
# assume obj is a oaReticle
obj.getImages()
</code></pre>
<h3 id="_waferoareticlecreatewafer-name-scale-boundary"><code>_wafer.oaReticle.create(wafer, name, scale, boundary)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_wafer.oaReticle.create(wafer, name, scale, boundary)</code></p>
<p>This function creates a reticle in the specified wafer with the given name and attributes。 The specified boundary is checked to verify that there are at least three points and no collinear or coincident points。 This function throws an exception if a reticle with the specified name already exists in the wafer。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>wafer</code>: The wafer in which to create the reticle。</li>
<li><code>name</code>: The name of the reticle to create。</li>
<li><code>scale</code>: The scale factor to apply to objects in the reticle。</li>
<li><code>boundary</code>: A pointArray specifying the reticle boundary。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
_wafer.oaReticle.create(wafer, name, scale, boundary)
</code></pre>
<h3 id="_waferoareticlefindwafer-name"><code>_wafer.oaReticle.find(wafer, name)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_wafer.oaReticle.find(wafer, name)</code></p>
<p>This function searches the specified wafer for a reticle with the specified name。 The function returns the reticle if found。 Otherwise, NULL is returned。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>wafer</code>: The wafer to search for the reticle。</li>
<li><code>name</code>: The name of the reticle to find。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _wafer
_wafer.oaReticle.find(wafer, name)
</code></pre>
</div>
<aside class="toc-panel"><button class="toc-toggle" type="button" data-toc-toggle aria-expanded="false"><span>方法</span><span class="toc-toggle-indicator">展开</span></button><div class="toc-body"><h2>方法</h2><ul><li><a href="#obj-destroy"><code>obj.destroy()</code></a></li><li><a href="#obj-getname-name"><code>obj.getName(name)</code></a></li><li><a href="#obj-getboundary-boundary"><code>obj.getBoundary(boundary)</code></a></li><li><a href="#obj-getscale"><code>obj.getScale()</code></a></li><li><a href="#obj-setname-name"><code>obj.setName(name)</code></a></li><li><a href="#obj-setboundary-boundary"><code>obj.setBoundary(boundary)</code></a></li><li><a href="#obj-setscale-scale"><code>obj.setScale(scale)</code></a></li><li><a href="#obj-getframeinsts"><code>obj.getFrameInsts()</code></a></li><li><a href="#obj-getdesigninsts"><code>obj.getDesignInsts()</code></a></li><li><a href="#obj-getimages"><code>obj.getImages()</code></a></li><li><a href="#wafer-oareticle-create-wafer-name-scale-boundary"><code>_wafer.oaReticle.create(wafer, name, scale, boundary)</code></a></li><li><a href="#wafer-oareticle-find-wafer-name"><code>_wafer.oaReticle.find(wafer, name)</code></a></li></ul></div></aside>
</div>
</main>
</div>
<div class="footer">oapy 是 AIVI 项目的一部分。此站点提供当前 oapy Python API 的中文文档。</div>
<script>
document.addEventListener("DOMContentLoaded", () => {
const input = document.querySelector("[data-class-filter]");
if (input) {
input.addEventListener("input", () => {
const term = input.value.trim().toLowerCase();
document.querySelectorAll("[data-class-item]").forEach((item) => {
const name = item.getAttribute("data-class-name") || "";
item.classList.toggle("hidden", term && !name.includes(term));
});
});
}
const globalInput = document.querySelector("[data-global-search]");
if (globalInput) {
globalInput.addEventListener("input", () => {
const term = globalInput.value.trim().toLowerCase();
document.querySelectorAll("[data-search-item]").forEach((item) => {
const name = item.getAttribute("data-search-name") || "";
const module = item.getAttribute("data-search-module") || "";
const visible = !term || name.includes(term) || module.includes(term);
item.classList.toggle("hidden", !visible);
});
});
}
document.querySelectorAll("[data-toc-toggle]").forEach((button) => {
button.addEventListener("click", () => {
const panel = button.closest(".toc-panel");
if (!panel) return;
const isOpen = panel.classList.toggle("open");
button.setAttribute("aria-expanded", isOpen ? "true" : "false");
const indicator = button.querySelector(".toc-toggle-indicator");
if (indicator) {
indicator.textContent = isOpen ? "Hide" : "Show";
}
});
});
});
</script>
</body>
</html>