ObjectARX, AutoCAD. Среда программирования библиотеки C++


              

Protocol extension ensures that the


AcArray<int>& geomIdsForLines)
};
Acad::ErrorStatus
AcmeSocketForLine::getOsnapInfo(
AcDbEntity* pickedObject,
int,
const AcGePoint3d& pickPoint,
const AcGePoint3d&,
const AcGeMatrix3d& viewXform,
AcArray<AcGePoint3d>& snapPoints,
AcArray<int>& geomIdsForPts,
AcArray<AcGeCurve3d>& snapCurves,
AcArray<int>& geomIdsForLines)
{
// Protocol extension ensures that the following assertion
// is always true, but check in non-production versions
// just to be safe.
//
ASSERT(pickedObject->isKindOf(AcDbLine::desc()));
// In production, a hard cast is fastest.
AcDbLine* lineEnt = (AcDbLine*)pickedObject;
// Do computation using AcDbLine protocol, pickPoint, and
// viewXform. For example, if you want to find the closest
// socket to the pick point and return just that, set
// snapPoints and geomIdsForPts accordingly.
// But this isn’t an AutoSnap mode...
//
snapLiness.setLogicalLength(0);
geomIdsForLines.setLogicalLength(0);
}
// Actual protocol extension objects
//
static AcmeSocketInfo* pDefaultSocketInfo = NULL;
static AcmeSocketForLine* pSocketForLine = NULL;
// "SOCket" Osnap mode glyph object
//
class AcmeSocketGlyph : public AcGiGlyph
{
public:
virtual Acad::ErrorStatus
setLocation(const AcGePoint3d& dcsPoint);
virtual void
viewportDraw(AcGiViewportDraw* vportDrawContext);
private:
AcGePoint3d mCurDcsLoc;
};
Acad::ErrorStatus
AcmeSocketGlyph::setLocation(const AcGePoint3d& dcsPoint)
{
mCurDCSLoc = dcsPoint;
}
// These variables are extremely transient, and are
// made static to save constructor/destructor cost.
static AcGePoint2d& sPixelArea;
AcArray<AcGePoint3d> sSegmentPoints[2];
void
AcmeSocketGlyph::viewportDraw(AcGiViewportDraw* vportDrawContext)
{
// Taking mCurDCSLoc, the pixel size, and the AutoSnap
// marker size into account, plus anything else, such as socket
// orientation, draw the glyph.

Содержание  Назад  Вперед