- UID
- 5043
- 积分
- 1347
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-13
- 最后登录
- 1970-1-1
|
发表于 2016-9-30 19:45:06
|
显示全部楼层
应该是没有设置线型的总长,setPatternLength(),下面的红色的代码加进去试试。
AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
AcDbLinetypeTable *pLinetypeTbl;
AcDbObjectId ltId;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pLinetypeTbl, AcDb::kForRead);
if ((pLinetypeTbl->getAt(_T("DASHED"), ltId)) != Acad::eOk)
{
acutPrintf(_T("\nNO DASHED Linetype "));
pLinetypeTbl->upgradeOpen();
AcDbLinetypeTableRecord* pLineTypeRec = NULL;
pLinetypeTbl->getAt(_T("DASHED"), pLineTypeRec, AcDb::kForWrite);
pLineTypeRec = new AcDbLinetypeTableRecord();
pLineTypeRec->setName(_T("DASHED"));
pLineTypeRec->setAsciiDescription(_T("__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __"));
pLineTypeRec->setNumDashes(2);
float linelength[2] = { 0.25,-0.1 };
double dPatternLength = 0;
for (int i = 0;i<2;i++)
{
dPatternLength += fabs(linelength);
pLineTypeRec->setDashLengthAt(i, linelength);
}
pLineTypeRec->setPatternLength(dPatternLength);
pLinetypeTbl->add(pLineTypeRec);
pLineTypeRec->close();
}
else
{
acutPrintf(_T("\n线型已经存在."));
}
pLinetypeTbl->close();
|
|