Hi Andy, Thanks for your reply. Here are the codes:
[code]
Adesk::Boolean FEMRegion::worldDraw(AcGiWorldDraw* mode)
{
assertReadEnabled();
if(GLOBAL_VARS[FEM_SHOW_REGIONS] != 1.0)
return Adesk::kTrue;
AcGePoint3d mPts[4];
const Adesk::UInt32 numVerts = 4;
short oldColor = mode->subEntityTraits().color();
AcGiFillType oldFill = mode->subEntityTraits().fillType();
GeneralDict* pDict;
if(!get_general_dictionary(pDict, AcDb::kForRead, database()))
return false;
static Adesk::Int32 faceList[] = {4,0,1,2,3};
const Adesk::UInt32 faceListLength = 5;
Adesk::UInt8 pFaceVis[1];
AcGiEdgeData edgeData;
AcGiFaceData faceData;
short colors[4];
short colorface[1];
for(int i=0; i
{
mPts[0] = mPts[3] = mNodes[mElements.mNodes[0]].mPoint;
mPts[1] = mNodes[mElements.mNodes[1]].mPoint;
mPts[2] = mNodes[mElements.mNodes[2]].mPoint;
if(pDict->getDisplayMode() == DM_ELEMENT_STRESS &&
mElements.mStressSet)
{
mode->subEntityTraits().setColor(pDict->getStressColor(mElements.mStress, DM_ELEMENT_STRESS));
mode->subEntityTraits().setFillType(kAcGiFillAlways);
colors[0] = colors[1] = colors[2] = colors[3] = pDict->getStressColor(mElements.mStress, DM_ELEMENT_STRESS);
edgeData.setColors(colors); //shell
colorface[0] = pDict->getStressColor(mElements.mStress,
DM_ELEMENT_STRESS);//shell
faceData.setColors(colorface);//shell
mode->geometry().shell(numVerts, mPts, faceListLength,faceList, &edgeData, &faceData);
mode->subEntityTraits().setColor(250);
mode->subEntityTraits().setFillType(kAcGiFillNever);
colors[0] = colors[1] = colors[2] = colors[3] = 250; //shell
edgeData.setColors(colors); //shell
colorface[0] = 250; //shell
faceData.setColors(colorface);//shell
mode->geometry().shell(numVerts, mPts, faceListLength,faceList, &edgeData, &faceData);
}
else if(pDict->getDisplayMode() == DM_ELEMENT_ANGLE && mElements.mElementAngleSet)
{
mode->subEntityTraits().setColor(pDict->getStressColor(mElements.mElementAngle, DM_ELEMENT_ANGLE));
mode->subEntityTraits().setFillType(kAcGiFillAlways);
colors[0] = colors[1] = colors[2] = colors[3] = pDict->getStressColor(mElements.mElementAngle, DM_ELEMENT_ANGLE);
edgeData.setColors(colors); //shell
colorface[0] = pDict->getStressColor(mElements.mElementAngle, DM_ELEMENT_ANGLE);//shell
faceData.setColors(colorface);//shell
mode->geometry().shell(numVerts, mPts, faceListLength,faceList, &edgeData, &faceData);
mode->subEntityTraits().setColor(250);
mode->subEntityTraits().setFillType(kAcGiFillNever);
colors[0] = colors[1] = colors[2] = colors[3] = 250; //shell
edgeData.setColors(colors); //shell
colorface[0] = 250; //shell
faceData.setColors(colorface);//shell
mode->geometry().shell(numVerts, mPts, faceListLength,faceList, &edgeData, &faceData);
}
else if(mElements.mWCSet)
{
mode->subEntityTraits().setColor(10 + ((short)((mElements.mWC)*8))*10);
mode->subEntityTraits().setFillType(kAcGiFillAlways);
colors[0] = colors[1] = colors[2] = colors[3] = 10 + ((short)((mElements.mWC)*8))*10;
edgeData.setColors(colors); //shell
colorface[0] = 10 + ((short)((mElements.mWC)*8))*10; //shell
faceData.setColors(colorface);//shell
mode->geometry().shell(numVerts, mPts, faceListLength,faceList, &edgeData, &faceData);
}
else
{
mode->subEntityTraits().setColor(GetRegionColor(getFEMNumber()));
mode->geometry().polyline(4, mPts);
}
}
pDict->close();
mode->subEntityTraits().setColor(oldColor);
mode->subEntityTraits().setFillType(oldFill);
return Adesk::kFalse;
}
void FEMRegion::viewportDraw(AcGiViewportDraw* pVpDraw)
{
assertReadEnabled();
AcDbObjectIdArray AllRegionIds;
TNTNumberDict* pDict;
if(!get_numbering_dictionary(pDict, AcDb::kForRead, database()))
return;
pDict->getAllFEMObjects(AllRegionIds, FT_REGION);
pDict->close();
long elementOffset = 0;
for(int i=0; i< AllRegionIds.length(); ++i)
{
if(AllRegionIds == objectId())
break;
AcDbObjectPointer pRegion(AllRegionIds, AcDb::kForRead);
if(pRegion.openStatus() == Acad::eOk)
{
elementOffset += pRegion->getElementCount();
}
}
if(GLOBAL_VARS[FEM_SHOW_ELEMENT_NUMBERS])
{
for(int i=0; i
{
AcGeVector3d ViewDir = pVpDraw->viewport().viewDir();
AcGeVector3d UpVector;
pVpDraw->viewport().getCameraUpVector(UpVector);
AcGeVector3d SideVec = UpVector.crossProduct(ViewDir).normal();
double numberSize = GLOBAL_VARS[TNT_NUMBER_SIZE];
AcGePoint2d PixelPerUnit;
pVpDraw->viewport().getNumPixelsInUnitSquare(position(),PixelPerUnit);
{
numberSize = numberSize/PixelPerUnit[0];
}
AcGePoint3d pt = mNodes[mElements.mNodes[0]].mPoint + mNodes[mElements.mNodes[1]].mPoint.asVector() + mNodes[mElements.mNodes[2]].mPoint.asVector();
pt = pt/3.0;
char string[32];
sprintf(string, "%d", elementOffset + i+1);
pVpDraw->geometry().text(pt + (numberSize)*SideVec - (numberSize/2)UpVector,ViewDir,SideVec,numberSize,1.0,0.0,string);
}
}
}
[/code]
FEMRegion is custom object. Attachment is the picture showing hiding problem.
Message was edited by: hyperandey