- UID
- 1
- 积分
- 16111
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-3
- 最后登录
- 1970-1-1
|
发表于 2002-4-6 14:17:43
|
显示全部楼层
最初由 hhj9611 发布
[B]你好!!我照您教的做了,但还是不能显示,望赐教,如有成功例程更好,我的课题快进行不下去了。我又用实体组的方法也没见效,我是初学者,没办法了。如hatch hatch1
学生:胡红军 [/B]
下面是 XDRX_API的 制作HATCH的三个重载函数,你参考下,问题解决后,请到论坛告诉下大家原因,谢谢!
- BOOL makeHatch(AcDbObjectId layId,const char *patternName,AcDbHatch::HatchPatternType patternType,AcDbHatch::HatchStyle hStyle,double scale,double angle,BOOL doubleFlag,AcDbVoidPtrArray * loopPath,Adesk::Boolean assocFlag)
- {
- if (loopPath->isEmpty())
- return FALSE;
-
- 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->setPatternScale(scale);
- pHatch->setHatchStyle(hStyle);
- pHatch->setPatternAngle(angle);
- pHatch->setPatternDouble(doubleFlag);
-
- // Set Associativity
- pHatch->setAssociative(assocFlag);
-
- // Construct database AcDbLines
- AcDbObjectId id;
- AcDbObjectIdArray dbObjIds;
-
-
- AcDbEntity *pEnt;
- for (int i=0;i<loopPath->length();i++){
- dbObjIds.setLogicalLength(0);
- pEnt=(AcDbEntity *)loopPath->at(i);
- id=XdDbUtils::appendToDb(pEnt);
- pEnt->close();
- dbObjIds.append(id);
- if (i==0){
- pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds);
- }
- else{
- pHatch->appendLoop(AcDbHatch::kDefault, dbObjIds);
- }
- }
-
- // Append an external rectangular loop to hatch boundary //
-
- // Elaborate hatch lines
- pHatch->setPattern(patternType, patternName);
- pHatch->evaluateHatch();
-
- dbObjIds.setLogicalLength(0);
- pHatch->getAssocObjIds(dbObjIds);
-
- pHatch->setLayer(layId);
-
- // Post hatch entity to database
- id=XdDbUtils::appendToDb(pHatch);
- pHatch->close();
-
- // Attach hatchId to all source boundary objects for notification. //
- if (assocFlag==Adesk::kTrue){
- int numObjs = dbObjIds.length();
- for (i = 0; i < numObjs; i++) {
- if (acdbOpenAcDbEntity(pEnt, dbObjIds[i],
- AcDb::kForWrite)==Acad::eOk) {
- pEnt->addPersistentReactor(id);
- pEnt->close();
- }
- }
- }
-
- // Get all associative source boundary object Ids for later use. //
-
- return TRUE;
- }
复制代码
- //
- BOOL makeHatch(AcDbObjectId layId,const char *patternName,
- AcDbHatch::HatchPatternType patternType,
- AcDbHatch::HatchStyle hStyle,double scale,BOOL doubleFlag,
- double angle,AcDbVoidPtrArray * outLoop,
- AcDbVoidPtrArray * interLoop,Adesk::Boolean assocFlag)
- {
- if (outLoop->isEmpty())
- return FALSE;
-
- 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->setPatternScale(scale);
- pHatch->setHatchStyle(hStyle);
- pHatch->setPatternAngle(angle);
- pHatch->setPatternDouble(doubleFlag);
-
- // Set Associativity
- pHatch->setAssociative(assocFlag);
-
- // Construct database AcDbLines
- AcDbObjectId id;
- AcDbObjectIdArray dbObjIds;
-
-
- AcDbEntity *pEnt;
- AcDbObjectIdArray objIds;
- for (int i=0;i<outLoop->length();i++){
- dbObjIds.setLogicalLength(0);
- pEnt=(AcDbEntity *)outLoop->at(i);
- id=XdDbUtils::appendToDb(pEnt);
- pEnt->close();
- dbObjIds.append(id);
- objIds.append(id);
- pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds);
- }
-
- for (i=0;i<interLoop->length();i++){
- dbObjIds.setLogicalLength(0);
- pEnt=(AcDbEntity *)interLoop->at(i);
- id=XdDbUtils::appendToDb(pEnt);
- pEnt->close();
- dbObjIds.append(id);
- objIds.append(id);
- pHatch->appendLoop(AcDbHatch::kDefault, dbObjIds);
- }
-
- // Append an external rectangular loop to hatch boundary //
-
- // Elaborate hatch lines
- pHatch->setPattern(patternType, patternName);
- pHatch->evaluateHatch();
-
- dbObjIds.setLogicalLength(0);
- pHatch->getAssocObjIds(dbObjIds);
-
- pHatch->setLayer(layId);
-
- // Post hatch entity to database
- id=XdDbUtils::appendToDb(pHatch);
- pHatch->close();
-
- // Attach hatchId to all source boundary objects for notification. //
- if (assocFlag==Adesk::kTrue){
- int numObjs = objIds.length();
- for (i = 0; i < numObjs; i++) {
- if (acdbOpenAcDbEntity(pEnt, dbObjIds[i],
- AcDb::kForWrite)==Acad::eOk) {
- pEnt->addPersistentReactor(id);
- pEnt->close();
- }
- }
- }
-
- // Get all associative source boundary object Ids for later use. //
-
- return TRUE;
- }
复制代码
- //根据ID
- BOOL makeHatch(AcDbObjectId layId,const char *patternName,
- AcDbHatch::HatchPatternType patternType,
- AcDbHatch::HatchStyle hStyle,double scale,BOOL doubleFlag,
- double angle,AcArray<AcDbObjectIdArray> * extIds,AcArray<AcDbObjectIdArray> * intIds,
- Adesk::Boolean assocFlag)
- {
- if (extIds->isEmpty())
- return FALSE;
- 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->setPatternScale(scale);
- pHatch->setHatchStyle(hStyle);
- pHatch->setPatternAngle(angle);
- pHatch->setPatternDouble(doubleFlag);
-
- // Set Associativity
- pHatch->setAssociative(assocFlag);
-
- // Construct database AcDbLines
- AcDbObjectId id;
-
- for(int i=0;i<extIds->length();i++)
- {
- pHatch->appendLoop(AcDbHatch::kExternal, extIds->at(i));
- }
-
- for (i=0;i<intIds->length();i++)
- {
- pHatch->appendLoop(AcDbHatch::kDefault, intIds->at(i));
- }
-
-
- // Elaborate hatch lines
- pHatch->setPattern(patternType, patternName);
- pHatch->evaluateHatch();
-
- AcDbObjectIdArray objIds1;
- pHatch->getAssocObjIds(objIds1);
-
- pHatch->setLayer(layId);
-
- // Post hatch entity to database
- id=XdDbUtils::appendToDb(pHatch);
- pHatch->close();
-
- // Attach hatchId to all source boundary objects for notification. //
- AcDbEntity *pEnt;
- if (assocFlag==Adesk::kTrue){
- int numObjs = objIds1.length();
- for (int i = 0; i < numObjs; i++) {
- if (acdbOpenAcDbEntity(pEnt, objIds1[i],
- AcDb::kForWrite)==Acad::eOk) {
- pEnt->addPersistentReactor(id);
- pEnt->close();
- }
- }
- }
-
- // Get all associative source boundary object Ids for later use. //
-
- return TRUE;
- }
复制代码 |
|