设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

arx创建块源码

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

    [LV.Master]伴坛终老

    发表于 2020-12-27 20:25 | 显示全部楼层 |阅读模式
    1. class BlockDrawCar
    2. {
    3. public:
    4.         void DrawBlock(AcDbBlockTableRecord *btr)
    5.         {
    6.                 Acad::ErrorStatus es;

    7.                 // Draw a rectangle polyline
    8.                 AcDbPolyline *pline = new AcDbPolyline();
    9.                 AcGePoint2d p0(0.0, 0.0), p1(m_Length, 0.0);
    10.                 AcGePoint2d p2(m_Length, m_Width), p3(0.0, m_Width);
    11.                 pline->addVertexAt(0, p0);
    12.                 pline->addVertexAt(1, p1);
    13.                 pline->addVertexAt(2, p2);
    14.                 pline->addVertexAt(3, p3);
    15.                 pline->setClosed(true);
    16.                 pline->setDatabaseDefaults();
    17.                 pline->setColorIndex(m_Color);
    18.                 es = btr->appendAcDbEntity(pline);
    19.                 if (!es)
    20.                         pline->close();
    21.                 else
    22.                         delete pline;

    23.                 // Draw a circle
    24.                 AcDbCircle *circle = new AcDbCircle();
    25.                 AcGePoint3d center(m_Width / 2, m_Width / 2, 0.0);
    26.                 double radius = m_Width * 0.4;
    27.                 circle->setCenter(center);
    28.                 circle->setRadius(radius);
    29.                 circle->setDatabaseDefaults();
    30.                 circle->setColorIndex(m_Color);
    31.                 es = btr->appendAcDbEntity(circle);
    32.                 if (!es)
    33.                         circle->close();
    34.                 else
    35.                         delete circle;
    36.         }

    37. public:
    38.         int m_Color=7;
    39.         double m_Width=200;
    40.         double m_Length=340;
    41. };


    42. AcDbObjectId CreateCarBlock(AcDbDatabase *db, LPCWSTR blockname)
    43. {
    44.         Acad::ErrorStatus es;
    45.         AcDbBlockTableRecord *btr = new AcDbBlockTableRecord;
    46.         BlockDrawCar *car = new BlockDrawCar;
    47.         car->DrawBlock(btr);
    48.         btr->setName(blockname);

    49.         // Add the BTR to the Blocktable of the current drawing
    50.         AcDbObjectId BtrID;
    51.         AcDbBlockTable *blocktable;
    52.         es = db->getBlockTable(blocktable, AcDb::kForWrite);
    53.         if (!es)
    54.         {
    55.                 es = blocktable->add(BtrID, btr);
    56.                 if (!es)
    57.                         btr->close();
    58.                 else
    59.                         delete btr;
    60.                 blocktable->close();
    61.         }

    62.         return BtrID;
    63. }

    64. AcDbObjectId FindBlock(AcDbDatabase *db, LPCWSTR blockname)
    65. {
    66.         AcDbObjectId BlockID;
    67.         Acad::ErrorStatus es;
    68.         AcDbBlockTable *blocktable;
    69.         es = db->getBlockTable(blocktable, AcDb::kForRead);
    70.         if (!es)
    71.         {
    72.                 es = blocktable->getAt(blockname, BlockID);
    73.                 blocktable->close();
    74.         }
    75.         return BlockID;
    76. }

    77. Acad::ErrorStatus PostToDb(AcDbDatabase *db, AcDbObjectId& objId, AcDbEntity* pEnt)
    78. {
    79.         Acad::ErrorStatus      es;
    80.         AcDbBlockTable*        blocktable = 0;
    81.         AcDbBlockTableRecord*  modelspace = 0;

    82.         if ((es = db->getBlockTable(blocktable, AcDb::kForRead)) != Acad::eOk)
    83.                 return es;

    84.         if ((es = blocktable->getAt(ACDB_MODEL_SPACE, modelspace, AcDb::kForWrite)) == Acad::eOk)
    85.         {
    86.                 es = modelspace->appendAcDbEntity(objId, pEnt);
    87.                 modelspace->close();
    88.         }
    89.         blocktable->close();

    90.         return es;
    91. }

    92. void cmdDrawCar()
    93. {
    94.         Acad::ErrorStatus es;
    95.         LPCWSTR blockname = L"*U"; // Blockname. This is for an unnamed block.
    96.         blockname = L"car"; // And this for a named block

    97.         AcDbDatabase *db = acdbHostApplicationServices()->workingDatabase();
    98.         AcDbObjectId BtrID;
    99.         if (blockname[0]!=L'*') // '*' as first char means: Unnamed block. Don't search for it.
    100.                 BtrID = FindBlock(db, blockname); // Search for an existing named block

    101.         if (BtrID.isNull())
    102.                 BtrID = CreateCarBlock(db, blockname); // For "*U" AutoCAD will create unique names like "*U1", "*U2", ...

    103.         if (BtrID.isNull())
    104.         {
    105.                 acutPrintf(L"\nFailed.");
    106.                 return;
    107.         }

    108.         // Now create a block reference
    109.         AcDbBlockReference *bref = new AcDbBlockReference;
    110.         bref->setDatabaseDefaults();
    111.         bref->setBlockTableRecord(BtrID);

    112.         AcGeVector3d insertionPoint;
    113.         acedGetPoint(nullptr, L"\nInsertion point: ", asDblArray(insertionPoint));
    114.         AcGeMatrix3d trans; // the transformation matrix
    115.         trans.setToTranslation(insertionPoint);
    116.         bref->setBlockTransform(trans);

    117.         // Append it to modelspace
    118.         AcDbObjectId BrefID;
    119.         es = PostToDb(db, BrefID, bref);
    120.         if (!es)
    121.                 bref->close();
    122.         else
    123.                 delete bref;
    124. }
    复制代码
    回复


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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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