乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 1

初来ARX需要你的帮助!

[复制链接]

4

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
29
发表于 2009-11-22 16:53:09 | 显示全部楼层 |阅读模式
嗨,
谢谢你的时间。
我是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

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2009-12-1 02:41:36 | 显示全部楼层
这是一个如何迭代数据库的示例,希望它能帮助你
  1. static void doit ()
  2.   {
  3.     AcDbObjectIdArray ids;
  4.     AcDbDatabase *pDb = new AcDbDatabase(false);
  5.     if(pDb->readDwgFile(_T("PathToMyDwg"),_SH_DENYRW)== eOk)
  6.     {
  7.       iterEnts(pDb,ids);
  8.       pDb->saveAs(_T("PathToMyDwg"));
  9.     }
  10.     delete pDb;
  11.   }
  12.   static int iterEnts (AcDbDatabase *pDb, AcDbObjectIdArray &ids)
  13.   {
  14.     int cnt = 0;
  15.     AcDbBlockTableRecord *pRec;
  16.     if(acdbOpenAcDbObject((AcDbObject *&) pRec,
  17.       pDb->currentSpaceId(), AcDb::kForRead) == Acad::eOk)
  18.     {
  19.       AcDbBlockTableRecordIterator *pIter;
  20.       if(pRec->newIterator(pIter) == Acad::eOk)
  21.       {
  22.         for(pIter->start(); !pIter->done(); pIter->step())
  23.         {
  24.           AcDbObjectId objId;
  25.           AcDbEntity *pEnt;
  26.           if(pIter->getEntity(pEnt, AcDb::kForRead) == Acad::eOk)
  27.           {
  28.             AcDbPoint *pPoint = AcDbPoint::cast(pEnt);
  29.             if(pPoint)
  30.             {
  31.               if(_tcsicmp(pPoint->layer(), _T("TESTLAYER")) == 0)
  32.               {
  33.                 pPoint->upgradeOpen();
  34.                 ids.append(pPoint->objectId());
  35.                 pPoint->setLayer(_T("NEWLAYER"));
  36.                 cnt++;
  37.               }
  38.             }
  39.             pEnt->close();
  40.           }
  41.         }
  42.         delete pIter;
  43.       }
  44.       pRec->close();
  45.     }
  46.     return cnt;
  47.   }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 22:00 , Processed in 0.291565 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表