找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 225|回复: 0

[每日一码] 将指定图层的内容输出到DXF文件

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-23 22:43:48 | 显示全部楼层 |阅读模式
  1. int FilterObjects(ads采用name ss)
  2. {
  3.         int resVal;
  4.         char *chLayerName[] = {"0", "Layer1"};
  5.         struct resbuf * resBufLayerFilter = NULL;
  6.         struct resbuf **resBufTemp;
  7.         resBufTemp = &resBufLayerFilter;
  8.         *resBufTemp = acutBuildList(-4, "<OR", 0);
  9.         resBufTemp = &(*resBufTemp)->rbnext;
  10.         for (int nIndex = 0 ; nIndex<2;nIndex++)
  11.         {
  12.                 *resBufTemp = acutBuildList (8, chLayerName[nIndex], 0);
  13.                 resBufTemp = &(*resBufTemp)->rbnext;
  14.         }      
  15.         *resBufTemp = acutBuildList(-4, "OR>", 0);
  16.         resBufTemp = &(*resBufTemp)->rbnext;
  17.         while(true)
  18.         {
  19.                 //select all objects only on layer '0, Layer1'
  20.                 resVal = acedSSGet(L"采用X", NULL, NULL, resBufLayerFilter, ss);
  21.                 if (resVal == RTCAN || resVal == RTERROR)
  22.                 {
  23.                         //user selected zero objects
  24.                         if (resVal == RTERROR)
  25.                             acutPrintf (L"\nZero objects are selected.\n");
  26.                         acutRelRb(resBufLayerFilter);
  27.                         return resVal;
  28.                 }
  29.                 else
  30.                         break;
  31.         }
  32.         acutRelRb(resBufLayerFilter);
  33.         return resVal;
  34. }
  35. void ADSKDEX()
  36. {
  37.         Acad::ErrorStatus es;
  38.         AcGePoint3d  pt (0.,0.,0.) ;
  39.         AcGeVector3d    ex(1., 0., 0.), ey(0., 1., 0.), ez(0., 0., 1.) ;
  40.         ads采用name SourceSS;
  41.         long  sslen = -1;
  42.         AcDbObjectIdArray ObjIDArray;
  43.         ads采用name ename;
  44.         long  sscur;
  45.         CString ClasseObj, Result;
  46.         AcDbObjectId       eId;
  47.         FilterObjects(SourceSS); //filter the objects based on the layers
  48.         int nRet = acedSSLength(SourceSS, &sslen);
  49.         if (nRet == RTNORM)
  50.         {
  51.                 acutPrintf(L"%d objects selected for export\n",sslen);
  52.         }
  53.         if( acedSSLength( SourceSS, &sslen) != RTNORM)
  54.         {
  55.                 acutPrintf(L"No Objects are selected for export");
  56.                 return;
  57.         }
  58.         for (sscur = 0; sscur < sslen; sscur++)
  59.         {
  60.                 acedSSName(SourceSS, sscur, ename);  
  61.                 acdbGetObjectId(eId, ename);
  62.                 ObjIDArray.append(eId);
  63.         }
  64.         AcDbDatabase *pDB = NULL;
  65.         if( ( es = acdbHostApplicationServices()->workingDatabase()->wblock(
  66.                 pDB, ObjIDArray, pt ))!=Acad::eOk)
  67.         {
  68.                 AfxMessageBox(L"wblock failed", MB采用ICONEXCLAMATION | MB采用OK);
  69.                 return;
  70.         }
  71.         es = pDB->dxfOut(L"c:\\test.dxf");
  72.         if(pDB)
  73.         {
  74.                 delete pDB; // delete the database.
  75.                 pDB = NULL;
  76.         }
  77.         acedSSFree(SourceSS);
  78.         acedSSFree(ename);
  79. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 14:42 , Processed in 0.117234 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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