设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

CAD ObjectARX 插入块的代码

[复制链接]
  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

    发表于 2020-12-29 14:11 | 显示全部楼层 |阅读模式
    1. //获得要插入的块名
    2. CString blockname;
    3. m_listctrl.GetLBText(m_listctrl.GetCurSel(),blockname);

    4. //blockname = "CHART-20";

    5. //寻找是否已经定义
    6. AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase();
    7. AcDbBlockTable *pBlkTable;
    8. AcDbObjectId blockId ;
    9. pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);

    10. if(!pBlkTable->has(blockname))
    11. {
    12. pBlkTable->close();
    13. AcDbDatabase *pDwg =new AcDbDatabase (Adesk::kFalse) ;
    14. char dir[MAX_PATH];
    15. GetModuleFileName(NULL,dir,MAX_PATH);

    16. dir[CString(dir).ReverseFind('\')]='\0';
    17. //AfxMessageBox(CString(dir)+"\\survingpack\"+blockname+".dwg");
    18. pDwg->readDwgFile (CString(dir)+"\\survingpack\"+blockname+".dwg") ;

    19. Acad::ErrorStatus es = pCurDb->insert (blockId, blockname, pDwg);//, Adesk::kFalse) ; //
    20. delete pDwg ;
    21. if ( es != Acad::eOk )
    22. {
    23. acutPrintf ("\n插入块错误.") ;
    24. return;
    25. }
    26. }

    27. else
    28. pBlkTable->getAt(blockname, blockId);


    29. BeginEditorCommand();
    30. //ShowWindow(SW_HIDE);
    31. ads_point pt={0,0,0};
    32. int rc=acedGetPoint(NULL,"\n选择插入点:",pt);
    33. if (rc==RTCAN||rc==RTNONE)
    34. {
    35. acutPrintf("\n*取消了插入操作*");
    36. CancelEditorCommand();
    37. return;
    38. }
    39. CompleteEditorCommand();

    40. //---- 设置插入点,旋转角度,比例等等
    41. AcDbBlockReference *pBlkRef =new AcDbBlockReference(AcGePoint3d(pt[0],pt[1],pt[2]),blockId) ;
    42. //pBlkRef->setBlockTableRecord (blockId) ;
    43. pBlkRef->setScaleFactors(AcGeScale3d(m_scale,m_scale,1));
    44. //pBlkRef->setPosition(AcGePoint3d(pt[0],pt[1],pt[2])) ;
    45. pBlkRef->setRotation (m_angle) ;
    46. pBlkRef->setLayer(NULL); //设置图层



    47. //获得模型空间块表记录
    48. AcDbBlockTable *pBlockTable ;
    49. acdbHostApplicationServices()->workingDatabase()->getBlockTable (pBlockTable, AcDb::kForRead) ;
    50. AcDbBlockTableRecord *pBlockTableRecord ;
    51. pBlockTable->getAt (ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite) ;
    52. pBlockTable->close () ;
    53. pBlockTableRecord->appendAcDbEntity(pBlkRef);

    54. //获得属性
    55. AcDbBlockTableRecord *pBlkDefRecord;
    56. acdbOpenObject(pBlkDefRecord, blockId, AcDb::kForRead);

    57. if(pBlkDefRecord->hasAttributeDefinitions())
    58. {
    59. //AcDbObjectIterator* pBlkIterator = pBlkRef->attributeIterator(); //修改

    60. AcDbBlockTableRecordIterator *pIterator;
    61. pBlkDefRecord->newIterator(pIterator);

    62. for(pIterator->start(); !pIterator->done();pIterator->step())
    63. {
    64. AcDbEntity *pEnt;
    65. pIterator->getEntity(pEnt, AcDb::kForRead);
    66. AcDbAttributeDefinition *pAttDef = AcDbAttributeDefinition::cast(pEnt);

    67. if(pAttDef != NULL && !pAttDef->isConstant())
    68. {
    69. AcDbAttribute* pAtt = new AcDbAttribute();
    70. pAtt->setPropertiesFrom(pAttDef);
    71. pAtt->setInvisible( pAttDef->isInvisible() );

    72. pAtt->setHorizontalMode(pAttDef->horizontalMode());
    73. pAtt->setVerticalMode(pAttDef->verticalMode());

    74. AcGePoint3d basePt = pAttDef->alignmentPoint();
    75. basePt[0]+=pt[0];
    76. basePt[1]+=pt[1];
    77. basePt[2]+=pt[2];
    78. pAtt->setAlignmentPoint(basePt);

    79. pAtt->setHeight(pAttDef->height());
    80. pAtt->setTextStyle(pAttDef->textStyle());

    81. pAtt->setTag(pAttDef->tag());
    82. pAtt->setTextString(m_attrib);
    83. pAtt->setFieldLength(25);

    84. pBlkRef->appendAttribute(pAtt);
    85. pAtt->close();
    86. pEnt->close();
    87. }
    88. }
    89. delete pIterator;
    90. }//end if pBlkDefRecord->hasAttributeDefinitions

    91. pBlkDefRecord->close();
    92. pBlockTableRecord->close();
    93. pBlkRef->close();
    复制代码
    回复


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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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