colourshine 发表于 2009-3-17 09:16:00

请帮忙解决一下区域填充AcDbHatch的问题,代码已完成,但显示不了?

代码如下:
         AcDbObjectIdArray dbObjIds;
         AcDbHatch*      pHatch;
         AcGeVector3d      normal(0.0 , 0.0 , 1.0 );
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);    //LineId是四边形的四条边的Id
   pHatch = new AcDbHatch();
   pHatch -> setNormal(normal);
   pHatch -> setElevation(0.0);
   pHatch -> setAssociative(Adesk::kFalse);
   pHatch -> setColorIndex(162);
   pHatch -> setPatternScale(0.0);
   pHatch -> setPatternAngle(0.0);
   pHatch -> setPattern(AcDbHatch::kPreDefined, "ANSI31");
   pHatch -> setHatchStyle(AcDbHatch::kNormal);
   pHatch -> appendLoop(AcDbHatch::kExternal, dbObjIds);
   pHatch -> evaluateHatch();
   
   AddEntityToDbs( pHatch );// AddEntityToDbs()函数用于将填充加入到数据库,函数没有问题
   pHatch -> close();
代码是参考了网上的一些信息写的,程序在调试时填充显示不了,请问下是什么原因?谢谢!

松竹 发表于 2009-4-6 21:59:00

代码修改如下:可能是将比例设置为0.0导致的问题。
   AcDbObjectIdArray dbObjIds;
   AcDbHatch*      pHatch;
   AcGeVector3d      normal(0.0 , 0.0 , 1.0 );
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);
   dbObjIds.append(LineId);    //LineId是四边形的四条边的Id
   pHatch = new AcDbHatch();
   pHatch -> setNormal(normal);
   pHatch -> setElevation(0.0);
   pHatch -> setAssociative(Adesk::kFalse);
   pHatch -> setColorIndex(162);
   pHatch -> setPatternScale(1.0);
   pHatch -> setPatternAngle(0.0);
   pHatch -> setPattern(AcDbHatch::kPreDefined, "ANSI31");
   pHatch -> setHatchStyle(AcDbHatch::kNormal);
   pHatch -> appendLoop(AcDbHatch::kExternal, dbObjIds);
   pHatch -> evaluateHatch();
   
   AddEntityToDbs( pHatch );// AddEntityToDbs()函数用于将填充加入到数据库,函数没有问题
   pHatch -> close();
页: [1]
查看完整版本: 请帮忙解决一下区域填充AcDbHatch的问题,代码已完成,但显示不了?