Ricky_76 发表于 2009-11-22 16:53:09

初来ARX需要你的帮助!

嗨,
谢谢你的时间。
我是Arx的新手,我需要你的帮助来完成一些工作。
我需要详细说明许多dwg文件,我通常通过vba或 vb.net 使用AutoCAD.Interop.AcadApplication来做到这一点,
但这次我决定使用arx为AutoCAD构建一个dll。
我看了一些教程,在那里我学到了一些东西,现在我可以:
- 迭代层和块
- 创建新层,块和实体
- 打开,“监视”并关闭特定文件夹中的所有.dwg
- 以及其他小东西,
但我需要知道如何:
- 迭代所有实体
- 如果某些特征不匹配,则更改实体层
- 保存并关闭活动文档
vba示例
Dim ntt As AcadEntity
Sub main()
    对于 ThisDrawing.Modelspace
中的每个 ntt 如果不是 GoodLay(ntt.layer) 则
UniformLayers (ntt)
End If
Next ntt
ActiveDocument.Save
End Sub
Function UniformLayers(ntt As AcadEntity) 作为布尔
选择大小写 ntt.layer
案例 “0”
案例 “GoodName1”, “GoodName2”, “...”
'do something
Case Else
ntt.layer = “0”
End Select
End Function

希望有人可以打电话给我如何做到这一点。
Tnx again
/r
**** Hidden Message *****

猪的风采 发表于 2009-12-1 02:41:36

这是一个如何迭代数据库的示例,希望它能帮助你

static void doit ()
{
    AcDbObjectIdArray ids;
    AcDbDatabase *pDb = new AcDbDatabase(false);
    if(pDb->readDwgFile(_T("PathToMyDwg"),_SH_DENYRW)== eOk)
    {
      iterEnts(pDb,ids);
      pDb->saveAs(_T("PathToMyDwg"));
    }
    delete pDb;
}
static int iterEnts (AcDbDatabase *pDb, AcDbObjectIdArray &ids)
{
    int cnt = 0;
    AcDbBlockTableRecord *pRec;
    if(acdbOpenAcDbObject((AcDbObject *&) pRec,
      pDb->currentSpaceId(), AcDb::kForRead) == Acad::eOk)
    {
      AcDbBlockTableRecordIterator *pIter;
      if(pRec->newIterator(pIter) == Acad::eOk)
      {
      for(pIter->start(); !pIter->done(); pIter->step())
      {
          AcDbObjectId objId;
          AcDbEntity *pEnt;
          if(pIter->getEntity(pEnt, AcDb::kForRead) == Acad::eOk)
          {
            AcDbPoint *pPoint = AcDbPoint::cast(pEnt);
            if(pPoint)
            {
            if(_tcsicmp(pPoint->layer(), _T("TESTLAYER")) == 0)
            {
                pPoint->upgradeOpen();
                ids.append(pPoint->objectId());
                pPoint->setLayer(_T("NEWLAYER"));
                cnt++;
            }
            }
            pEnt->close();
          }
      }
      delete pIter;
      }
      pRec->close();
    }
    return cnt;
}
页: [1]
查看完整版本: 初来ARX需要你的帮助!