明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1784|回复: 2

高手帮我看看程序吧,在线等,谢谢!

[复制链接]
发表于 2007-5-16 17:59:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-5-16 18:21:32 编辑

画了一个正方形,想填充一下,调试通过了,但是已运行arx就报错!高手帮我分析分析吧,多谢了!

Acad::ErrorStatus createSubstationRecord () {

 AcDbHatch* pHatch = new AcDbHatch();

 // Set hatch plane

 AcGeVector3d normal(0.0, 0.0, 1.0);
 pHatch->setNormal(normal);
 pHatch->setElevation(0.0);

 // Set hatch pattern to ANSI31 predefined type
 //
 pHatch->setPattern(AcDbHatch::kPreDefined, "ANSI31");

 // Set Associativity
 //
 pHatch->setAssociative(Adesk::kTrue);

 AcGePoint3dArray ptSubstation;
 ptSubstation.setLogicalLength(4);
 ptSubstation[0].set(0.0,0.0,0.0);
 ptSubstation[1].set(0.0,100.0,0.0);
 ptSubstation[2].set(100.0,100.0,0.0);
 ptSubstation[3].set(100.0,0.0,0.0);


 AcDbObjectId lineId,;
 AcDbObjectIdArray dbObjIds;
 AcDbLine *pline;

 for (int i = 0; i < 4; i++) {
  pline =  new AcDbLine();
  pline->setStartPoint(ptSubstation);
  pline->setEndPoint(ptSubstation[(i == 3) ? 0 : i+1]);
  postToDatabase(pline, lineId);
  dbObjIds.append(lineId);
 }
 // Append an external rectangular loop to hatch boundary
 //
 pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds);
 pHatch->evaluateHatch();

 return Acad::eOk;

}

////////下面是Post函数
Acad::ErrorStatus
postToDatabase(/*[in]*/AcDbEntity* pEnt,/*[out]*/AcDbObjectId& idObj)
{
 Acad::ErrorStatus   es;
 AcDbBlockTable*  pBlockTable;
 AcDbBlockTableRecord*  pSpaceRecord;
 //确定当前有正在工作的数据库
 if (acdbHostApplicationServices()->workingDatabase()==NULL)
  return Acad::eNoDatabase;
 //获得当前图形的指针
 //获得图形的块表,打开准备读取数据
 if ((es = acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead))==Acad::eOk){
  //获得建模空间的记录,打开准备写数据 

  if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite))==Acad::eOk){
   //添加实体指针到建模空间后关闭指针和建模空间记录

   if ((es = pSpaceRecord->appendAcDbEntity(idObj, pEnt))==Acad::eOk)
    pEnt->close();
   pSpaceRecord->close();
  }
  //关闭块表
  pBlockTable->close();

 }
 //返回状态信息
 return es;
}
/////////////////////

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-5-16 21:15:00 | 显示全部楼层

调试通过了????????????????????

AcDbObjectId lineId,;多一个逗号

 pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds);
 pHatch->evaluateHatch();

后面加如下(填充还没有提交到数据库)

  AcDbObjectId hatchId;
  postToDatabase(pHatch, hatchId);

 楼主| 发表于 2007-5-17 13:07:00 | 显示全部楼层

谢谢sieben的回复,帮助很大,但是怎么把花的图形和填充图案,通过程序保存为一个块呢!请求大家帮助

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 19:35 , Processed in 0.158671 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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