admin 发表于 2024-3-14 20:40:45

[每日一码] Creating a hatch object and setting its scale

#define AOK(es) if(es != Acad::eOk) throw es;
void createHatch(void)
{         
            AcDbObjectId objId;
            AcDbEntity* pEnt;
            ads采用name ent;
            ads采用point point;

            if (RTNORM != acedEntSel("SELECT AN ENTITY TO BE HATCHED: ", ent,
point))
                        return;
            assert(objId.setFromOldId(ent));
            AOK( acdbOpenObject(pEnt,objId,AcDb::kForRead) );

            AcDbHatch *pHatch = new AcDbHatch;
            assert(pHatch);
            try
            {
                        AcDbBlockTableRecordPointer pBtr(ACDB采用MODEL采用SPACE,
curDoc()->database(), AcDb::kForWrite);
                        AOK(pBtr.openStatus());

                        AOK(pHatch->setPatternAngle(0));
                        AOK(pHatch->setPatternScale(10));
                        AOK(pHatch->setAssociative(Adesk::kFalse));
                        AOK(pHatch->setPattern(AcDbHatch::kPreDefined, "ANSI32"));

                        // append loop to hatch
                        AcDbObjectIdArray dbObjIds;
                        int objNum = dbObjIds.append(pEnt->objectId());
                        acutPrintf("\nOBJ number is %d.", objNum);
                        AOK(pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds));

                        AOK(pHatch->setLayer(pEnt->layer()));
                        AOK(pHatch->setColorIndex(256));   //bylayer
                        AOK(pHatch->setHatchStyle(AcDbHatch::kNormal));
                        AOK(pHatch->evaluateHatch());
                        AOK(pBtr->appendAcDbEntity(pHatch));
                        AOK(pHatch->close());
            }
            catch (const Acad::ErrorStatus es)
            {
                        acutPrintf("Error: %s", acadErrorStatusText(es));
                        delete pHatch;
            }
}
页: [1]
查看完整版本: [每日一码] Creating a hatch object and setting its scale