使用梦想绘图控件做自定义实体
<div id="postmessage_232" class="t_msgfont"><font face="黑体 "><font size="3">说明</font></font><br/><font face="黑体 "><font size="3"> </font></font><font face="宋体 ">控件支持自定义实体功能,可以从</font><font face="宋体 ">McDbEntity<font face="宋体 ">继承自己的实体,在自定体实体类中,实现相关虚函数来实现实体的自定义功能。</font></font><br/><font face="宋体 "></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.2</font></font><br/></font><font face="黑体 "><font size="3"> 类的类型信息</font></font><br/><font face="黑体 "><font size="3"> </font></font><font face="宋体 ">使用</font><font face="宋体 ">MCRX_DECLARE_MEMBERS<font face="宋体 ">宏定义类的类型信息函数,宏的第一个参数是类的类名。使用例如:</font></font><br/><font face="宋体 "><font size="2">MCRX_DECLARE_MEMBERS(CLinkLine);</font></font><br/><br/><font face="宋体 "> 使用</font><font face="宋体 "> ACRX_DXF_DEFINE_MEMBERS <font face="宋体 ">宏实现类的类型信息函数。宏定义参数使用如下:</font></font><br/><font face="宋体 "></font><br/><font face="宋体 "><font size="2"> ACRX_DXF_DEFINE_MEMBERS(CLinkLine, McDbEntity,</font></font><br/><font size="2"><font face="宋体 "><br/> AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, </font></font><br/><font size="2"><font face="宋体 "><br/> AcDbProxyEntity::kAllAllowedBits, _T("LinkLine"), </font></font><br/><font size="2"><font face="宋体 "><br/> _T("MxDrawObj Test Custom Entity") );</font></font><br/><br/><font face="宋体 "></font><br/><font face="宋体 "></font>参数说明:<br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> CLinkLine </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">自定义实体的类名</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> McDbEnity </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">自定义实体的基类</font></font></font><br/><font face="宋体 "></font><font face="宋体 "> <font style="FONT-SIZE: 9pt;">AcDb::kDHL_CURRENT </font><font style="FONT-SIZE: 9pt;">当前文件版本</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> AcDb::kMReleaseCurrent </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">当前控件版本</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> AcDbProxyEntity::kAllAllowedBits </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">代理实体处理标志</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> _T("LinkLine")<br/><br/> Dfx0</font><font face="宋体 "><font style="FONT-SIZE: 9pt;">组码对应值 </font></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">_T("MxDrawObj Test Custom Entity") </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">类说明</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "> 在程序启动的时候,调用</font><font face="宋体 ">rxInit<font face="宋体 ">函数,自定义实体的类型信息注册到系统中,使用例如:</font></font><br/><font face="宋体 "><font size="2"> BOOL CCustomEntityApp::InitInstance()</font></font><br/><font face="宋体 "><font size="2"> {</font></font><br/><font face="宋体 "><font size="2"><br/> …..</font></font><br/><font face="宋体 "><font size="2"> // <font face="宋体 ">注册自定义实体类信息。</font></font></font><br/><br/><font face="宋体 "><font size="2"> CLinkBlock::rxInit();</font></font><br/><br/><font face="宋体 "><font size="2"> CLinkLine::rxInit();</font></font><br/><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.3</font></font><br/></font><font face="黑体 "><font size="3"> worldDraw</font></font><font face="宋体 ">重载该虚函数,绘制自定义实体的显示效果</font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong> Adesk::Boolean </strong></font></font></u><font face="宋体 "><font face="宋体 "><font style="FONT-SIZE: 10pt;">worldDraw</font></font><font style="FONT-SIZE: 9pt;"><br/> (</font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGiWorldDraw</font></font></u></strong><font style="FONT-SIZE: 9pt;"> * wd);;</font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> Wd </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">显示绘制的上下文对象</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font size="2"><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code0">Adesk::Boolean<br/>CLinkLine::worldDraw<br/>(AcGiWorldDraw * wd)<br/>{<br/><br/>assertReadEnabled();<br/><br/>wd->geometry().line(m_start,m_end);<br/><br/><br/>std::auto_ptr<AcDbText> spText(GetDimText() );<br/><br/>spText->worldDraw(wd);<br/><br/><br/>return Adesk::kTrue;<br/>}</code></div></font><br/><font face="宋体 "><font size="2"></font></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.4</font></font><br/></font><font face="黑体 "><font size="3"> getGripPoints</font></font><font size="3"><font face="宋体 ">重载该虚函数,返回自定义的编辑夹点</font><br/><font face="宋体 "></font><br/></font><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"></font></font></u><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>virtual Acad::ErrorStatus </strong></font></font></u><br/><font size="3">getGripPoints</font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">(</font></font></u></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGePoint3dArray& </font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>gripPoints</font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">,</font></font></u></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGeIntArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>osnapModes</font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">,</font></font></u></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGeIntArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;">
<br/>geomIds) const;</font></font></strong><br/><strong><font face="宋体 "><font size="2"></font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> gripPoints </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">返回夹点</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> osnapModes </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">暂没有使用</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;"> geomIds </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">暂没有使用</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><strong><font face="宋体 "><font size="2"><font color="#666699"></font></font></font></strong><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code1">Acad::ErrorStatus<br/>CLinkLine::getGripPoints(<br/><br/>AcGePoint3dArray&<br/>gripPoints,<br/><br/>AcGeIntArray&<br/>osnapModes,<br/><br/>AcGeIntArray&<br/>geomIds) const<br/>{<br/><br/>assertReadEnabled();<br/><br/><br/>gripPoints.append(m_start);<br/>// 返回开始点夹点<br/><br/>gripPoints.append(m_end);<br/>// 返回结束点夹点<br/><br/>gripPoints.append(m_start + (m_end - m_start) / 2.0);<br/>// 返回中点夹点。<br/><br/><br/>return Acad::eOk;<br/>}</code></div><font face="Verdana "><font face="黑体 "><font size="3">1.5</font></font><br/></font><font face="黑体 "><font size="3"> moveGripPointsAt</font></font><font face="宋体 ">重载该虚函数,处理夹点编辑结果。</font><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">virtual</font></font></u><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">Acad::ErrorStatus</font></font></u></strong>moveGripPointsAt<strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">(</font></font></u></strong><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">const</font></font></u></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGeIntArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> indices,</font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"></font></font></u></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">const</font></font></u></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGeVector3d&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> offset);</font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;">indices<br/><br/><br/>indices </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">参数是传入被编辑的夹点索引</font></font><font style="FONT-SIZE: 9pt;">, </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">其它数组元素暂没有使用。</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 9pt;">offset </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">夹点编辑的偏移量</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font face="宋体 "><font size="2"></font></font><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code2">Acad::ErrorStatus CLinkLine::moveGripPointsAt(const AcGeIntArray& indices,<br/><br/><br/>const AcGeVector3d& offset)<br/>{<br/><br/>assertWriteEnabled();<br/><br/>int iIndex = indices;<br/><br/>switch(iIndex)<br/><br/>{<br/><br/>case 0:<br/><br/>m_start = m_start + offset;<br/>// 开始点被编辑<br/><br/>break;<br/><br/>case 1:<br/><br/>m_end = m_end + offset;<br/>// 结束点被编辑<br/><br/>break;<br/><br/>case 2:<br/><br/>m_start = m_start + offset;<br/>// 中点被编辑<br/><br/>m_end = m_end + offset;<br/>// 中点被编辑<br/><br/>break;<br/><br/>}<br/><br/>return Mcad::eOk;<br/>}</code></div><font face="Verdana "><font face="黑体 "><font size="3"></font></font></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.6</font></font><br/></font><font face="黑体 "><font size="3"> getGeomExtents</font></font><font face="宋体 ">重载该虚函数,返回自定义实体的外包矩形框</font><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">virtual</font></font></u><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">Acad::ErrorStatus</font></font></u></strong><br/>getGeomExtents<strong>(</strong><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcDbExtents&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> extents) const;</font></font></strong><br/><br/><font face="宋体 "><strong><font size="2"><font color="#666699"></font></font></strong></font><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><strong>extents </strong><font face="宋体 "><font style="FONT-SIZE: 9pt;">返回自定义实体外包矩形框。</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font size="2"><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code3">Acad::ErrorStatus<br/>CLinkLine::getGeomExtents(AcDbExtents& extents) const<br/>{<br/><br/>assertReadEnabled();<br/><br/>extents.set(m_start,m_end);<br/><br/>return Mcad::eOk;<br/>}</code></div></font><br/><font face="宋体 "><font size="2"></font></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.7</font></font><br/></font><font face="黑体 "><font size="3"> getOsnapPoints</font></font><font size="3"><font face="宋体 ">重载该虚函数,返回自定义实体的捕捉点</font><br/><font face="宋体 "><strong><font color="#666699"></font></strong></font><br/></font><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>virtual Acad::ErrorStatus</strong></font></font></u><br/><font size="3">getOsnapPoints(<br/></font><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcDb::OsnapMode</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>osnapMode,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>gsSelectionMark,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">const AcGePoint3d&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>pickPoint,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">const AcGePoint3d&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>lastPoint,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">const AcGeMatrix3d&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> viewXform,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcGePoint3dArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>snapPoints,</font></font></strong><br/><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font></strong><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcDbIntArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/>geomIds) const;</font></font></strong><br/><strong><font face="宋体 "><font size="2"></font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;"></font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">osnapMode</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;"> </font><font face="宋体 "><font style="FONT-SIZE: 9pt;">捕捉点类型,通过该变量可以确定需要返回什么类型的捕捉点</font></font></font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">gsSelectionMark </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">暂没有使用</font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">pickPoint </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">当前输入点</font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">lastPoint </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">上一次的输入点</font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">viewXform </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">暂没有使用</font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">snapPoints </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">返回捕捉点</font></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">geomIds </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">暂没有使用</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font face="宋体 "></font><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code4">Acad::ErrorStatus<br/>CLinkLine::getOsnapPoints(<br/><br/>AcDb::OsnapMode<br/>osnapMode,<br/><br/>int<br/>gsSelectionMark,<br/><br/>const AcGePoint3d&<br/>pickPoint,<br/><br/>const AcGePoint3d&<br/>lastPoint,<br/><br/>const AcGeMatrix3d& viewXform,<br/><br/>AcGePoint3dArray&<br/>snapPoints,<br/><br/>AcDbIntArray&<br/>geomIds) const<br/>{<br/><br/>assertReadEnabled();<br/><br/><br/>if(osnapMode == McDb::kOsModeEnd)<br/><br/>{<br/><br/>// 返端点。<br/><br/>snapPoints.append(m_start);<br/><br/>snapPoints.append(m_end);<br/><br/>}<br/><br/>else if(osnapMode == McDb::kOsModeMid)<br/><br/>{<br/><br/>// 返回的是中点。<br/><br/>snapPoints.append(m_start + (m_end - m_start) / 2.0);<br/><br/>}<br/><br/>return Mcad::eOk;<br/>}</code></div><font face="Verdana "><font face="黑体 "><font size="3">1.8</font></font><br/></font><font face="黑体 "><font size="3"> explode</font></font><font face="宋体 ">重载该虚函数,返回自定义实体打碎后的实体,在控件中,自定义实体保存在到</font><font face="宋体 ">dwg<font face="宋体 ">图中时,使用是块引用来保存,控件使用该函数得到自定义实体在块引用中的实体数据。</font></font><br/><font face="宋体 "></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><strong><font face="宋体 "><font size="2"><font color="#666699"></font></font></font></strong><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">virtual</font></font></u><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">Acad::ErrorStatus</font></font></u></strong><br/><br/>explode<strong>(</strong><br/><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AcDbVoidPtrArray&</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> entitySet) const;</font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">entitySet </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">返回打碎后的基本实体。实体指针内存控件释放。</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font face="宋体 "></font><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code5">Acad::ErrorStatus<br/>CLinkLine::explode(AcDbVoidPtrArray& entitySet) const<br/>{<br/><br/>assertReadEnabled();<br/><br/>AcDbLine* pLine = new AcDbLine(m_start,m_end);<br/><br/>entitySet.append(pLine);<br/><br/>entitySet.append(GetDimText() );<br/><br/><br/>return Acad::eOk;<br/>}</code></div><font face="宋体 "></font><br/><font face="Verdana "><font face="黑体 "><font size="3">1.9</font></font><br/></font><font face="黑体 "><font size="3"> dwgInFields</font></font><font face="宋体 ">重载该虚函数,响应控件系统,读取自定义实体数据,在从文件读取实体,复制实体等地方都会调用该函数。</font><br/><font face="宋体 "></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><strong><font face="宋体 "><font size="2"><font color="#666699"></font></font></font></strong><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>virtual Acad::ErrorStatus</strong></font></font></u>dwgInFields<strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">(AcDbDwgFiler* </font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;">pFiler);</font></font></strong><br/><strong><font face="宋体 "><font size="2"></font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">pFiler </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">数据归档对象,在这个函数,使用该对象读取数据。</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><font face="宋体 "><font size="2"></font></font><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code6">Acad::ErrorStatus CLinkLine::dwgInFields (AcDbDwgFiler* pFiler)<br/>{<br/><br/>assertWriteEnabled();<br/><br/>if(pFiler->filerType() != McDb::kCustomEntityFileFiler)<br/><br/>{<br/><br/>Mcad::ErrorStatus es;<br/><br/>if ((es = McDbEntity::dwgInFields(pFiler)) != Mcad::eOk)<br/><br/>{<br/><br/>return es;<br/><br/>}<br/><br/>}<br/><br/><br/>int lVar = 1;<br/><br/>pFiler->readInt(&lVar);<br/><br/><br/>pFiler->readPoint3d(&m_start);<br/><br/>pFiler->readPoint3d(&m_end);<br/><br/><br/>return Mcad::eOk;<br/>}</code></div><font face="Verdana "><font face="黑体 "><font size="3">1.10</font></font><br/></font><font face="黑体 "><font size="3"> dwgOutFields</font></font><font face="宋体 ">重载该虚函数,响应控件系统,写入自定义实体数据,在把实体写入文件时,复制实体等地方都会调用该函数。</font><br/><font face="宋体 "></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">VC<font face="宋体 ">接口:</font></font></font></strong></font><br/><strong><font face="宋体 "><font size="2"><font color="#666699"></font></font></font></strong><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong> virtual Acad::ErrorStatus</strong></font></font></u>dwgOutFields<strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">(AcDbDwgFiler*</font></font></u></strong><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> pFiler) const;</font></font></strong><br/><strong><font face="宋体 "><font size="2"></font></font></strong><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;"> pFiler </font></font><font face="宋体 "><font style="FONT-SIZE: 10pt;">数据归档对象,在这个函数,使用该对象写入数据。</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="宋体 "></font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参考例程:</font></font></strong></font><br/><br/><font face="宋体 "><font size="2"></font></font><div class="blockcode"><em>复制内容到剪贴板</em>
<h5>代码:</h5><code id="code7">Acad::ErrorStatus CLinkLine::dwgOutFields(AcDbDwgFiler* pFiler) const<br/>{<br/>assertReadEnabled();<br/><br/><br/>if(pFiler->filerType() != McDb::kCustomEntityFileFiler)<br/><br/>{<br/><br/>Mcad::ErrorStatus es;<br/><br/>if ((es = McDbEntity::dwgOutFields(pFiler)) != Mcad::eOk)<br/><br/>{<br/><br/>return es;<br/><br/>}<br/><br/>}<br/><br/><br/>pFiler->writeInt(LINKLINE_VERSION);<br/><br/>pFiler->writePoint3d(m_start);<br/><br/>pFiler->writePoint3d(m_end);<br/><br/><br/>return Mcad::eOk;<br/>}</code></div><font face="Verdana "><font face="黑体 "><font size="3">1.11</font></font><br/></font><font face="黑体 "><font size="3"></font></font><br/><font face="黑体 "><font size="3">控件例程说明</font></font><br/><font face="黑体 "><font size="3"> </font></font><font face="宋体 ">在控件安装目录下的</font><font face="宋体 ">samples\CustomEntity\ CustomEntity.sln<font face="宋体 ">例程,演示了自定义实体现。在例程实现连接块</font>CLinkBlock<font face="宋体 ">自定义实体,</font>CLinkLine<font face="宋体 ">自定义实体,</font></font><br/><font face="宋体 "> CLinkBlock<font face="宋体 ">类显示通过块引用显示,绘图捕捉点通过块记录中的块属性定义文本来确定,当该实体被编辑后,会自动移动与该实体连接的连接线,实现个连动效果。</font></font><br/><font face="宋体 "> CLinkLine <font face="宋体 ">类实现一个线段实体功能,并带有长度标注功能。</font></font></div> <p>太佩服了,虽然自定义实体还不是很懂,但能研究到这里真是厉害阿~~~</p><p>貌似有些代码完全抄arx的~~</p>
页:
[1]