设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 149|回复: 0

CAD 克隆实体 块插入

[复制链接]
  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

    发表于 2020-12-29 14:11 | 显示全部楼层 |阅读模式
    1. #include   "StdAfx.h"  
    2.   #include   "StdArx.h"  
    3.   #include   "stdafx.h"  
    4.   #include   "resource.h"  
    5.   #include   "acutads.h"  
    6.   #include   "dbents.h"  
    7.   #include   "dbpl.h"  
    8.   #include   "MALLOC.h"  
    9.   #include   "STDLIB.h"  
    10.   #include   "acedads.h"  
    11.   #include   "acutads.h"  
    12.   #include   "dbmtext.h   "  
    13.   #include  <stdio.h>  
    14.   #include   "dbapserv.h"  
    15.   #include   "dbidmap.h"  
    16.   #include   "dbsymutl.h"  
    17.   #include   "dbsymtb.h"  
    18.   #include   "actrans.h"  
    19.    
    20. //-----------------------------------------------------------------------------  
    21.   //   This   is   command   'INSERTBLOCK_1,   by    [六月/25/2002],   ,   
    22.   void   SKDInsertBlock_1()  
    23.   {  
    24.   #ifdef   OARXWIZDEBUG  
    25.   acutPrintf   ("\nOARXWIZDEBUG   -   SKDInsertBlock_1()   called.");  
    26.   #endif   //  OARXWIZDEBUG  
    27.    
    28.    
    29.    
    30.   //Program   Start  
    31.    
    32.   //获得块的插入点  
    33.   ads_point   Pnt1;  
    34.   AcGePoint3d   insertPt;  
    35.   if  (acedGetPoint(NULL,"\nPlease   give   me   Insert  point:",Pnt1)!=RTNORM)  
    36.   {  
    37.   acutPrintf("\n...User  Cancel\n");  
    38.   return;  
    39.   }  
    40.   insertPt[X]=Pnt1[X];  
    41.   insertPt[Y]=Pnt1[Y];  
    42.   insertPt[Z]=0;  
    43.   //对数据库操作开始  
    44.   AcDbDatabase   *pCurrentDb   =   NULL;  //用于指向当前数据库  
    45.   AcDbDatabase   *pSourceDb   =   new  AcDbDatabase;//用于指向后台数据库  
    46.   AcDbObjectId   InsertblockId;   //块的ObjctId  
    47.   AcDbObjectId  referenceId;//快参考的ObjectId  
    48.   AcDbIdMapping   pIdMap;  
    49.   AcDbObjectIdArray   list;  
    50.   AcDbObjectId   MyBlockId;  
    51.   AcDbBlockTable   *pBlockTable   =   NULL;  
    52.   AcDbBlockTableRecord  *pBlockTableRecord;  
    53.   char   *pBlockName;  
    54.   AcDbBlockTableIterator  *pLtIterator;  
    55.    
    56. //*********************************************************************************  
    57.   //以后台方式打开TCAD01.dwt数据库  
    58. pSourceDb->readDwgFile("c:\\MapMaper\\TCAD01.dwt");       //Line     79  
    59. pSourceDb->getSymbolTable(pBlockTable,AcDb::kForRead);   //Line     80  
    60.   //以前台方式打开TCAD01.dwt数据库  
    61. //acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable,AcDb::kForRead);   //Line     82  
    62.         //***********************************************************************************  
    63.    
    64.    
    65.   //以下for语句用于测试块表中的块的名称     
    66.   //!!!  问题在于如果以后台方式打开就无法访问块表,如果以前台打开(当前文档就是TCAD01.dwt)就可以   Why???  
    67. pBlockTable->newIterator(pLtIterator);  
    68. for(;!pLtIterator->done();pLtIterator->step   ())  
    69.   {  
    70. pLtIterator->getRecord(pBlockTableRecord,AcDb::kForRead);  
    71. pBlockTableRecord->getName(pBlockName);  
    72.   pBlockTableRecord->close();  
    73.   acutPrintf("\n   Block   Name   is:  %s",pBlockName);  
    74.   }  
    75.   /////////////////////////////////////  
    76.    
    77.   delete   pLtIterator;  
    78.   if(pBlockTable->has("1"))  
    79.   {  
    80. pBlockTable->getAt("1",MyBlockId);  
    81.   list.append(   MyBlockId   );  
    82.   AcDbDatabase  *curDb=acdbHostApplicationServices()->workingDatabase();  
    83.   AcDbObjectId   ablockId   =   NULL;  
    84. AcDbSymbolUtilities::getBlockId(ablockId,ACDB_MODEL_SPACE,curDb);  
    85.   pSourceDb->deepCloneObjects   (list,ablockId,pIdMap);//复制块到当前打开的文档  
    86.    
    87.   AcDbBlockReference  *pBlockReference   =   new   AcDbBlockReference;  
    88. pBlockReference->setBlockTableRecord(MyBlockId);  
    89. pBlockReference->setPosition(insertPt);   //设置插入点  
    90. pBlockReference->setRotation(0);//设置旋转角度  
    91. pBlockReference->setLayer("0");//为插入的图块设置图层  
    92. pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);  
    93. pBlockTableRecord->appendAcDbEntity(referenceId,pBlockReference);  
    94.   pBlockTable->close();  
    95.   pBlockTableRecord->close();  
    96.   pBlockReference->close();  
    97.    
    98.   }  
    99.   else   
    100.   {  
    101.   pBlockTable->close();  
    102.   pSourceDb->closeInput();  
    103.   delete   pSourceDb;  
    104.   return;    //没有图块返回  
    105.   }  
    106.   pBlockTable->close();  
    107.   pSourceDb->closeInput();  
    108.   delete   pSourceDb;  
    109.   //Program   End  
    110.    
    111.   }  
    复制代码
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

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

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛