yfy2003 发表于 2003-12-15 16:48:00

请大家帮助完善线型规范代码

这是多线段线型生成启用代码,由于很多虚线和其它线型被修剪后没有显示为虚线等,需重新在属性——>线型生成——>启用。我只找到拟合后的二维多线段线型生成启用,想在下面的代码中加入未拟合的多线段线型生成启用。请帮助完善,谢谢!
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);

yfy2003 发表于 2003-12-16 20:42:00

注:用系统变量PLINEGEN能对未拟合的多线段线型生成启用,但原来画的现形就不行。


用调用CAD命令还可以,但我学习的软件CASS不是调用命令,真是想死我人。
acedCommand(RTSTR,"PEDIT",RTSTR,"M",RTPICKS,ss,RTSTR,"",RTSTR,"L",RTSTR,"ON",RTSTR,"X",0);

yfy2003 发表于 2003-12-20 22:19:00

本帖最后由 作者 于 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);

zjhzchp 发表于 2003-12-21 22:21:00

看不懂,是用LISP写的吗?

wz0406 发表于 2005-7-18 20:30:00

<P>能用VBA实现吗</P>
页: [1]
查看完整版本: 请大家帮助完善线型规范代码