Files
oapy/dm/oaDMData.html
2026-06-02 14:14:41 +08:00

1020 lines
38 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>oaDMData</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 active" 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" 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 class="active-link" 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 href="../wafer/index.html">wafer</a></li></ul></div></div><div class="sidebar-panel"><div class="sidebar-title">dm 类</div><div class="sidebar-body"><input class="sidebar-search" type="search" placeholder="筛选类" data-class-filter><ul><li data-class-item data-class-name="oacell"><a href="oaCell.html">oaCell</a></li><li data-class-item data-class-name="oacelldmdata"><a href="oaCellDMData.html">oaCellDMData</a></li><li data-class-item data-class-name="oacellview"><a href="oaCellView.html">oaCellView</a></li><li data-class-item data-class-name="oacellviewdmdata"><a href="oaCellViewDMData.html">oaCellViewDMData</a></li><li data-class-item data-class-name="oadmattr"><a href="oaDMAttr.html">oaDMAttr</a></li><li data-class-item data-class-name="oadmattrarray"><a href="oaDMAttrArray.html">oaDMAttrArray</a></li><li data-class-item data-class-name="oadmcontainer"><a href="oaDMContainer.html">oaDMContainer</a></li><li data-class-item data-class-name="oadmdata"><a class="active-link" href="oaDMData.html">oaDMData</a></li><li data-class-item data-class-name="oadmdatatype"><a href="oaDMDataType.html">oaDMDataType</a></li><li data-class-item data-class-name="oadmerror"><a href="oaDMError.html">oaDMError</a></li><li data-class-item data-class-name="oadmexception"><a href="oaDMException.html">oaDMException</a></li><li data-class-item data-class-name="oadmfile"><a href="oaDMFile.html">oaDMFile</a></li><li data-class-item data-class-name="oadmlockstatus"><a href="oaDMLockStatus.html">oaDMLockStatus</a></li><li data-class-item data-class-name="oadmobject"><a href="oaDMObject.html">oaDMObject</a></li><li data-class-item data-class-name="oadmobjectiter"><a href="oaDMObjectIter.html">oaDMObjectIter</a></li><li data-class-item data-class-name="oadmobjectstatusref"><a href="oaDMObjectStatusRef.html">oaDMObjectStatusRef</a></li><li data-class-item data-class-name="oadmobjectstatusrefiter"><a href="oaDMObjectStatusRefIter.html">oaDMObjectStatusRefIter</a></li><li data-class-item data-class-name="oadmobjectversionref"><a href="oaDMObjectVersionRef.html">oaDMObjectVersionRef</a></li><li data-class-item data-class-name="oadmobjectversionrefiter"><a href="oaDMObjectVersionRefIter.html">oaDMObjectVersionRefIter</a></li><li data-class-item data-class-name="oadmpluginerror"><a href="oaDMPlugInError.html">oaDMPlugInError</a></li><li data-class-item data-class-name="oalib"><a href="oaLib.html">oaLib</a></li><li data-class-item data-class-name="oalibaccess"><a href="oaLibAccess.html">oaLibAccess</a></li><li data-class-item data-class-name="oalibaccesslevel"><a href="oaLibAccessLevel.html">oaLibAccessLevel</a></li><li data-class-item data-class-name="oalibdmdata"><a href="oaLibDMData.html">oaLibDMData</a></li><li data-class-item data-class-name="oalibdatatype"><a href="oaLibDataType.html">oaLibDataType</a></li><li data-class-item data-class-name="oalibdef"><a href="oaLibDef.html">oaLibDef</a></li><li data-class-item data-class-name="oalibdeflist"><a href="oaLibDefList.html">oaLibDefList</a></li><li data-class-item data-class-name="oalibdeflistmem"><a href="oaLibDefListMem.html">oaLibDefListMem</a></li><li data-class-item data-class-name="oalibdeflistref"><a href="oaLibDefListRef.html">oaLibDefListRef</a></li><li data-class-item data-class-name="oalibmode"><a href="oaLibMode.html">oaLibMode</a></li><li data-class-item data-class-name="oareservedviewtype"><a href="oaReservedViewType.html">oaReservedViewType</a></li><li data-class-item data-class-name="oasaverecovertype"><a href="oaSaveRecoverType.html">oaSaveRecoverType</a></li><li data-class-item data-class-name="oavccap"><a href="oaVCCap.html">oaVCCap</a></li><li data-class-item data-class-name="oavcmessagetype"><a href="oaVCMessageType.html">oaVCMessageType</a></li><li data-class-item data-class-name="oavcobserver"><a href="oaVCObserver.html">oaVCObserver</a></li><li data-class-item data-class-name="oavcobservercollection"><a href="oaVCObserverCollection.html">oaVCObserverCollection</a></li><li data-class-item data-class-name="oavcobserveriter"><a href="oaVCObserverIter.html">oaVCObserverIter</a></li><li data-class-item data-class-name="oavcobserverresult"><a href="oaVCObserverResult.html">oaVCObserverResult</a></li><li data-class-item data-class-name="oavcoperation"><a href="oaVCOperation.html">oaVCOperation</a></li><li data-class-item data-class-name="oavcquerydepth"><a href="oaVCQueryDepth.html">oaVCQueryDepth</a></li><li data-class-item data-class-name="oavcsystem"><a href="oaVCSystem.html">oaVCSystem</a></li><li data-class-item data-class-name="oavcversion"><a href="oaVCVersion.html">oaVCVersion</a></li><li data-class-item data-class-name="oavcversioniter"><a href="oaVCVersionIter.html">oaVCVersionIter</a></li><li data-class-item data-class-name="oaversioncomp"><a href="oaVersionComp.html">oaVersionComp</a></li><li data-class-item data-class-name="oaview"><a href="oaView.html">oaView</a></li><li data-class-item data-class-name="oaviewdmdata"><a href="oaViewDMData.html">oaViewDMData</a></li><li data-class-item data-class-name="oaviewtype"><a href="oaViewType.html">oaViewType</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">dm</a> / oaDMData</div>
<h1 id="oadmdata">oaDMData</h1>
<p><strong>模块</strong>: <code>oapy._oa._dm</code>
<strong>导入</strong>: <code>from oapy._oa import _dm</code></p>
<h2 id="_1">概览</h2>
<p><code>oaDMData</code><code>oapy</code> 中可用,可通过 <code>_dm</code> 模块访问。</p>
<p>本页汇总 <code>oaDMData</code> 当前在 <code>oapy</code> 中可用的 Python 接口。</p>
<h2 id="_2">详细说明</h2>
<p>oaDMData objects represent database objects that can be associated with a DM library, cell, view or cellView and can be used to persistently store properties ( oaProp objects), groups ( oaGroup objects), group members ( oaGroupMember objects) and application objects (see oaAppObject )。 The oaDMData class provides the behavior that is common to oaLibDMData , oaCellDMData , oaViewDMData and oaCellViewDMData 。</p>
<h2 id="_3">方法总览</h2>
<table>
<thead>
<tr>
<th>状态</th>
<th>Python 调用</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td><code>obj.close()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.purge()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.save()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.save(saveRecoverType)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.reopen(mode)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.revert()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getLibName(libName)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getLibName(ns, libName)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getLib()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getMode()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getRefCount()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getTimeStamp(type)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.isModified()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.isRecovered()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getFeatures(dataModelRev, features)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getGroups()</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getGroups(def)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getGroupsByName(name)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getAppDefsByDataType(dataType)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getAppObjects(def)</code></td>
</tr>
<tr>
<td></td>
<td><code>obj.getAppObjectDefs()</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.open(container, mode)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.recover(container, saveRecoverType)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.find(container)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.exists(container)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.exists(container, saveRecoverType)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.destroy(container)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.destroy(container, saveRecoverType)</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.getRevNumber()</code></td>
</tr>
<tr>
<td></td>
<td><code>_dm.oaDMData.getOpenDMDataObjs()</code></td>
</tr>
</tbody>
</table>
<h2 id="_4">方法说明</h2>
<h3 id="objclose"><code>obj.close()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.close()</code></p>
<p>This function decrements the reference count of this DMData by one。 If the count goes to zero, this database is purged from memory。</p>
<p><strong>异常</strong></p>
<ul>
<li><code>oacCloseOnDMDataBeingPurged</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.close()
</code></pre>
<h3 id="objpurge"><code>obj.purge()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.purge()</code></p>
<p>This function closes and removes this DMData from memory, regardless of its reference count。 Applications sometimes inadvertently attempt to recursively purge databases, so set an exception is thrown to catch this。</p>
<p><strong>异常</strong></p>
<ul>
<li><code>oacPurgeOnDMDataBeingPurged</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.purge()
</code></pre>
<h3 id="objsave"><code>obj.save()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.save()</code></p>
<p>This function attempts to save this oaSaveRecoverType database。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>saveRecoverType</code>: Either oacAutoSaveType or oacCriticalSaveType。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacSaveReadOnlyDMData</code></li>
<li><code>oacInterfaceException</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.save()
</code></pre>
<h3 id="objsavesaverecovertype"><code>obj.save(saveRecoverType)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.save(saveRecoverType)</code></p>
<p>This function attempts to save this oaDMdata database。</p>
<p><strong>异常</strong></p>
<ul>
<li><code>oacSaveReadOnlyDMData</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.save(saveRecoverType)
</code></pre>
<h3 id="objreopenmode"><code>obj.reopen(mode)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.reopen(mode)</code></p>
<p>This function attempts to reopen this oaDMData using the specified access mode。 The contents of the DMData may be reset or even truncated depending on the new access mode。 Note that the oaDMData's refCount is not affected。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>mode</code>: mode in which to reopen this DMData database: 'r'ead-only, 'w'rite (truncate) or 'a'ppend。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacOpenUndefinedModeDMData</code></li>
<li><code>oacOpenOnDMDataBeingPurged</code></li>
<li><code>oacCannotLockDMData</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.reopen(mode)
</code></pre>
<h3 id="objrevert"><code>obj.revert()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.revert()</code></p>
<p>This function reloads the contents of this oaDMData from disk。 If the oaDMData is opened in write mode, it will be truncated。 Note that the oaDMData's access mode is not affected。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.revert()
</code></pre>
<h3 id="objgetlibnamelibname"><code>obj.getLibName(libName)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getLibName(libName)</code></p>
<p>This function returns the library name for this DMData object in the specified ns namespace。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>ns</code>: input parameter - the namespace to use for the returned library name。</li>
<li><code>libName</code>: the returned library name。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getLibName(libName)
</code></pre>
<h3 id="objgetlibnamens-libname"><code>obj.getLibName(ns, libName)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getLibName(ns, libName)</code></p>
<p>These functions returns the library name for this DMData object。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>libName</code>: the returned library name。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getLibName(ns, libName)
</code></pre>
<h3 id="objgetlib"><code>obj.getLib()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getLib()</code></p>
<p>This function returns a pointer to the lib object that this dmData database is in。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getLib()
</code></pre>
<h3 id="objgetmode"><code>obj.getMode()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getMode()</code></p>
<p>This function returns the mode ('r'ead-only, 'w'rite, or 'a'ppend) with which this DMData database is currently opened。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getMode()
</code></pre>
<h3 id="objgetrefcount"><code>obj.getRefCount()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getRefCount()</code></p>
<p>This function returns the number of times this DMData has been opened without being closed。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getRefCount()
</code></pre>
<h3 id="objgettimestamptype"><code>obj.getTimeStamp(type)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getTimeStamp(type)</code></p>
<p>This function returns the timeStamp value for the specified DM data dataType。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>type</code>: an oaDMDataType value。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacInvalidDMDataTypeForTimeStamp</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getTimeStamp(type)
</code></pre>
<h3 id="objismodified"><code>obj.isModified()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.isModified()</code></p>
<p>This function returns a boolean indicating whether or not this oaDMData database has been modified but not saved。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.isModified()
</code></pre>
<h3 id="objisrecovered"><code>obj.isRecovered()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.isRecovered()</code></p>
<p>This function returns a boolean indicating whether or not this oaDMData database has been recovered。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.isRecovered()
</code></pre>
<h3 id="objgetfeaturesdatamodelrev-features"><code>obj.getFeatures(dataModelRev, features)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getFeatures(dataModelRev, features)</code></p>
<p>This function returns the data model revision number for the database, as well as an array of the features currently in the database。 The application can iterate through the array to get the ID for each feature present。 Each feature ID corresponds to an oaFeatureIDEnum value。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dataModelRev</code>: returned data model revision。</li>
<li><code>features</code>: returned feature array。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getFeatures(dataModelRev, features)
</code></pre>
<h3 id="objgetgroups"><code>obj.getGroups()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getGroups()</code></p>
<p>These functions return collections of objects in or associated with this dmData。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>def</code>: </li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getGroups()
</code></pre>
<h3 id="objgetgroupsdef"><code>obj.getGroups(def)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getGroups(def)</code></p>
<p>This function returns the collection of groups in or associated with this oaDMData database。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getGroups(def)
</code></pre>
<h3 id="objgetgroupsbynamename"><code>obj.getGroupsByName(name)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getGroupsByName(name)</code></p>
<p>This function returns a collection of groups in or associated with this oaDMData database with the specified name。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>name</code>: the name of the groups to get。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getGroupsByName(name)
</code></pre>
<h3 id="objgetappdefsbydatatypedatatype"><code>obj.getAppDefsByDataType(dataType)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getAppDefsByDataType(dataType)</code></p>
<p>This function returns a collection of oaAppDefs of the specified dataType set on oaDMObjects in this oaDMData database。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dataType</code>: the data type to get。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getAppDefsByDataType(dataType)
</code></pre>
<h3 id="objgetappobjectsdef"><code>obj.getAppObjects(def)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getAppObjects(def)</code></p>
<p>This function returns a collection of oaAppObjects with the specified def oaAppObjectDef extension definition set on them in this oaDMData database。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>def</code>: the extension type look for。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getAppObjects(def)
</code></pre>
<h3 id="objgetappobjectdefs"><code>obj.getAppObjectDefs()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>obj.getAppObjectDefs()</code></p>
<p>This function returns a collection of oaAppObjectDefs extension definitions set on oaAppObjects in this oaDMData database。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
# assume obj is a oaDMData
obj.getAppObjectDefs()
</code></pre>
<h3 id="_dmoadmdataopencontainer-mode"><code>_dm.oaDMData.open(container, mode)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.open(container, mode)</code></p>
<p>This function attempts to open a DM data database with the specified dmObj (container) owner in the given mode。 If successful, a pointer to the DM Data is returned。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dmObj</code>: pointer to the container for (owner of) the oaDMData object。</li>
<li><code>mode</code>: mode to open this oaDMData object: 'r'ead-only, 'w'rite (truncate) or 'a'ppend。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacOpenUndefinedModeDMData</code></li>
<li><code>oacInvalidContainer</code></li>
<li><code>oacOpenOnDMDataBeingPurged</code></li>
<li><code>oacDMDataDoesNotExist</code></li>
<li><code>oacCannotLockDMData</code></li>
<li><code>oacDMDataCannotGetReadAccess</code></li>
<li><code>oacDMDataHasReadNeedWriteAccess</code></li>
<li><code>oacDMDataCannotGetWriteAccess</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.open(container, mode)
</code></pre>
<h3 id="_dmoadmdatarecovercontainer-saverecovertype"><code>_dm.oaDMData.recover(container, saveRecoverType)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.recover(container, saveRecoverType)</code></p>
<p>This function attempts to recover the DM data for the given DM object with the specified oaSaveRecoverType 。 If successful, a pointer to the DMData object is returned。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>container</code>: A pointer to the container (owner) for the oaDMData database。</li>
<li><code>saveRecoverType</code>: Either oacAutoSaveType or oacCriticalSaveType。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacSaveRecoverDMDataFileAlreadyOpened</code></li>
<li><code>oacOpenOnDMDataBeingPurged</code></li>
<li><code>oacDMDataDoesNotExist</code></li>
<li><code>oacSaveRecoverFileDoesNotExistOnDisk</code></li>
<li><code>oacInterfaceException</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.recover(container, saveRecoverType)
</code></pre>
<h3 id="_dmoadmdatafindcontainer"><code>_dm.oaDMData.find(container)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.find(container)</code></p>
<p>This function attempts to find an open DM data with the specified dmObj container (owner)。 If successful, a pointer to the DMData database is returned。 If unsuccessful, NULL is returned。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dmObj</code>: A pointer to the container (owner) for the oaDMData database。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacInvalidContainer</code></li>
<li><code>oacDMDataCannotGetReadAccess</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.find(container)
</code></pre>
<h3 id="_dmoadmdataexistscontainer"><code>_dm.oaDMData.exists(container)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.exists(container)</code></p>
<p>This function returns a boolean that indicates whether the specified oaSaveRecoverType file exists on-disk。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>container</code>: A pointer to the container (owner) for the oaDMData database。</li>
<li><code>saveRecoverType</code>: Either oacAutoSaveType or oacCriticalSaveType。</li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.exists(container)
</code></pre>
<h3 id="_dmoadmdataexistscontainer-saverecovertype"><code>_dm.oaDMData.exists(container, saveRecoverType)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.exists(container, saveRecoverType)</code></p>
<p>This function checks whether there is a DMData open that has the specified dmObj container (owner) or whether a DMData file exists on disk with a non-zero size。 This function returns if either condition is true; otherwise, it returns false。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dmObj</code>: A pointer to the container (owner) for the oaDMData database。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacInvalidContainer</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.exists(container, saveRecoverType)
</code></pre>
<h3 id="_dmoadmdatadestroycontainer"><code>_dm.oaDMData.destroy(container)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.destroy(container)</code></p>
<p>This function attempts to remove the specified oaSaveRecoverType file from disk。 It throws an exception if this file cannot be found on disk。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>container</code>: A pointer to the container for the oaDMData database。</li>
<li><code>saveRecoverType</code>: Either oacAutoSaveType or oacCriticalSaveType。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacDestroyDMDataDoesNotExist</code></li>
<li><code>oacSaveRecoverFileDoesNotExistOnDisk</code></li>
<li><code>oacInterfaceException</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.destroy(container)
</code></pre>
<h3 id="_dmoadmdatadestroycontainer-saverecovertype"><code>_dm.oaDMData.destroy(container, saveRecoverType)</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.destroy(container, saveRecoverType)</code></p>
<p>This function attempts to remove this oaDMData database from disk。 It throws an exception if the DMData is currently open or if the DMData cannot be found on disk。</p>
<p><strong>参数</strong></p>
<ul>
<li><code>dmObj</code>: A pointer to the container (owner of) for the oaDMData database。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><code>oacInvalidContainer</code></li>
<li><code>oacDestroyDMDataOpen</code></li>
<li><code>oacDestroyDMDataDoesNotExist</code></li>
<li><code>oacDMDataHasReadNeedWriteAccess</code></li>
<li><code>oacDMDataCannotGetWriteAccess</code></li>
</ul>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.destroy(container, saveRecoverType)
</code></pre>
<h3 id="_dmoadmdatagetrevnumber"><code>_dm.oaDMData.getRevNumber()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.getRevNumber()</code></p>
<p>This function returns the revision number for this DMData database。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.getRevNumber()
</code></pre>
<h3 id="_dmoadmdatagetopendmdataobjs"><code>_dm.oaDMData.getOpenDMDataObjs()</code></h3>
<p><strong>绑定状态</strong>: 已绑定</p>
<p><strong>Python 调用</strong>: <code>_dm.oaDMData.getOpenDMDataObjs()</code></p>
<p>This function returns a collection of open DM data databases。</p>
<p><strong>Python 示例</strong></p>
<pre><code class="language-python">from oapy._oa import _dm
_dm.oaDMData.getOpenDMDataObjs()
</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-close"><code>obj.close()</code></a></li><li><a href="#obj-purge"><code>obj.purge()</code></a></li><li><a href="#obj-save"><code>obj.save()</code></a></li><li><a href="#obj-save-saverecovertype"><code>obj.save(saveRecoverType)</code></a></li><li><a href="#obj-reopen-mode"><code>obj.reopen(mode)</code></a></li><li><a href="#obj-revert"><code>obj.revert()</code></a></li><li><a href="#obj-getlibname-libname"><code>obj.getLibName(libName)</code></a></li><li><a href="#obj-getlibname-ns-libname"><code>obj.getLibName(ns, libName)</code></a></li><li><a href="#obj-getlib"><code>obj.getLib()</code></a></li><li><a href="#obj-getmode"><code>obj.getMode()</code></a></li><li><a href="#obj-getrefcount"><code>obj.getRefCount()</code></a></li><li><a href="#obj-gettimestamp-type"><code>obj.getTimeStamp(type)</code></a></li><li><a href="#obj-ismodified"><code>obj.isModified()</code></a></li><li><a href="#obj-isrecovered"><code>obj.isRecovered()</code></a></li><li><a href="#obj-getfeatures-datamodelrev-features"><code>obj.getFeatures(dataModelRev, features)</code></a></li><li><a href="#obj-getgroups"><code>obj.getGroups()</code></a></li><li><a href="#obj-getgroups-def"><code>obj.getGroups(def)</code></a></li><li><a href="#obj-getgroupsbyname-name"><code>obj.getGroupsByName(name)</code></a></li><li><a href="#obj-getappdefsbydatatype-datatype"><code>obj.getAppDefsByDataType(dataType)</code></a></li><li><a href="#obj-getappobjects-def"><code>obj.getAppObjects(def)</code></a></li><li><a href="#obj-getappobjectdefs"><code>obj.getAppObjectDefs()</code></a></li><li><a href="#dm-oadmdata-open-container-mode"><code>_dm.oaDMData.open(container, mode)</code></a></li><li><a href="#dm-oadmdata-recover-container-saverecovertype"><code>_dm.oaDMData.recover(container, saveRecoverType)</code></a></li><li><a href="#dm-oadmdata-find-container"><code>_dm.oaDMData.find(container)</code></a></li><li><a href="#dm-oadmdata-exists-container"><code>_dm.oaDMData.exists(container)</code></a></li><li><a href="#dm-oadmdata-exists-container-saverecovertype"><code>_dm.oaDMData.exists(container, saveRecoverType)</code></a></li><li><a href="#dm-oadmdata-destroy-container"><code>_dm.oaDMData.destroy(container)</code></a></li><li><a href="#dm-oadmdata-destroy-container-saverecovertype"><code>_dm.oaDMData.destroy(container, saveRecoverType)</code></a></li><li><a href="#dm-oadmdata-getrevnumber"><code>_dm.oaDMData.getRevNumber()</code></a></li><li><a href="#dm-oadmdata-getopendmdataobjs"><code>_dm.oaDMData.getOpenDMDataObjs()</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>