[求助]已知一线形ID,如何将其加入到线形表中
高手:我已知一线形ID,如何将其加入到线形表中,查看下列代码哪里有错?万分感谢!
{
pDb->loadLineTypeFile(LinetypeName,"Acadiso.lin");
pLinetypetable->getAt(LinetypeName,linetypeid);
acdbOpenObject(pLinetypeTableRecord,linetypeid,AcDb::kForRead);
pLinetypetable->add(pLinetypeTableRecord);
}
LinetypeName为已知线形名,位于Acadiso.lin中。 当你调用loadLineTypeFile()后,若返回Acad::eOk,LineTypeName线型就已经加入到线型表中去了。getAt()函数得到的线型ID用于给图元对象或者图层指定线型。 可是上述代码acdbOpenObject(pLinetypeTableRecord,linetypeid,AcDb::kForRead)有问题,第三个参数换成AcDb::kForwrite,或AcDb::kForNotify都不可以,如何修改.请高手指教. acdbOpenObject(pLinetypeTableRecord,linetypeid,AcDb::kForWrite);//这样调用会出错。
目的是根据线型ID打开线型表记录,并准备修改线型记录,这样将修改你加载的线型。你的目的是这样吗?
如果是这样,你可以使用getAt()函数的另一个重载版本来得到可修改的线型表记录:
Acad::ErrorStatus AcDbLineTypeRecord::getAt( const char* entryName,
AcDbLinetypeTableRecord*& pRec, AcDb::OpenMode openMode,
bool openErasedRec = false) const;
例如:
AcDbLinetypeTableRecord* pLTypeRec;
pLinetypetable->getAt(LinetypeName,pLTypeRec,AcDb::kForWrite);
然后,你可以调用pLtypeRec指针指向的对象成员函数来修改线型。 多谢,这个问题已经解决了。 pLinetypetable->getAt(LinetypeName,pLTypeRec,AcDb::kForWrite);
页:
[1]