请大家帮助完善线型规范代码
这是多线段线型生成启用代码,由于很多虚线和其它线型被修剪后没有显示为虚线等,需重新在属性——>线型生成——>启用。我只找到拟合后的二维多线段线型生成启用,想在下面的代码中加入未拟合的多线段线型生成启用。请帮助完善,谢谢!ads_name ss;
acedSSGet(NULL,NULL,NULL,NULL,ss);//选择实体
acedSSLength(ss,&len);
if(acedSSName(ss,0,ent)!=RTNORM) return;
AcDbObjectId eId;
AcDbObject *pObj;
acdbGetObjectId(eId, ent);
acdbOpenObject(pObj, eId, AcDb::kForWrite);
if(pObj->isKindOf(AcDb2dPolyline::desc())) {
AcDb2dPolyline *pPline;
acdbOpenObject(pPline, eId, AcDb::kForWrite);
pPline->setLinetypeGenerationOn();//二维多线段线形生成启用
pPline->close();
}else if{
........................在此加入未拟合的多线段线型生成启用
}
pObj->close();
acedSSFree(ss); 注:用系统变量PLINEGEN能对未拟合的多线段线型生成启用,但原来画的现形就不行。
用调用CAD命令还可以,但我学习的软件CASS不是调用命令,真是想死我人。
acedCommand(RTSTR,"PEDIT",RTSTR,"M",RTPICKS,ss,RTSTR,"",RTSTR,"L",RTSTR,"ON",RTSTR,"X",0); 本帖最后由 作者 于 2003-12-21 10:44:47 编辑
问题解决了。代码如下:
struct resbuf *ed;
ed=acutBuildList(-4,"<or",-4,"<and",RTDXF0,"Polyline",-4,"and>",-4,"<and",RTDXF0,"LWPOLYLINE",-4,"and>",-4,"or>",0);//只选择拟合和未拟合的多线段
if(acedSSGet(NULL,NULL,NULL,ed,ss)!=RTNORM){
acutPrintf("未选择到实体\n");
}else{
acedSSLength(ss,&len);
AcDbObjectId eId;
AcDbObject *pObj;
for(i=0;i<len;i++){
if(acedSSName(ss,i,ent)!=RTNORM) return;
acdbGetObjectId(eId,ent);
acdbOpenObject(pObj,eId, AcDb::kForWrite);
if(pObj->isKindOf(AcDb2dPolyline::desc())){//二维多线段线形生成启用
AcDb2dPolyline::cast(pObj)->setLinetypeGenerationOn();
pObj->close();
}else if(pObj->isKindOf(AcDbPolyline::desc())){//多线段线形生成启用
AcDbPolyline::cast(pObj)->setPlinegen(1);
pObj->close();
}
}
}
acutRelRb(ed);
acedSSFree(ss); 看不懂,是用LISP写的吗? <P>能用VBA实现吗</P>
页:
[1]