|
static void postToDb(AcDbEntity* ent, AcDbObjectId& objId)
{
AcDbBlockTable* pBlockTable;
AcDbBlockTableRecord* pSpaceRecord;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite);
pBlockTable->close();
pSpaceRecord->appendAcDbEntity(objId, ent);
ent->close();
pSpaceRecord->close();
}
// ----- mycurve._test command (do not rename)
static void mycurve_test(void)
{
// Add your code for command mycurve._test here
// Have the user select an polyline
ads_name en;
AcGePoint3d pt;
if (acedEntSel("\nSelect an polyline: ", en, asDblArray(pt)) != RTNORM)
{
acutPrintf("\nNothing selected");
return;
}
// Now, exchange the ads_name for the object Id.
//
AcDbObjectId eId;
acdbGetObjectId(eId, en);
AcDbObject *pObj;
acdbOpenObject(pObj, eId, AcDb::kForRead);
if (pObj->isKindOf(AcDbPolyline::desc())) {
pObj->close();
int rc;
char kw[20];
acedInitGet(0, "Offset Other");
rc = acedGetKword("Offset/: ", kw);
if ((rc != RTNORM) && (rc != RTNONE)) {
acutPrintf("\nNothing selected.");
return;
}else if (rc == RTNONE || strcmp(kw, "Other") == 0)
acedAlert("Other");
else
{
AcDbPolyline *pPolyline;
acdbOpenObject(pPolyline,eId,AcDb::kForRead);
// Now generate an polyline by 0.5 drawing units.
//
AcDbVoidPtrArray curves;
pPolyline->getOffsetCurves(0.5, curves);
AcDbObjectId newCurveId;
postToDb((AcDbEntity*)curves[0],newCurveId);
//
//acedAlert("F");
AcDbVoidPtrArray curves1;
pPolyline->getOffsetCurves(-0.5, curves1);
postToDb((AcDbEntity*)curves1[0],newCurveId);
//
pPolyline->close();
}
}
else
{
pObj->close();
acutPrintf("\nSelected entity is not an ellipse");
}
return;
} |
|