wangdong79 发表于 2004-7-4 22:42:00

为何不能以写的模式打开实体?

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.95pt; mso-char-indent-count: 1.71; mso-char-indent-size: 14.0pt">我有一个这样的问题需要请同仁,需要帮助。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.95pt; mso-char-indent-count: 1.71; mso-char-indent-size: 14.0pt">在我的程序中的某一个函数书中调用了如下函数:<o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman">acdbOpenObject(p_Entity,m_shitiId,AcDb::kForWrite,Adesk::kFalse);<o:p></o:p></FONT>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">但是返回的值却是<FONT face="Times New Roman">eLockViolation</FONT>,使得我在调用这个函数后的代码中对<FONT face="Times New Roman"> p_Entity </FONT>的写操作失败。我只能将上面的函数改成如下的形式<o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman">acdbOpenObject(p_Entity,m_shitiId,AcDb::kForRead,Adesk::kFalse);<o:p></o:p></FONT>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">返回值虽然是<FONT face="Times New Roman">eOk</FONT>,但是这种形式同样不得对实体进行写操作。<o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.95pt; mso-char-indent-count: 1.71; mso-char-indent-size: 14.0pt">我该如何做是好呢?<o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.95pt; mso-char-indent-count: 1.71; mso-char-indent-size: 14.0pt">愿得到同仁提示和帮助。谢谢<o:p></o:p>

easypower 发表于 2004-7-5 09:24:00

你把你的文档锁定.

dipenghao 发表于 2004-7-6 08:31:00

打开实体模式下,不要进行输入输出操作,有时候会影响

wangdong79 发表于 2004-7-7 21:21:00

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 23.95pt; mso-char-indent-count: 1.71; mso-char-indent-size: 14.0pt">在我的程序中的某一个函数书中调用了如下函数:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>



<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman">acdbOpenObject(p_Entity,m_shitiId,AcDb::kForWrite,Adesk::kFalse);<o:p></o:p></FONT>



<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">但是返回的值却是<FONT face="Times New Roman">eLockViolation</FONT>,使得我在调用这个函数后的代码中对<FONT face="Times New Roman"> p_Entity </FONT>的写操作失败。我只能将上面的函数改成如下的形式<o:p></o:p>



<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman">acdbOpenObject(p_Entity,m_shitiId,AcDb::kForRead,Adesk::kFalse);<o:p></o:p></FONT>



<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">返回值虽然是<FONT face="Times New Roman">eOk</FONT>,但是这种形式同样不得对实体进行写操作。


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><A name=32244><FONT color=#000066><B>easypower</B></FONT></A>讲把文档锁定,那么如何锁定文档呢?请<A name=32244><FONT color=#000066><B>easypower</B></FONT></A>指教

zhubohobby 发表于 2004-8-4 18:06:00

不能够写打开,一定是在前面已经将对象打开了没关闭,用读打开能顺利打开是因为对象在以通知或读打开后还能再以读形式打开(最多可读打开256次)。


既然你是读打开,当然只能读不能写了,这还有疑问吗?


建议检查前面打开对象的代码,使用完毕后关闭,或者不关闭而在该处升级为写打开,p_Entity-&gt;upgradeOpen();然后就可以做写操作了。

zfbj 发表于 2004-8-26 09:39:00

锁定和打开文档的方法:


acDocManager-&gt;lockDocument(curDoc(), AcAp::kWrite);


// 你要执行的操作<BR>        acDocManager-&gt;unlockDocument(curDoc());
页: [1]
查看完整版本: 为何不能以写的模式打开实体?