保存/暂存文档时,客户端通知新属性
<p>[TOC]</p>
<h4>概述</h4>
<p>插件可以通过多种命令,让客户端打开“BOM编辑窗口”,例如【EditProperty】、【EditBomLibrary_New】、【EditBomLiarary_Modify】、【ImportDocument】、【CheckInDocument】等。
当我们点击右上角关闭窗口时,客户端会按顺序回调【SwitchToCAD】和【EnableOperate】指令。</p>
<p>当我们在BOM编辑窗口中点击左上角的<strong>暂存</strong>或<strong>保存</strong>按钮时,会进行以下步骤:</p>
<ol>
<li>客户端首先会将修改后的属性信息回调给插件,并开始等待。每种不同的打开指令,客户端会携带不同的windowId;</li>
<li>此时插件可以做图纸反写操作,无论反写是否成功,都应该再次将反写结果通知给客户端,通知请参考【[通知客户端属性修改结果](<a href="https://www.showdoc.com.cn/2598834505893998/11558482054289591">https://www.showdoc.com.cn/2598834505893998/11558482054289591</a> "通知客户端属性修改结果")】;</li>
<li>客户端收到结果指令,结束等待。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=980c933e1aa7061b91e8e1bdbe6fcd16&amp;file=file.png" alt="" /></li>
</ol>
<p>> 保存:客户端会先与系统进行校验,校验通过,才会回调插件进行反写;
> 暂存:无须系统校验,客户端直接回调插件进行反写,但仅用户在客户端修改了图纸属性才会回调。
> 上传:上传前会先调用保存的逻辑,包括校验、反写,最后才上传到系统中。</p>
<h4>客户端回调 1 - 关闭窗口</h4>
<h5>回调命令 1</h5>
<p>当窗口关闭时,按顺序回调两个指令</p>
<ul>
<li><code>SwitchToCAD 109</code></li>
<li><code>EnableOperate 111</code></li>
</ul>
<h5>回调示例 1</h5>
<pre><code>{
&quot;abstractCadType&quot;: &quot;_3d&quot;,
&quot;cadCommand&quot;: 109,
&quot;cadType&quot;: &quot;solidworks&quot;,
&quot;dataModel&quot;: true
}</code></pre>
<pre><code>{
&quot;abstractCadType&quot;: &quot;_3d&quot;,
&quot;cadCommand&quot;: 111,
&quot;cadType&quot;: &quot;solidworks&quot;,
&quot;dataModel&quot;: true
}
</code></pre>
<h5>回调参数说明 1</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">dataModel</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">bool</td>
<td>是否关闭窗口成功</td>
</tr>
</tbody>
</table>
<h4>客户端回调 2 - 在窗口点击【保存】时</h4>
<h5>回调命令 2</h5>
<ul>
<li><code>ModifyDocContent 6</code></li>
</ul>
<h5>回调示例 2</h5>
<pre><code>{
&quot;cadCommand&quot;: 6,
&quot;cadType&quot;: &quot;solidworks&quot;,
&quot;abstractCadType&quot;: &quot;_3d&quot;,
&quot;windowId&quot;: &quot;&quot;,
&quot;callBackData&quot;: {
&quot;windowId&quot;: &quot;BomPropEditForm&quot;,
&quot;nextCommand&quot;: &quot;&quot;
},
&quot;dataModel&quot;: [
{
&quot;cadId&quot;: &quot;2f99ce53-3c4a-4b18-b6c7-7c88bb50252e&quot;,
&quot;directoryPath&quot;: &quot;D:\\Repos\\非标CAD指导\\Kingdee.PLM.CAD.CustomPlugin\\Kingdee.PLM.CAD.CustomPlugin.Demo\\bin\\Debug\\素材&quot;,
&quot;fileName&quot;: &quot;根装配件.SLDASM&quot;,
&quot;property&quot;: [
{
&quot;propExpressionInfo&quot;: {
},
&quot;propTypeInfo&quot;: {
},
&quot;propInfo&quot;: {
&quot;PARTNO&quot;: &quot;Jair.Test.001&quot;,
&quot;PARTNAME&quot;: &quot;Jair测试装配件001&quot;,
&quot;DRAWNO&quot;: &quot;0001&quot;,
&quot;SPEC&quot;: &quot;320.29&quot;,
&quot;MATERIAL&quot;: &quot;1111&quot;,
&quot;COLOUR&quot;: &quot;蓝色&quot;,
&quot;VERSION&quot;: &quot;A&quot;
},
&quot;cadId&quot;: &quot;2f99ce53-3c4a-4b18-b6c7-7c88bb50252e&quot;,
&quot;propModelId&quot;: &quot;462a8d7b-30f8-4331-8cb7-71064cf44470&quot;,
&quot;propInfoType&quot;: &quot;默认&quot;,
&quot;child&quot;: [
{
&quot;relationId&quot;: &quot;1ebdb56f-ab11-4c39-9efc-b093563994c1&quot;,
&quot;propModelId&quot;: &quot;005e2e01-4f7c-4603-9ac0-551798188cdb&quot;,
&quot;excludeFromBom&quot;: false,
&quot;compressState&quot;: &quot;Normal&quot;,
&quot;relatedProp&quot;: {
&quot;count&quot;: &quot;1&quot;,
&quot;remark&quot;: &quot;&quot;
}
}
]
}
],
&quot;relatedPropInfo&quot;: [
{
}
]
},
{
&quot;cadId&quot;: &quot;b23e6d44-1bdd-4d82-b327-86189060e141&quot;,
&quot;directoryPath&quot;: &quot;D:\\Repos\\非标CAD指导\\Kingdee.PLM.CAD.CustomPlugin\\Kingdee.PLM.CAD.CustomPlugin.Demo\\bin\\Debug\\素材&quot;,
&quot;fileName&quot;: &quot;子零件.SLDPRT&quot;,
&quot;property&quot;: [
{
&quot;propExpressionInfo&quot;: {
},
&quot;propTypeInfo&quot;: {
},
&quot;propInfo&quot;: {
&quot;PARTNO&quot;: &quot;Jair.Test.002&quot;,
&quot;PARTNAME&quot;: &quot;Jair测试装配件002&quot;,
&quot;DRAWNO&quot;: &quot;0002&quot;,
&quot;SPEC&quot;: &quot;320.29&quot;,
&quot;MATERIAL&quot;: &quot;1111&quot;,
&quot;COLOUR&quot;: &quot;蓝色&quot;,
&quot;VERSION&quot;: &quot;A&quot;
},
&quot;cadId&quot;: &quot;b23e6d44-1bdd-4d82-b327-86189060e141&quot;,
&quot;propModelId&quot;: &quot;005e2e01-4f7c-4603-9ac0-551798188cdb&quot;,
&quot;propInfoType&quot;: &quot;默认&quot;,
&quot;child&quot;: [
]
}
],
&quot;relatedPropInfo&quot;: [
{
&quot;relationId&quot;: &quot;1ebdb56f-ab11-4c39-9efc-b093563994c1&quot;,
&quot;propModelId&quot;: &quot;005e2e01-4f7c-4603-9ac0-551798188cdb&quot;,
&quot;excludeFromBom&quot;: false,
&quot;compressState&quot;: &quot;Normal&quot;,
&quot;relatedProp&quot;: {
&quot;count&quot;: &quot;1&quot;,
&quot;remark&quot;: &quot;&quot;
}
}
]
}
]
}</code></pre>
<h5>回调参数说明 2</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">dataModel</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;"><a href="#doc_object">doc_object</a></td>
<td>数据对象</td>
</tr>
<tr>
<td style="text-align: left;">callBackData</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;"><a href="#callback_object">callback_object</a></td>
<td>回调数据</td>
</tr>
</tbody>
</table>
<p><strong><span id = "doc_object">doc_object</span> 参数</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">cadId</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>请求时文档模型(fileModel)携带的Guid</td>
</tr>
<tr>
<td style="text-align: left;">directoryPath</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>CAD文档的目录绝对路径</td>
</tr>
<tr>
<td style="text-align: left;">fileName</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>CAD文档名称</td>
</tr>
<tr>
<td style="text-align: left;">property</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">array[property_object]</td>
<td><strong>修改后</strong>的标准属性对象模型集合,具体详见[这里](<a href="https://www.showdoc.com.cn/kingdeeplm/11558477351049674">https://www.showdoc.com.cn/kingdeeplm/11558477351049674</a> "这里"),一般只需关注<strong>propInfo</strong></td>
</tr>
<tr>
<td style="text-align: left;">relatedPropInfo</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">array[property_child]</td>
<td>对应请求时<strong>propModels</strong>的<strong>child</strong>,详见标准模型的property_child</td>
</tr>
</tbody>
</table>
<p><strong><span id = "callback_object">callback_object</span> 参数</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">windowId</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>窗口Id</td>
</tr>
<tr>
<td style="text-align: left;">nextCommand</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>下一条指令</td>
</tr>
</tbody>
</table>