lihongyu2467 发表于 2003-8-27 10:28:00

[求助]已知一线形ID,如何将其加入到线形表中

高手:
    我已知一线形ID,如何将其加入到线形表中,查看下列代码哪里有错?万分感谢!
{
pDb->loadLineTypeFile(LinetypeName,"Acadiso.lin");
pLinetypetable->getAt(LinetypeName,linetypeid);
acdbOpenObject(pLinetypeTableRecord,linetypeid,AcDb::kForRead);
pLinetypetable->add(pLinetypeTableRecord);
}
LinetypeName为已知线形名,位于Acadiso.lin中。

leeyeafu 发表于 2003-8-27 11:53:00

当你调用loadLineTypeFile()后,若返回Acad::eOk,LineTypeName线型就已经加入到线型表中去了。getAt()函数得到的线型ID用于给图元对象或者图层指定线型。

lihongyu2467 发表于 2003-8-29 09:26:00

可是上述代码acdbOpenObject(pLinetypeTableRecord,linetypeid,AcDb::kForRead)有问题,第三个参数换成AcDb::kForwrite,或AcDb::kForNotify都不可以,如何修改.请高手指教.

leeyeafu 发表于 2003-9-2 09:01:00

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指针指向的对象成员函数来修改线型。

lihongyu2467 发表于 2003-9-3 19:12:00

多谢,这个问题已经解决了。

c735023723 发表于 2012-8-28 16:41:44

pLinetypetable->getAt(LinetypeName,pLTypeRec,AcDb::kForWrite);
页: [1]
查看完整版本: [求助]已知一线形ID,如何将其加入到线形表中