明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2353|回复: 1

在ARX中如何加载线型?

[复制链接]
发表于 2004-7-13 17:24:00 | 显示全部楼层 |阅读模式
在acadiso.lin 中定义有mylinetype, 在层中设定线型,使用AcDb2dPolyline()绘制二维多义线,但线型并没有按照指定的线型绘制线条,是否是在绘制前没有加载线型所致?线型又怎样加载呢? 先用createnewlayer() 并高定当前层,再画线:pNewPline = new AcDb2dPolyline(
AcDb::k2dSimplePoly,parr,0,Adesk::kFalse,0.2*kk,0.2*kk,NULL); 在层中高定线型: void createNewlayer(char *layer,Adesk::UInt16 colorIndex,char* linetype)
{
AcDbLayerTable *pLayerTable;
AcDbObjectId layerId;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pLayerTable,AcDb::kForWrite);
if(!pLayerTable->has(layer)){
AcDbLayerTableRecord *pLayerTableRecord=new AcDbLayerTableRecord;
pLayerTableRecord->setName(layer);
pLayerTableRecord->setIsFrozen(0);//解冻层
pLayerTableRecord->setIsOff(0);//打开层
pLayerTableRecord->setVPDFLT(0);//视区为可见
pLayerTableRecord->setIsLocked(0);//解锁层
/////////////////////////////////
AcCmColor color;
color.setColorIndex(colorIndex);
pLayerTableRecord->setColor(color);
///////////////////////////////////////////
AcDbLinetypeTable *pLineTypeTbl;
AcDbObjectId ltId;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pLineTypeTbl,AcDb::kForRead);
if((pLineTypeTbl->getAt(linetype,ltId))!=Acad::eOk)
{
pLineTypeTbl->getAt("CONTINUOUS",ltId);
}
pLineTypeTbl->close(); pLayerTableRecord->setLinetypeObjectId(ltId);
pLayerTable->add(pLayerTableRecord);
pLayerTable->close();
pLayerTableRecord->close();
}
else{
pLayerTable->close();
}
}
发表于 2004-7-24 21:35:00 | 显示全部楼层
BOOL CTableHanlder:oadLinetypeToDatabase(const char *ltn, AcDbObjectId &ltypeId)
{ AcDbDatabase *pCurDb;
AcDbLinetypeTable *pltypeTb;
Acad::ErrorStatus es;
pCurDb=acdbHostApplicationServices()->workingDatabase();
es=pCurDb->getSymbolTable(pltypeTb,AcDb::kForRead);
if(es!=Acad::eOk)return FALSE;
BOOL bFindFlag=pltypeTb->has(ltn);
pltypeTb->close();//close table
/////////////////
//没有则从文件中加载线型
if(!bFindFlag)
{
CString strPath;
CCommonHanlder cmnHanlder;
if(!cmnHanlder.getLinetypePathStr (strPath))//这是我的线型库路径,如果要符合你的,自己搞定!
return FALSE;
strPath+="linetype.lin";
if((es=pCurDb->loadLineTypeFile(ltn,strPath))!=Acad::eOk)
return FALSE;
}

/////////
es=pCurDb->getSymbolTable(pltypeTb,AcDb::kForRead);
if(es!=Acad::eOk)return FALSE;
es=pltypeTb->getAt(ltn,ltypeId);
pltypeTb->close();
if(es!=Acad::eOk)
return FALSE;
else
return TRUE;
} ////////////////////////////// 看着改改可通用,我就不改了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 06:52 , Processed in 0.177405 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表