<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Unexpected results! worldDraw() question! in ObjectARX Forum</title>
    <link>https://forums.autodesk.com/t5/objectarx-forum/unexpected-results-worlddraw-question/m-p/311260#M39827</link>
    <description>I have created a test entity, mjbSmiley. It simply a happy face with a&lt;BR /&gt;
center an a diameter member variable. Now I was able to save this but when I&lt;BR /&gt;
opened it, the mouth and eyes were missing. I created the features in&lt;BR /&gt;
worldDraw(). Now, I thought worldDraw was responsible for drawing the&lt;BR /&gt;
object. Here is my code:&lt;BR /&gt;
&lt;BR /&gt;
//*******************************************&lt;BR /&gt;
Adesk::Boolean mjbSmiley::worldDraw(AcGiWorldDraw* mode)&lt;BR /&gt;
{&lt;BR /&gt;
 assertReadEnabled();&lt;BR /&gt;
&lt;BR /&gt;
 double dOffset = (m_dia / 1) / 5;&lt;BR /&gt;
 AcGeVector3d vecVert(0.0, dOffset, 0.0);&lt;BR /&gt;
 AcGeVector3d vecHorz(dOffset, 0.0, 0.0);&lt;BR /&gt;
&lt;BR /&gt;
 AcGePoint3d leftEye, rightEye, leftCorner, bottom, rightCorner;&lt;BR /&gt;
 leftEye = (m_center - vecHorz) + vecVert;&lt;BR /&gt;
 rightEye = (m_center + vecHorz) + vecVert;&lt;BR /&gt;
 leftCorner = m_center - vecHorz;&lt;BR /&gt;
 bottom = m_center - vecVert;&lt;BR /&gt;
 rightCorner = m_center + vecHorz;&lt;BR /&gt;
&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(4);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(m_center, m_dia / 2, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(3);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(leftEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(rightEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(1);&lt;BR /&gt;
 if(!Adesk::kFalse == mode-&amp;gt;geometry().circularArc(leftCorner, bottom,&lt;BR /&gt;
rightCorner, kAcGiArcSimple))&lt;BR /&gt;
  printf("Mouth unsuccessful!");&lt;BR /&gt;
&lt;BR /&gt;
 return AcDbEntity::worldDraw(mode);&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus mjbSmiley::dwgInFields(AcDbDwgFiler* pFiler)&lt;BR /&gt;
{&lt;BR /&gt;
 assertWriteEnabled();&lt;BR /&gt;
 Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgInFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgInFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Read version number.&lt;BR /&gt;
 Adesk::UInt16 version;&lt;BR /&gt;
 pFiler-&amp;gt;readItem(&amp;amp;version);&lt;BR /&gt;
 if (version &amp;gt; VERSION_MJBSMILEY)&lt;BR /&gt;
  return Acad::eMakeMeProxy;&lt;BR /&gt;
&lt;BR /&gt;
 // Read the data members.&lt;BR /&gt;
 switch (version)&lt;BR /&gt;
 {&lt;BR /&gt;
 case (1):&lt;BR /&gt;
  pFiler-&amp;gt;readPoint3d(&amp;amp;m_center);&lt;BR /&gt;
  pFiler-&amp;gt;readDouble(&amp;amp;m_dia);&lt;BR /&gt;
  break;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus mjbSmiley::dwgOutFields(AcDbDwgFiler* pFiler) const&lt;BR /&gt;
{&lt;BR /&gt;
 assertReadEnabled();&lt;BR /&gt;
 Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgOutFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgOutFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Write version number.&lt;BR /&gt;
 pFiler-&amp;gt;writeItem((Adesk::UInt16) VERSION_MJBSMILEY);&lt;BR /&gt;
 pFiler-&amp;gt;writePoint3d(m_center);&lt;BR /&gt;
 pFiler-&amp;gt;writeDouble(m_dia);&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
/********************************************&lt;BR /&gt;
&lt;BR /&gt;
Now, why did worldDraw not draw the eyes and mouth of my mjbSmiley entity?&lt;BR /&gt;
&lt;BR /&gt;
Mike B</description>
    <pubDate>Thu, 08 Aug 2002 17:40:06 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2002-08-08T17:40:06Z</dc:date>
    <item>
      <title>Unexpected results! worldDraw() question!</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/unexpected-results-worlddraw-question/m-p/311260#M39827</link>
      <description>I have created a test entity, mjbSmiley. It simply a happy face with a&lt;BR /&gt;
center an a diameter member variable. Now I was able to save this but when I&lt;BR /&gt;
opened it, the mouth and eyes were missing. I created the features in&lt;BR /&gt;
worldDraw(). Now, I thought worldDraw was responsible for drawing the&lt;BR /&gt;
object. Here is my code:&lt;BR /&gt;
&lt;BR /&gt;
//*******************************************&lt;BR /&gt;
Adesk::Boolean mjbSmiley::worldDraw(AcGiWorldDraw* mode)&lt;BR /&gt;
{&lt;BR /&gt;
 assertReadEnabled();&lt;BR /&gt;
&lt;BR /&gt;
 double dOffset = (m_dia / 1) / 5;&lt;BR /&gt;
 AcGeVector3d vecVert(0.0, dOffset, 0.0);&lt;BR /&gt;
 AcGeVector3d vecHorz(dOffset, 0.0, 0.0);&lt;BR /&gt;
&lt;BR /&gt;
 AcGePoint3d leftEye, rightEye, leftCorner, bottom, rightCorner;&lt;BR /&gt;
 leftEye = (m_center - vecHorz) + vecVert;&lt;BR /&gt;
 rightEye = (m_center + vecHorz) + vecVert;&lt;BR /&gt;
 leftCorner = m_center - vecHorz;&lt;BR /&gt;
 bottom = m_center - vecVert;&lt;BR /&gt;
 rightCorner = m_center + vecHorz;&lt;BR /&gt;
&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(4);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(m_center, m_dia / 2, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(3);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(leftEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(rightEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(1);&lt;BR /&gt;
 if(!Adesk::kFalse == mode-&amp;gt;geometry().circularArc(leftCorner, bottom,&lt;BR /&gt;
rightCorner, kAcGiArcSimple))&lt;BR /&gt;
  printf("Mouth unsuccessful!");&lt;BR /&gt;
&lt;BR /&gt;
 return AcDbEntity::worldDraw(mode);&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus mjbSmiley::dwgInFields(AcDbDwgFiler* pFiler)&lt;BR /&gt;
{&lt;BR /&gt;
 assertWriteEnabled();&lt;BR /&gt;
 Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgInFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgInFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Read version number.&lt;BR /&gt;
 Adesk::UInt16 version;&lt;BR /&gt;
 pFiler-&amp;gt;readItem(&amp;amp;version);&lt;BR /&gt;
 if (version &amp;gt; VERSION_MJBSMILEY)&lt;BR /&gt;
  return Acad::eMakeMeProxy;&lt;BR /&gt;
&lt;BR /&gt;
 // Read the data members.&lt;BR /&gt;
 switch (version)&lt;BR /&gt;
 {&lt;BR /&gt;
 case (1):&lt;BR /&gt;
  pFiler-&amp;gt;readPoint3d(&amp;amp;m_center);&lt;BR /&gt;
  pFiler-&amp;gt;readDouble(&amp;amp;m_dia);&lt;BR /&gt;
  break;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus mjbSmiley::dwgOutFields(AcDbDwgFiler* pFiler) const&lt;BR /&gt;
{&lt;BR /&gt;
 assertReadEnabled();&lt;BR /&gt;
 Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgOutFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgOutFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Write version number.&lt;BR /&gt;
 pFiler-&amp;gt;writeItem((Adesk::UInt16) VERSION_MJBSMILEY);&lt;BR /&gt;
 pFiler-&amp;gt;writePoint3d(m_center);&lt;BR /&gt;
 pFiler-&amp;gt;writeDouble(m_dia);&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
/********************************************&lt;BR /&gt;
&lt;BR /&gt;
Now, why did worldDraw not draw the eyes and mouth of my mjbSmiley entity?&lt;BR /&gt;
&lt;BR /&gt;
Mike B</description>
      <pubDate>Thu, 08 Aug 2002 17:40:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/unexpected-results-worlddraw-question/m-p/311260#M39827</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2002-08-08T17:40:06Z</dc:date>
    </item>
    <item>
      <title>Re: Unexpected results! worldDraw() question!</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/unexpected-results-worlddraw-question/m-p/311261#M39828</link>
      <description>Hi Mike,&lt;BR /&gt;
&lt;BR /&gt;
I tested your code for fun and didn't have any problems... I changed the&lt;BR /&gt;
class name and added the code to the AcGi traits sample... The complete&lt;BR /&gt;
entity code is pasted below. I suspect that the problem has to do with the&lt;BR /&gt;
initialization of the m_center and m_dia variables. You might try steping&lt;BR /&gt;
through the code to make sure these values are always populated with correct&lt;BR /&gt;
numbers.&lt;BR /&gt;
&lt;BR /&gt;
Here's the code I tested. You can build it just by replacing the&lt;BR /&gt;
.\docsamps\acgismps\traits\traits.cpp with the code below.&lt;BR /&gt;
&lt;BR /&gt;
#include &lt;STRING.H&gt;&lt;BR /&gt;
#include &lt;STDLIB.H&gt;&lt;BR /&gt;
#include &lt;STDIO.H&gt;&lt;BR /&gt;
#include &lt;MATH.H&gt;&lt;BR /&gt;
#include "aced.h"&lt;BR /&gt;
#include "dbsymtb.h"&lt;BR /&gt;
#include "dbapserv.h"&lt;BR /&gt;
#include "acgi.h"&lt;BR /&gt;
&lt;BR /&gt;
// function prototypes&lt;BR /&gt;
//&lt;BR /&gt;
// THE FOLLOWING CODE APPEARS IN THE SDK DOCUMENT.&lt;BR /&gt;
&lt;BR /&gt;
static Acad::ErrorStatus&lt;BR /&gt;
getLinetypeIdFromString(const char* str, AcDbObjectId&amp;amp; id); static&lt;BR /&gt;
Acad::ErrorStatus getLayerIdFromString(const char* str, AcDbObjectId&amp;amp; id);&lt;BR /&gt;
&lt;BR /&gt;
// END CODE APPEARING IN SDK DOCUMENT.&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
class AsdkTraitsSamp: public AcDbEntity&lt;BR /&gt;
{&lt;BR /&gt;
public:&lt;BR /&gt;
&lt;BR /&gt;
    ACRX_DECLARE_MEMBERS(AsdkTraitsSamp);&lt;BR /&gt;
    virtual Adesk::Boolean worldDraw(AcGiWorldDraw *);&lt;BR /&gt;
    Acad::ErrorStatus transformBy(const AcGeMatrix3d &amp;amp;);&lt;BR /&gt;
 Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;&lt;BR /&gt;
 Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);&lt;BR /&gt;
&lt;BR /&gt;
 double m_dia;&lt;BR /&gt;
 AcGePoint3d m_center;&lt;BR /&gt;
&lt;BR /&gt;
};&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
ACRX_DXF_DEFINE_MEMBERS(AsdkTraitsSamp,AcDbEntity,&lt;BR /&gt;
AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, 0,\&lt;BR /&gt;
    ASDKTRAITSSAMP,AsdkTraits Sample);&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus AsdkTraitsSamp::transformBy(&lt;BR /&gt;
    const AcGeMatrix3d &amp;amp;xfm)&lt;BR /&gt;
{&lt;BR /&gt;
    return Acad::eOk;&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
//*******************************************&lt;BR /&gt;
Adesk::Boolean AsdkTraitsSamp::worldDraw(AcGiWorldDraw* mode)&lt;BR /&gt;
{&lt;BR /&gt;
 assertReadEnabled();&lt;BR /&gt;
&lt;BR /&gt;
 double dOffset = (m_dia / 1) / 5;&lt;BR /&gt;
 AcGeVector3d vecVert(0.0, dOffset, 0.0);&lt;BR /&gt;
 AcGeVector3d vecHorz(dOffset, 0.0, 0.0);&lt;BR /&gt;
&lt;BR /&gt;
 AcGePoint3d leftEye, rightEye, leftCorner, bottom, rightCorner;  leftEye =&lt;BR /&gt;
(m_center - vecHorz) + vecVert;  rightEye = (m_center + vecHorz) + vecVert;&lt;BR /&gt;
leftCorner = m_center - vecHorz;  bottom = m_center - vecVert;  rightCorner&lt;BR /&gt;
= m_center + vecHorz;&lt;BR /&gt;
&lt;BR /&gt;
 mode-&amp;gt;subEntityTraits().setColor(4);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(m_center, m_dia / 2, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
mode-&amp;gt;subEntityTraits().setColor(3);&lt;BR /&gt;
 mode-&amp;gt;geometry().circle(leftEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
mode-&amp;gt;geometry().circle(rightEye, m_dia / 10, AcGeVector3d(0.0, 0.0, 1.0));&lt;BR /&gt;
mode-&amp;gt;subEntityTraits().setColor(1);&lt;BR /&gt;
 if(!Adesk::kFalse == mode-&amp;gt;geometry().circularArc(leftCorner, bottom,&lt;BR /&gt;
rightCorner, kAcGiArcSimple))&lt;BR /&gt;
  printf("Mouth unsuccessful!");&lt;BR /&gt;
&lt;BR /&gt;
 return AcDbEntity::worldDraw(mode);&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus AsdkTraitsSamp::dwgInFields(AcDbDwgFiler* pFiler) {&lt;BR /&gt;
&lt;BR /&gt;
 assertWriteEnabled();  Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgInFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgInFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Read version number.&lt;BR /&gt;
 Adesk::UInt16 version;&lt;BR /&gt;
 pFiler-&amp;gt;readItem(&amp;amp;version);&lt;BR /&gt;
 if (version &amp;gt; 1.0)&lt;BR /&gt;
  return Acad::eMakeMeProxy;&lt;BR /&gt;
&lt;BR /&gt;
 // Read the data members.&lt;BR /&gt;
 switch (version)&lt;BR /&gt;
 {&lt;BR /&gt;
 case (1):&lt;BR /&gt;
  pFiler-&amp;gt;readPoint3d(&amp;amp;m_center);&lt;BR /&gt;
  pFiler-&amp;gt;readDouble(&amp;amp;m_dia);&lt;BR /&gt;
  break;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
Acad::ErrorStatus AsdkTraitsSamp::dwgOutFields(AcDbDwgFiler* pFiler) const {&lt;BR /&gt;
&lt;BR /&gt;
 assertReadEnabled();  Acad::ErrorStatus es;&lt;BR /&gt;
&lt;BR /&gt;
 // Call dwgOutFields from AcDbEntity&lt;BR /&gt;
 if ((es = AcDbEntity::dwgOutFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
  return es;&lt;BR /&gt;
 }&lt;BR /&gt;
&lt;BR /&gt;
 // Write version number.&lt;BR /&gt;
 pFiler-&amp;gt;writeItem((Adesk::UInt16) 1.0);  pFiler-&amp;gt;writePoint3d(m_center);&lt;BR /&gt;
pFiler-&amp;gt;writeDouble(m_dia);&lt;BR /&gt;
&lt;BR /&gt;
 return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
}&lt;BR /&gt;
//********************************************&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
void&lt;BR /&gt;
addAsdkTraitsSampObject()&lt;BR /&gt;
{&lt;BR /&gt;
    AsdkTraitsSamp *pNewObj = new AsdkTraitsSamp;&lt;BR /&gt;
&lt;BR /&gt;
 pNewObj-&amp;gt;m_center = AcGePoint3d(0.0,0.0,0.0);&lt;BR /&gt;
 pNewObj-&amp;gt;m_dia = 10.0;&lt;BR /&gt;
&lt;BR /&gt;
    AcDbBlockTable *pBlockTable;&lt;BR /&gt;
    acdbHostApplicationServices()-&amp;gt;workingDatabase()&lt;BR /&gt;
        -&amp;gt;getSymbolTable(pBlockTable, AcDb::kForRead);&lt;BR /&gt;
&lt;BR /&gt;
    AcDbBlockTableRecord *pBlock;&lt;BR /&gt;
    pBlockTable-&amp;gt;getAt(ACDB_MODEL_SPACE, pBlock,&lt;BR /&gt;
        AcDb::kForWrite);&lt;BR /&gt;
&lt;BR /&gt;
    AcDbObjectId objId;&lt;BR /&gt;
    pBlock-&amp;gt;appendAcDbEntity(objId, pNewObj);&lt;BR /&gt;
&lt;BR /&gt;
    pBlockTable-&amp;gt;close();&lt;BR /&gt;
    pBlock-&amp;gt;close();&lt;BR /&gt;
    pNewObj-&amp;gt;close();&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
static void initAsdkTraitsSamp()&lt;BR /&gt;
{&lt;BR /&gt;
    AsdkTraitsSamp::rxInit();&lt;BR /&gt;
    acrxBuildClassHierarchy();&lt;BR /&gt;
&lt;BR /&gt;
    acedRegCmds-&amp;gt;addCommand("ASDK_TRAITS_SAMP",&lt;BR /&gt;
                            "ASDKTRAITSSAMP",&lt;BR /&gt;
                            "TRAITSSAMP",&lt;BR /&gt;
                            ACRX_CMD_TRANSPARENT,&lt;BR /&gt;
                            addAsdkTraitsSampObject);&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
extern "C" AcRx::AppRetCode&lt;BR /&gt;
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)&lt;BR /&gt;
{&lt;BR /&gt;
    switch(msg) {&lt;BR /&gt;
 case AcRx::kInitAppMsg:&lt;BR /&gt;
        acrxDynamicLinker-&amp;gt;unlockApplication(appId);&lt;BR /&gt;
  acrxDynamicLinker-&amp;gt;registerAppMDIAware(appId);&lt;BR /&gt;
     initAsdkTraitsSamp();&lt;BR /&gt;
     break;&lt;BR /&gt;
 case AcRx::kUnloadAppMsg:&lt;BR /&gt;
     acedRegCmds-&amp;gt;removeGroup("ASDK_TRAITS_SAMP");&lt;BR /&gt;
            deleteAcRxClass(AsdkTraitsSamp::desc());&lt;BR /&gt;
    }&lt;BR /&gt;
    return AcRx::kRetOK;&lt;BR /&gt;
}&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
"Mike B" &lt;MBUJAK1&gt; wrote in message&lt;BR /&gt;
news:7B0C737280ED923191B164F25D12A3B1@in.WebX.maYIadrTaRb...&lt;BR /&gt;
&amp;gt; I have created a test entity, mjbSmiley. It simply a happy face with a&lt;BR /&gt;
&amp;gt; center an a diameter member variable. Now I was able to save this but when&lt;BR /&gt;
I&lt;BR /&gt;
&amp;gt; opened it, the mouth and eyes were missing. I created the features in&lt;BR /&gt;
&amp;gt; worldDraw(). Now, I thought worldDraw was responsible for drawing the&lt;BR /&gt;
&amp;gt; object. Here is my code:&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt; //*******************************************&lt;BR /&gt;
&amp;gt; Adesk::Boolean mjbSmiley::worldDraw(AcGiWorldDraw* mode)&lt;BR /&gt;
&amp;gt; {&lt;BR /&gt;
&amp;gt;  assertReadEnabled();&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  double dOffset = (m_dia / 1) / 5;&lt;BR /&gt;
&amp;gt;  AcGeVector3d vecVert(0.0, dOffset, 0.0);&lt;BR /&gt;
&amp;gt;  AcGeVector3d vecHorz(dOffset, 0.0, 0.0);&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  AcGePoint3d leftEye, rightEye, leftCorner, bottom, rightCorner;&lt;BR /&gt;
&amp;gt;  leftEye = (m_center - vecHorz) + vecVert;&lt;BR /&gt;
&amp;gt;  rightEye = (m_center + vecHorz) + vecVert;&lt;BR /&gt;
&amp;gt;  leftCorner = m_center - vecHorz;&lt;BR /&gt;
&amp;gt;  bottom = m_center - vecVert;&lt;BR /&gt;
&amp;gt;  rightCorner = m_center + vecHorz;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;subEntityTraits().setColor(4);&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;geometry().circle(m_center, m_dia / 2, AcGeVector3d(0.0, 0.0,&lt;BR /&gt;
1.0));&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;subEntityTraits().setColor(3);&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;geometry().circle(leftEye, m_dia / 10, AcGeVector3d(0.0, 0.0,&lt;BR /&gt;
1.0));&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;geometry().circle(rightEye, m_dia / 10, AcGeVector3d(0.0, 0.0,&lt;BR /&gt;
1.0));&lt;BR /&gt;
&amp;gt;  mode-&amp;gt;subEntityTraits().setColor(1);&lt;BR /&gt;
&amp;gt;  if(!Adesk::kFalse == mode-&amp;gt;geometry().circularArc(leftCorner, bottom,&lt;BR /&gt;
&amp;gt; rightCorner, kAcGiArcSimple))&lt;BR /&gt;
&amp;gt;   printf("Mouth unsuccessful!");&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  return AcDbEntity::worldDraw(mode);&lt;BR /&gt;
&amp;gt; }&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt; Acad::ErrorStatus mjbSmiley::dwgInFields(AcDbDwgFiler* pFiler)&lt;BR /&gt;
&amp;gt; {&lt;BR /&gt;
&amp;gt;  assertWriteEnabled();&lt;BR /&gt;
&amp;gt;  Acad::ErrorStatus es;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  // Call dwgInFields from AcDbEntity&lt;BR /&gt;
&amp;gt;  if ((es = AcDbEntity::dwgInFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
&amp;gt;   return es;&lt;BR /&gt;
&amp;gt;  }&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  // Read version number.&lt;BR /&gt;
&amp;gt;  Adesk::UInt16 version;&lt;BR /&gt;
&amp;gt;  pFiler-&amp;gt;readItem(&amp;amp;version);&lt;BR /&gt;
&amp;gt;  if (version &amp;gt; VERSION_MJBSMILEY)&lt;BR /&gt;
&amp;gt;   return Acad::eMakeMeProxy;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  // Read the data members.&lt;BR /&gt;
&amp;gt;  switch (version)&lt;BR /&gt;
&amp;gt;  {&lt;BR /&gt;
&amp;gt;  case (1):&lt;BR /&gt;
&amp;gt;   pFiler-&amp;gt;readPoint3d(&amp;amp;m_center);&lt;BR /&gt;
&amp;gt;   pFiler-&amp;gt;readDouble(&amp;amp;m_dia);&lt;BR /&gt;
&amp;gt;   break;&lt;BR /&gt;
&amp;gt;  }&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
&amp;gt; }&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt; Acad::ErrorStatus mjbSmiley::dwgOutFields(AcDbDwgFiler* pFiler) const&lt;BR /&gt;
&amp;gt; {&lt;BR /&gt;
&amp;gt;  assertReadEnabled();&lt;BR /&gt;
&amp;gt;  Acad::ErrorStatus es;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  // Call dwgOutFields from AcDbEntity&lt;BR /&gt;
&amp;gt;  if ((es = AcDbEntity::dwgOutFields(pFiler)) != Acad::eOk) {&lt;BR /&gt;
&amp;gt;   return es;&lt;BR /&gt;
&amp;gt;  }&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  // Write version number.&lt;BR /&gt;
&amp;gt;  pFiler-&amp;gt;writeItem((Adesk::UInt16) VERSION_MJBSMILEY);&lt;BR /&gt;
&amp;gt;  pFiler-&amp;gt;writePoint3d(m_center);&lt;BR /&gt;
&amp;gt;  pFiler-&amp;gt;writeDouble(m_dia);&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;  return pFiler-&amp;gt;filerStatus();&lt;BR /&gt;
&amp;gt; }&lt;BR /&gt;
&amp;gt; /********************************************&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt; Now, why did worldDraw not draw the eyes and mouth of my mjbSmiley entity?&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt; Mike B&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;&lt;BR /&gt;
&amp;gt;&lt;/MBUJAK1&gt;&lt;/MATH.H&gt;&lt;/STDIO.H&gt;&lt;/STDLIB.H&gt;&lt;/STRING.H&gt;</description>
      <pubDate>Tue, 27 Aug 2002 10:28:47 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/unexpected-results-worlddraw-question/m-p/311261#M39828</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2002-08-27T10:28:47Z</dc:date>
    </item>
  </channel>
</rss>

