设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ARX(adn-cis.org)

[复制链接]
  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

    发表于 2020-12-29 18:21 | 显示全部楼层 |阅读模式
    1. [code]static void MyGroupTestTrans() {
    2.   AcDbObjectId id;
    3.   AcDbObject *pObj1 = nullptr, *pObj2 = nullptr;
    4.   Acad::ErrorStatus es;

    5.   // создать объект AcDbLine с фиксированными координатами начала и конца
    6.   AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase();
    7.   AcDbBlockTable *pBlockTable = nullptr;
    8.   pCurDb->getSymbolTable(pBlockTable, AcDb::kForRead);
    9.   AcDbBlockTableRecord *pModelSpace = nullptr;
    10.   pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForWrite);
    11.   pBlockTable->close();
    12.   AcGePoint3d startPt(0.0, 0.0, 0.0), endPt(2000.0, 1000.0, 0.0);
    13.   AcDbLine *pLine = new AcDbLine(startPt, endPt);
    14.   pModelSpace->appendAcDbEntity(id, pLine);
    15.   pLine->close();
    16.   pModelSpace->close();

    17.   // открытие объекта через транзакции
    18.   AcTransaction *pTrans1 = actrTransactionManager->startTransaction();

    19.   es = pTrans1->getObject(pObj1, id, AcDb::kForWrite, false);
    20.   if (es != Acad::eOk)
    21.     acutPrintf(L"pTrans1->getObject() ErrorStatus = %s\n", acadErrorStatusText(es));

    22.   AcTransaction *pTrans2 = actrTransactionManager->startTransaction();

    23.   es = pTrans2->getObject(pObj2, id, AcDb::kForNotify, false);
    24.   if (es != Acad::eOk)
    25.     acutPrintf(L"pTrans2->getObject() ErrorStatus = %s\n", acadErrorStatusText(es));

    26.   es = actrTransactionManager->endTransaction();
    27.   es = actrTransactionManager->endTransaction();

    28.   //////////////////////////////////////////////////////////////////////////
    29.   //  Используем новые интеллектуальные указатели
    30.   //////////////////////////////////////////////////////////////////////////
    31.   AcDbSmartObjectPointer<AcDbEntity> pEnt(id, AcDb::OpenMode::kForWrite);
    32.   if ((es = pEnt.openStatus()) == Acad::eOk)
    33.   {
    34.     pEnt->erase(Adesk::kTrue);
    35.   }
    36.   else
    37.   {
    38.     acutPrintf(L"pEnt.openStatus() ErrorStatus = %s\n", acadErrorStatusText(es));
    39.   }
    40. }
    复制代码
    [/code]
    回复


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

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:21 | 显示全部楼层
    1. void Test_Trans() {

    2.         AcDbObjectId id;
    3.         AcDbObject *pObj1 = nullptr, *pObj2 = nullptr;
    4.         Acad::ErrorStatus es;

    5.         // создать объект AcDbLine с фиксированными координатами начала и конца
    6.         AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase();
    7.         AcDbBlockTable *pBlockTable = nullptr;
    8.         pCurDb->getSymbolTable(pBlockTable, AcDb::kForRead);
    9.         AcDbBlockTableRecord *pModelSpace = nullptr;
    10.         pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForWrite);
    11.         pBlockTable->close();
    12.         AcGePoint3d startPt(0.0, 0.0, 0.0), endPt(2000.0, 1000.0, 0.0);
    13.         AcDbLine *pLine = new AcDbLine(startPt, endPt);
    14.         pModelSpace->appendAcDbEntity(id, pLine);
    15.         pLine->close();
    16.         pModelSpace->close();

    17.         // открытие объекта через транзакции
    18.         AcTransaction *pTrans1 = actrTransactionManager->startTransaction();

    19.         es = pTrans1->getObject(pObj1, id, AcDb::kForWrite, false);
    20.         if (es != Acad::eOk)
    21.                 acutPrintf(L"pTrans1->getObject() ErrorStatus = %d\n", (int)es);

    22.         AcTransaction *pTrans2 = actrTransactionManager->startTransaction();

    23.         es = pTrans2->getObject(pObj2, id, AcDb::kForNotify, false);
    24.         if (es != Acad::eOk)
    25.                 acutPrintf(L"pTrans2->getObject() ErrorStatus = %d\n", (int)es);

    26.         actrTransactionManager->endTransaction();
    27.         actrTransactionManager->endTransaction();

    28.         AcDbEntity *pEnt = NULL;
    29.         // первая попытка прибить объект
    30.         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    31.         if (pEnt && es == Acad::eOk) {
    32.                 pEnt->erase(Adesk::kTrue);
    33.                 pEnt->close();
    34.         }
    35.         else {
    36.                 acutPrintf(L"ErrorStatus = %d\n", (int)es);

    37.                 if (pObj1 && id.isResident()) {
    38.                         bool needFix = false;
    39.                         if (pObj1->isReadEnabled()) {
    40.                                 acutPrintf(L"--- Read enabled\n");
    41.                                 needFix = true;
    42.                         }
    43.                         if (pObj1->isWriteEnabled()) {
    44.                                 acutPrintf(L"--- Write enabled\n");
    45.                                 needFix = true;
    46.                         }
    47.                         if (pObj1->isNotifyEnabled()) {
    48.                                 acutPrintf(L"--- Notify enabled\n");
    49.                                 needFix = true;
    50.                         }
    51.                         if (needFix)
    52.                                 pObj1->close();

    53.                         // вторая попытка прибить объект
    54.                         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    55.                         if (pEnt && es == Acad::eOk) {
    56.                                 pEnt->erase(Adesk::kTrue);
    57.                                 pEnt->close();
    58.                         }
    59.                         else
    60.                                 acutPrintf(L"ErrorStatus = %d\n", (int)es);
    61.                 }
    62.         }
    63. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:22 | 显示全部楼层
    1. void Test_Trans() {

    2.         AcDbObjectId id;
    3.         AcDbObject *pObj1 = nullptr, *pObj2 = nullptr;
    4.         Acad::ErrorStatus es;

    5.         // создать объект AcDbLine с фиксированными координатами начала и конца
    6.         AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase();
    7.         AcDbBlockTable *pBlockTable = nullptr;
    8.         pCurDb->getSymbolTable(pBlockTable, AcDb::kForRead);
    9.         AcDbBlockTableRecord *pModelSpace = nullptr;
    10.         pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForWrite);
    11.         pBlockTable->close();
    12.         AcGePoint3d startPt(0.0, 0.0, 0.0), endPt(2000.0, 1000.0, 0.0);
    13.         AcDbLine *pLine = new AcDbLine(startPt, endPt);
    14.         pModelSpace->appendAcDbEntity(id, pLine);
    15.         pLine->close();
    16.         pModelSpace->close();

    17.         // открытие объекта через транзакции
    18.         AcTransaction *pTrans1 = actrTransactionManager->startTransaction();

    19.         es = pTrans1->getObject(pObj1, id, AcDb::kForWrite, false);
    20.         if (es != Acad::eOk)
    21.                 acutPrintf(L"pTrans1->getObject() ErrorStatus = %d\n", (int)es);

    22.         AcTransaction *pTrans2 = actrTransactionManager->startTransaction();

    23.         es = pTrans2->getObject(pObj2, id, AcDb::kForNotify, false);
    24.         if (es != Acad::eOk)
    25.                 acutPrintf(L"pTrans2->getObject() ErrorStatus = %d\n", (int)es);

    26.         actrTransactionManager->endTransaction();
    27.         actrTransactionManager->endTransaction();

    28.         AcDbEntity *pEnt = NULL;
    29.         // первая попытка прибить объект
    30.         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    31.         if (pEnt && es == Acad::eOk) {
    32.                 pEnt->erase(Adesk::kTrue);
    33.                 pEnt->close();
    34.         }
    35.         else {
    36.                 acutPrintf(L"ErrorStatus = %d\n", (int)es);

    37.                 if (pObj1 && id.isResident()) {
    38.                         bool needFix = false;
    39.                         if (pObj1->isReadEnabled()) {
    40.                                 acutPrintf(L"--- Read enabled\n");
    41.                                 needFix = true;
    42.                         }
    43.                         if (pObj1->isWriteEnabled()) {
    44.                                 acutPrintf(L"--- Write enabled\n");
    45.                                 needFix = true;
    46.                         }
    47.                         if (pObj1->isNotifyEnabled()) {
    48.                                 acutPrintf(L"--- Notify enabled\n");
    49.                                 needFix = true;
    50.                         }
    51.                         if (needFix)
    52.                                 pObj1->close();

    53.                         // вторая попытка прибить объект
    54.                         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    55.                         if (pEnt && es == Acad::eOk) {
    56.                                 pEnt->erase(Adesk::kTrue);
    57.                                 pEnt->close();
    58.                         }
    59.                         else
    60.                                 acutPrintf(L"ErrorStatus = %d\n", (int)es);
    61.                 }
    62.         }
    63. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:22 | 显示全部楼层
    1. void Test_Trans() {

    2.         AcDbObjectId id;
    3.         AcDbObject *pObj1 = nullptr, *pObj2 = nullptr;
    4.         Acad::ErrorStatus es;

    5.         // создать объект AcDbLine с фиксированными координатами начала и конца
    6.         AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase();
    7.         AcDbBlockTable *pBlockTable = nullptr;
    8.         pCurDb->getSymbolTable(pBlockTable, AcDb::kForRead);
    9.         AcDbBlockTableRecord *pModelSpace = nullptr;
    10.         pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForWrite);
    11.         pBlockTable->close();
    12.         AcGePoint3d startPt(0.0, 0.0, 0.0), endPt(2000.0, 1000.0, 0.0);
    13.         AcDbLine *pLine = new AcDbLine(startPt, endPt);
    14.         pModelSpace->appendAcDbEntity(id, pLine);
    15.         pLine->close();
    16.         pModelSpace->close();

    17.         // открытие объекта через транзакции
    18.         AcTransaction *pTrans1 = actrTransactionManager->startTransaction();

    19.         es = pTrans1->getObject(pObj1, id, AcDb::kForWrite, false);
    20.         if (es != Acad::eOk)
    21.                 acutPrintf(L"pTrans1->getObject() ErrorStatus = %d\n", (int)es);

    22.         AcTransaction *pTrans2 = actrTransactionManager->startTransaction();

    23.         es = pTrans2->getObject(pObj2, id, AcDb::kForNotify, false);
    24.         if (es != Acad::eOk)
    25.                 acutPrintf(L"pTrans2->getObject() ErrorStatus = %d\n", (int)es);

    26.         actrTransactionManager->endTransaction();
    27.         actrTransactionManager->endTransaction();

    28.         AcDbEntity *pEnt = NULL;
    29.         // первая попытка прибить объект
    30.         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    31.         if (pEnt && es == Acad::eOk) {
    32.                 pEnt->erase(Adesk::kTrue);
    33.                 pEnt->close();
    34.         }
    35.         else {
    36.                 acutPrintf(L"ErrorStatus = %d\n", (int)es);

    37.                 if (pObj1 && id.isResident()) {
    38.                         bool needFix = false;
    39.                         if (pObj1->isReadEnabled()) {
    40.                                 acutPrintf(L"--- Read enabled\n");
    41.                                 needFix = true;
    42.                         }
    43.                         if (pObj1->isWriteEnabled()) {
    44.                                 acutPrintf(L"--- Write enabled\n");
    45.                                 needFix = true;
    46.                         }
    47.                         if (pObj1->isNotifyEnabled()) {
    48.                                 acutPrintf(L"--- Notify enabled\n");
    49.                                 needFix = true;
    50.                         }
    51.                         if (needFix)
    52.                                 pObj1->close();

    53.                         // вторая попытка прибить объект
    54.                         es = acdbOpenObject(pEnt, id, AcDb::OpenMode::kForWrite);
    55.                         if (pEnt && es == Acad::eOk) {
    56.                                 pEnt->erase(Adesk::kTrue);
    57.                                 pEnt->close();
    58.                         }
    59.                         else
    60.                                 acutPrintf(L"ErrorStatus = %d\n", (int)es);
    61.                 }
    62.         }
    63. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:23 | 显示全部楼层
    1. AcDbObjectId hatchId = addHatch(...);
    2. if (hatchId != NULL)
    3. {
    4.         object_SendAfterTaget(hatchId,contId);
    5.         resIds.append(hatchId);
    6. }
    7. AcDbObjectPointer<AcDbHatch> pHatchPtr(hatchId,AcDb::kForWrite);
    8. if (pHatchPtr.openStatus () == Acad::eOk)
    9. {
    10.         AcGePoint2d originPoint2dUCS = AcGePoint2d(0.0,0.0);
    11.         AcGePoint3d pTempPt = pt_ll; // левый нижний угол прямоугольничка, который нужно заштриховать
    12.         acdbUcs2Wcs(asDblArray(pTempPt),asDblArray(pTempPt),false);
    13.         originPoint2dUCS.x = pTempPt.x;
    14.         originPoint2dUCS.y = pTempPt.y;
    15.         Acad::ErrorStatus es;
    16.         es = pHatchPtr->setOriginPoint(originPoint2dUCS); // выставить базовую точку . возврат - eOk
    17.         es = pHatchPtr->setPattern(AcDbHatch::kPreDefined, pColumnData.at(i).hatchName.GetString()); // на всякий случай еще раз указать имя. возврат - eOk
    18.         es = pHatchPtr->evaluateHatch(); // пересчитать. возврат - eOk
    19.         es = pHatchPtr->draw(); // отрисовать. возврат - eOk

    20.         AcGePoint2dArray arSt,arEnd;
    21.         es = pHatchPtr->getHatchLinesData(arSt,arEnd);
    22.         pHatchPtr->close();
    23.         if (es == Acad::eOk && arSt.isEmpty() && arEnd.isEmpty())
    24.                 deleteEntities(hatchId);
    25. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:23 | 显示全部楼层
    1. //-----------------------------------------------------------------------------
    2. //----- acrxEntryPoint.cpp
    3. //-----------------------------------------------------------------------------
    4. #include "StdAfx.h"
    5. #include "resource.h"
    6. #include "atlsafe.h"

    7. #import <mscorlib.tlb> raw_interfaces_only rename("ReportEvent","ReportEventManaged")

    8. #include <metahost.h>
    9. #pragma comment(lib,"mscoree.lib")
    10. #include <mscoree.h>
    11. #include <comdef.h>

    12. using namespace mscorlib;

    13. //-----------------------------------------------------------------------------
    14. #define szRDS _RXST("")

    15. //-----------------------------------------------------------------------------
    16. //----- ObjectARX EntryPoint
    17. class CGetMgdFromNativeApp : public AcRxArxApp {

    18. public:
    19.   CGetMgdFromNativeApp() : AcRxArxApp() {}

    20.   virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
    21.     AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
    22.     return (retCode);
    23.   }

    24.   virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
    25.     AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
    26.     return (retCode);
    27.   }

    28.   virtual void RegisterServerComponents() {
    29.     //----- Self-register COM server upon loading.
    30.     if (FAILED(::DllRegisterServer()))
    31.       acutPrintf(_RXST("Failed to register COM server.\n"));
    32.   }

    33.   static void RivilisGetManagedDlls() {
    34.     // Put your command code here
    35.     CComPtr<ICLRMetaHost> spClrMetaHost;
    36.     // get a MetaHost
    37.     HRESULT hr = CLRCreateInstance(
    38.       CLSID_CLRMetaHost,
    39.       IID_PPV_ARGS(&spClrMetaHost)
    40.     );
    41.     _ASSERT(hr == S_OK);

    42.     // get a particular runtime version
    43.     CComPtr<ICLRRuntimeInfo> spCLRRuntimeInfo;
    44.     hr = spClrMetaHost->GetRuntime(L"v4.0.30319",
    45.       IID_PPV_ARGS(&spCLRRuntimeInfo)
    46.     );
    47.     _ASSERT(hr == S_OK);

    48.     // get the CorRuntimeHost
    49.     CComPtr<ICorRuntimeHost> spCorRuntimeHost;
    50.     hr = spCLRRuntimeInfo->GetInterface(
    51.       CLSID_CorRuntimeHost,
    52.       IID_PPV_ARGS(&spCorRuntimeHost)
    53.     );
    54.     _ASSERT(hr == S_OK);

    55.     // Start the CLR
    56.     hr = spCorRuntimeHost->Start();
    57.     _ASSERT(hr == S_OK);

    58.     // get the Default app domain as an IUnknown
    59.     CComPtr<IUnknown> spAppDomainThunk;
    60.     hr = spCorRuntimeHost->GetDefaultDomain(&spAppDomainThunk);
    61.     _ASSERT(hr == S_OK);

    62.     // convert the Appdomain IUnknown to a _AppDomain
    63.     CComPtr<_AppDomain> spAppDomain;
    64.     hr = spAppDomainThunk->QueryInterface(IID_PPV_ARGS(&spAppDomain));
    65.     _ASSERT(hr == S_OK);
    66.     SAFEARRAY *pAssemblyArray = NULL;
    67.     hr = spAppDomain->GetAssemblies(&pAssemblyArray);
    68.     _ASSERT(hr == S_OK);

    69.     CComSafeArray<IUnknown*> csaAssemblies;
    70.     csaAssemblies.Attach(pAssemblyArray);
    71.     long cAssemblies = csaAssemblies.GetCount();
    72.     for (long i = 0; i < cAssemblies; i++)
    73.     {
    74.       CComPtr<_Assembly> spAssembly;
    75.       spAssembly = csaAssemblies[i];
    76.       if (spAssembly == NULL)
    77.         continue;
    78.       CComBSTR asmFullName;
    79.       hr = spAssembly->get_FullName(&asmFullName);
    80.       if (FAILED(hr))
    81.         continue;
    82.       acutPrintf(L"\nFull Name:%s", asmFullName);
    83.       CComBSTR asmLocatation;
    84.       hr = spAssembly->get_Location(&asmLocatation);
    85.       if (!FAILED(hr))
    86.         acutPrintf(L"\n\tLocation: %s", asmLocatation);
    87.       else
    88.         acutPrintf(L"\n\tLocation not found");
    89.     }

    90.     hr = spCorRuntimeHost->Stop();
    91.     _ASSERT(hr == S_OK);

    92.   }

    93. };

    94. //-----------------------------------------------------------------------------
    95. IMPLEMENT_ARX_ENTRYPOINT(CGetMgdFromNativeApp)

    96. ACED_ARXCOMMAND_ENTRY_AUTO(CGetMgdFromNativeApp, Rivilis, GetManagedDlls, GetManagedDlls, ACRX_CMD_MODAL, NULL)
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:24 | 显示全部楼层
    1. //-----------------------------------------------------------------------------
    2. //----- acrxEntryPoint.cpp
    3. //-----------------------------------------------------------------------------
    4. #include "StdAfx.h"
    5. #include "resource.h"
    6. using namespace System;
    7. using namespace System::Reflection;
    8. using namespace Autodesk::AutoCAD::ApplicationServices;
    9. using namespace Autodesk::AutoCAD::DatabaseServices;
    10. using namespace Autodesk::AutoCAD::EditorInput;


    11. //-----------------------------------------------------------------------------
    12. #define szRDS _RXST("")

    13. //-----------------------------------------------------------------------------
    14. //----- ObjectARX EntryPoint
    15. class CGetLoadedApp : public AcRxArxApp {

    16. public:
    17.   CGetLoadedApp() : AcRxArxApp() {}

    18.   virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
    19.     AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
    20.     return (retCode);
    21.   }

    22.   virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
    23.     AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
    24.     return (retCode);
    25.   }

    26.   virtual void RegisterServerComponents() {  }

    27.   static void RivilisGetLoadedMGD() {
    28.     Document^ doc = Application::DocumentManager->MdiActiveDocument;

    29.     if (doc == nullptr) return;
    30.     Editor^ ed = doc->Editor;
    31.     for each (Assembly^ ass in AppDomain::CurrentDomain->GetAssemblies())
    32.     {
    33.       ed->WriteMessage("\nName = {0}", ass->GetName(false)->Name);
    34.       ed->WriteMessage("\n\tFull Name = {0}", ass->FullName);
    35.       try  {
    36.         ed->WriteMessage("\n\tLocation = {0}", ass->Location);
    37.       }
    38.       catch (...) {
    39.         ed->WriteMessage("\n\tNo Location. Possible dynamic assembly");
    40.       };
    41.     }
    42.   }
    43. };

    44. //-----------------------------------------------------------------------------
    45. IMPLEMENT_ARX_ENTRYPOINT(CGetLoadedApp)

    46. ACED_ARXCOMMAND_ENTRY_AUTO(CGetLoadedApp, Rivilis, GetLoadedMGD, GetLoadedMGD, ACRX_CMD_MODAL, NULL)
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:25 | 显示全部楼层
    1. //-----------------------------------------------------------------------------
    2. //----- acrxEntryPoint.cpp
    3. //-----------------------------------------------------------------------------
    4. #include "StdAfx.h"
    5. #include "resource.h"
    6. #include "atlsafe.h"

    7. #import <mscorlib.tlb> raw_interfaces_only rename("ReportEvent","ReportEventManaged")

    8. #include <metahost.h>
    9. #pragma comment(lib,"mscoree.lib")
    10. #include <mscoree.h>
    11. #include <comdef.h>

    12. using namespace mscorlib;

    13. //-----------------------------------------------------------------------------
    14. #define szRDS _RXST("")

    15. //-----------------------------------------------------------------------------
    16. //----- ObjectARX EntryPoint
    17. class CGetMgdFromNativeApp : public AcRxArxApp {

    18. public:
    19.   CGetMgdFromNativeApp() : AcRxArxApp() {}

    20.   virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
    21.     AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
    22.     return (retCode);
    23.   }

    24.   virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
    25.     AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
    26.     return (retCode);
    27.   }

    28.   virtual void RegisterServerComponents() {
    29.     //----- Self-register COM server upon loading.
    30.     if (FAILED(::DllRegisterServer()))
    31.       acutPrintf(_RXST("Failed to register COM server.\n"));
    32.   }

    33.   static void RivilisGetManagedDlls() {
    34.     // Put your command code here
    35.     CComPtr<ICLRMetaHost> spClrMetaHost;
    36.     // get a MetaHost
    37.     HRESULT hr = CLRCreateInstance(
    38.       CLSID_CLRMetaHost,
    39.       IID_PPV_ARGS(&spClrMetaHost)
    40.     );
    41.     _ASSERT(hr == S_OK);

    42.     // get a particular runtime version
    43.     CComPtr<ICLRRuntimeInfo> spCLRRuntimeInfo;
    44.     hr = spClrMetaHost->GetRuntime(L"v4.0.30319",
    45.       IID_PPV_ARGS(&spCLRRuntimeInfo)
    46.     );
    47.     _ASSERT(hr == S_OK);

    48.     // get the CorRuntimeHost
    49.     CComPtr<ICorRuntimeHost> spCorRuntimeHost;
    50.     hr = spCLRRuntimeInfo->GetInterface(
    51.       CLSID_CorRuntimeHost,
    52.       IID_PPV_ARGS(&spCorRuntimeHost)
    53.     );
    54.     _ASSERT(hr == S_OK);

    55.     // Start the CLR
    56.     hr = spCorRuntimeHost->Start();
    57.     _ASSERT(hr == S_OK);

    58.     // get the Default app domain as an IUnknown
    59.     CComPtr<IUnknown> spAppDomainThunk;
    60.     hr = spCorRuntimeHost->GetDefaultDomain(&spAppDomainThunk);
    61.     _ASSERT(hr == S_OK);

    62.     // convert the Appdomain IUnknown to a _AppDomain
    63.     CComPtr<_AppDomain> spAppDomain;
    64.     hr = spAppDomainThunk->QueryInterface(IID_PPV_ARGS(&spAppDomain));
    65.     _ASSERT(hr == S_OK);
    66.     SAFEARRAY *pAssemblyArray = NULL;
    67.     hr = spAppDomain->GetAssemblies(&pAssemblyArray);
    68.     _ASSERT(hr == S_OK);

    69.     CComSafeArray<IUnknown*> csaAssemblies;
    70.     csaAssemblies.Attach(pAssemblyArray);
    71.     long cAssemblies = csaAssemblies.GetCount();
    72.     for (long i = 0; i < cAssemblies; i++)
    73.     {
    74.       CComPtr<_Assembly> spAssembly;
    75.       spAssembly = csaAssemblies[i];
    76.       if (spAssembly == NULL)
    77.         continue;
    78.       CComBSTR asmFullName;
    79.       hr = spAssembly->get_FullName(&asmFullName);
    80.       if (FAILED(hr))
    81.         continue;
    82.       acutPrintf(L"\nFull Name:%s", asmFullName);
    83.       CComBSTR asmLocatation;
    84.       hr = spAssembly->get_Location(&asmLocatation);
    85.       if (!FAILED(hr))
    86.         acutPrintf(L"\n\tLocation: %s", asmLocatation);
    87.       else
    88.         acutPrintf(L"\n\tLocation not found");
    89.     }

    90.     hr = spCorRuntimeHost->Stop();
    91.     _ASSERT(hr == S_OK);

    92.   }

    93. };

    94. //-----------------------------------------------------------------------------
    95. IMPLEMENT_ARX_ENTRYPOINT(CGetMgdFromNativeApp)

    96. ACED_ARXCOMMAND_ENTRY_AUTO(CGetMgdFromNativeApp, Rivilis, GetManagedDlls, GetManagedDlls, ACRX_CMD_MODAL, NULL)
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:25 | 显示全部楼层
    1. #pragma once
    2. #ifndef PRINTOOLS_H
    3. #define PRINTOOLS_H

    4. namespace PrintTools
    5. {
    6.         struct Page
    7.         {
    8.                 CString PageName;
    9.                 double minx;
    10.                 double miny;
    11.                 double maxx;
    12.                 double maxy;
    13.         };

    14.         inline AcPlDSDData createDSD(AcPlDSDEntries entries,
    15.                                                                  CString projectPath,
    16.                                                                  CString destinationPath,
    17.                                                                  CString promptForFile)
    18.         {
    19.                 AcPlDSDData dsdDataObj;
    20.                 CString full_file_path_name = projectPath;

    21.                 CString dsd = projectPath;
    22.                 dsd.Replace(_T(".dwg"), _T(".dsd"));

    23.                 CString path = full_file_path_name;
    24.                 path.Truncate(path.ReverseFind('\\'));

    25.                 CString file = full_file_path_name;
    26.                 file = file.Mid(file.ReverseFind('\\') + 1);
    27.                 file.Replace(_T(".dwg"), _T(""));

    28.                 WORD wBOM = 0xFEFF;
    29.                 DWORD NumberOfBytesWritten;

    30.                 HANDLE hFile = ::CreateFile(dsd, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); //for UTF16 little endian
    31.                 ::WriteFile(hFile, &wBOM, sizeof(WORD), &NumberOfBytesWritten, NULL);
    32.                 ::CloseHandle(hFile);

    33.                 WritePrivateProfileString(_T("DWF6Version"), _T("Ver"), _T("1"), dsd);
    34.                 WritePrivateProfileString(_T("DWF6MinorVersion"), _T("MinorVer"), _T("1"), dsd);

    35.                 for (int i = 0; i < entries.length(); i++)
    36.                 {
    37.                         WritePrivateProfileString(_T("DWF6Sheet:") + file + _T("-") + entries[i].title(), _T("DWG"), full_file_path_name, dsd);
    38.                         WritePrivateProfileString(_T("DWF6Sheet:") + file + _T("-") + entries[i].title(), _T("Layout"), entries[i].layout(), dsd);
    39.                         WritePrivateProfileString(_T("DWF6Sheet:") + file + _T("-") + entries[i].title(), _T("Setup"), entries[i].NPS(), dsd);
    40.                         WritePrivateProfileString(_T("DWF6Sheet:") + file + _T("-") + entries[i].title(), _T("OriginalSheetPath"), full_file_path_name, dsd);
    41.                         WritePrivateProfileString(_T("DWF6Sheet:") + file + _T("-") + entries[i].title(), _T("Has Plot Port"), _T("0"), dsd);
    42.                 }

    43.                 WritePrivateProfileString(_T("Target"), _T("Type"), _T("6"), dsd);
    44.                 WritePrivateProfileString(_T("Target"), _T("DWF"), destinationPath, dsd);
    45.                 WritePrivateProfileString(_T("Target"), _T("OUT"), path, dsd);

    46.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("IsSheetSet"), _T("FALSE"), dsd);
    47.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("IsHomogeneous"), _T("FALSE"), dsd);
    48.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("SheetSet Name"), _T(""), dsd);
    49.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("NoOfCopies"), _T("1"), dsd);
    50.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("PlotStampOn"), promptForFile, dsd);
    51.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("JobID"), _T("0"), dsd);
    52.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("SelectionSetName"), _T(""), dsd);

    53.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("CategoryName"), _T(""), dsd);
    54.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("LogFilePath"), _T(""), dsd);
    55.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("IncludeLayer"), _T("FALSE"), dsd);
    56.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("PromptForDwfName"), _T("FALSE"), dsd);
    57.                 WritePrivateProfileString(_T("SheetSet Properties"), _T("GenerateDwfName"), _T("FALSE"), dsd);

    58.                 WritePrivateProfileString(_T("PdfOptions"), _T("ConvertTextToGeometry"), _T("FALSE"), dsd);
    59.                 WritePrivateProfileString(_T("PdfOptions"), _T("LineMerge"), _T("FALSE"), dsd);
    60.                 WritePrivateProfileString(_T("PdfOptions"), _T("EmbedTtf"), _T("TRUE"), dsd);
    61.                 WritePrivateProfileString(_T("PdfOptions"), _T("ImageAntiAliasing"), _T("TRUE"), dsd);
    62.                 WritePrivateProfileString(_T("PdfOptions"), _T("JPEGImageCompression"), _T("TRUE"), dsd);

    63.                 dsdDataObj.readDSD(dsd);

    64.                 DeleteFile(dsd);

    65.                 return dsdDataObj;
    66.         }

    67.         inline void PublishViews2MultiSheet(std::vector<Page> pages, bool promptForFile = false)
    68.         {
    69.                 Acad::ErrorStatus es = Acad::eOk;
    70.                 AcDbDatabase* pDb = acdbCurDwg();

    71.                 // Create page setup based on the views

    72.                 AcDbLayoutManager* layoutManager = acdbHostApplicationServices()->layoutManager();
    73.                 CString activeLayout = layoutManager->findActiveLayout(true);
    74.                 AcDbObjectId layoutId = layoutManager->findLayoutNamed(activeLayout);

    75.                 AcDbObjectPointer<AcDbLayout> layout(layoutId, AcDb::OpenMode::kForWrite);

    76.                 CString deviceName = _T("DWG To PDF.pc3");
    77.                 TCHAR* layoutName_t = NULL;

    78.                 es = layout->getLayoutName(layoutName_t);

    79.                 CString layoutName(layoutName_t);
    80.                 delete layoutName_t;

    81.                 for(int i = 0 ; i < pages.size(); i ++)
    82.                 {
    83.                         AcDbPlotSettings* plotSettings = new AcDbPlotSettings(layout->modelType());
    84.                         es = plotSettings->copyFrom(layout);

    85.                         AcDbPlotSettingsValidator* pPSV = NULL;
    86.                         pPSV = acdbHostApplicationServices()->plotSettingsValidator();

    87.                         es = pPSV->setPlotCfgName(plotSettings, deviceName);
    88.                         pPSV->refreshLists(plotSettings);
    89.                         es = pPSV->setPlotType(plotSettings, PlotType::kWindow);
    90.                         es = pPSV->setUseStandardScale(plotSettings, true);
    91.                         es = pPSV->setStdScaleType(plotSettings, StdScaleType::kScaleToFit);
    92.                         es = pPSV->setPlotCentered(plotSettings, true);
    93.                         es = pPSV->setPlotRotation(plotSettings, PlotRotation::k0degrees);
    94.                         es = pPSV->setPlotPaperUnits(plotSettings, AcDbPlotSettings::kMillimeters);
    95.                         plotSettings->setPrintLineweights(Adesk::kTrue);
    96.                         es = pPSV->setPlotViewName(plotSettings, pages[i].PageName);

    97.                         AcGePoint2d min_pt(min(pages[i].minx, pages[i].maxx), min(pages[i].miny, pages[i].maxy));
    98.                         AcGePoint2d max_pt(max(pages[i].minx, pages[i].maxx), max(pages[i].miny, pages[i].maxy));
    99.                         
    100.                         //rotate portrait/landscape
    101.                         if(max_pt.x - min_pt.x < max_pt.y - min_pt.y)
    102.                                 pPSV->setPlotRotation(plotSettings, PlotRotation::k90degrees);

    103.                         resbuf fromrb, torb;

    104.                         fromrb.restype = RTSHORT;
    105.                         fromrb.resval.rint = 0; // WCS

    106.                         torb.restype = RTSHORT;
    107.                         torb.resval.rint = 2; // DCS

    108.                         acedTrans(asDblArray(min_pt), &fromrb, &torb, FALSE, asDblArray(min_pt));
    109.                         acedTrans(asDblArray(max_pt), &fromrb, &torb, FALSE, asDblArray(max_pt));

    110.                         es = pPSV->setPlotWindowArea(plotSettings, min_pt.x, min_pt.y, max_pt.x, max_pt.y);
    111.                         es = plotSettings->setPlotSettingsName(pages[i].PageName + _T("PS"));
    112.                         es = plotSettings->addToPlotSettingsDict(pDb);
    113.                         pPSV->refreshLists(plotSettings);
    114.                         es = layout->copyFrom(plotSettings);
    115.                         es = plotSettings->close();
    116.                 }

    117.                 layout->close();

    118.                 //put the plot in foreground

    119.                 resbuf bp_old = { 0,0 }, bp_0 = { 0,0 };
    120.                 acedGetVar(_T("BACKGROUNDPLOT"), &bp_old);
    121.                 bp_0 = bp_old; bp_0.resval.rint = 0;
    122.                 acedSetVar(_T("BACKGROUNDPLOT"), &bp_0);

    123.                 CString dwgFileName = curDoc()->fileName();
    124.                 CString dwgPath = dwgFileName.Mid(0, dwgFileName.ReverseFind(_T('\\')) + 1);   
    125.                 CString output = dwgFileName; output.Replace(_T(".dwg"), _T(".pdf"));

    126.                 AcPlDSDEntries collection;

    127.                 for (int i = 0; i < pages.size(); i++)
    128.                 {
    129.                         AcPlDSDEntry entry;
    130.                         entry.setDwgName(dwgFileName);
    131.                         entry.setLayout(layoutName);
    132.                         entry.setTitle(pages[i].PageName);
    133.                         entry.setNPSSourceDWG(entry.dwgName());
    134.                         entry.setNPS(pages[i].PageName + _T("PS"));
    135.                         collection.append(entry);
    136.                 }

    137.                 AcPlDSDData dsdData = createDSD(collection, dwgFileName, output, promptForFile ? _T("TRUE") : _T("FALSE"));

    138.                 AcPlPlotConfig* plotConfig = NULL;
    139.                 acplPlotConfigManager->setCurrentConfig(plotConfig, deviceName);

    140.                 //acedArxLoad(L"AcPublish.arx"); if not loaded yet

    141.                 // Publish it
    142.                 acplPublishExecute(dsdData, plotConfig, true);

    143.                 //reset the background plot value
    144.                 acedSetVar(_T("BACKGROUNDPLOT"), &bp_old);

    145.                 //cleanup
    146.                 AcDbDictionary* pPlotSetDict = NULL;
    147.                 es = pDb->getPlotSettingsDictionary(pPlotSetDict, AcDb::kForWrite);
    148.                 if (es == Acad::eOk)
    149.                 {
    150.                         for (int i = 0 ; i < collection.length(); i++)
    151.                         {
    152.                                 CString NPS = collection[i].NPS();
    153.                                 pPlotSetDict->remove(NPS);
    154.                         }
    155.                         pPlotSetDict->close();
    156.                 }

    157.                 if (MessageBox(NULL, _T("Открыть PDF?"), _T("Информация"), MB_YESNO) == IDYES)
    158.                         ShellExecute(NULL, NULL, output, NULL, NULL, SW_SHOW);

    159.         }
    160. }

    161. #endif
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:27 | 显示全部楼层
    1. Acad::ErrorStatus Bolt::subExplode(AcDbVoidPtrArray& entitySet) const
    2. {
    3.   assertReadEnabled();

    4.   // РЕЗЬБА
    5.   AcDbLine* line;
    6.   for (int i = 0; i < m_arRezbaline.length() - 1; i++)
    7.   {
    8.     line = new AcDbLine();
    9.     line->setStartPoint(m_arRezbaline.at(i));
    10.     line->setEndPoint(m_arRezbaline.at(i + 1));
    11.     line->setNormal(m_vecU.crossProduct(m_vecV).normal());
    12.     entitySet.append(line);
    13.   }

    14.   AcDbLine* _line;
    15.   for (int i = 0; i < m_arHatMainline.length() - 1; i++)
    16.   {
    17.     _line = new AcDbLine();
    18.     _line->setStartPoint(m_arHatMainline.at(i));
    19.     _line->setEndPoint(m_arHatMainline.at(i + 1));
    20.     _line->setNormal(m_vecU.crossProduct(m_vecV).normal());
    21.     entitySet.append(_line);
    22.   }

    23.   //  ПОЛУКРУГ
    24. //////////////////////////////////////////////////////////////////////////
    25. //                    Начало полного бреда
    26. //////////////////////////////////////////////////////////////////////////
    27. //  AcGePoint3d center, dir, pt1, pt2;
    28. //
    29. //  center.set(m_ptStart[X], m_ptStart[Y], m_ptStart[Z]);
    30. //  pt1.set(m_arHatline[0][X], m_arHatline[0][Y], m_arHatline[0][Z]);
    31. //  //dir.set(m_arHatline[1][X], m_arHatline[1][Y], m_arHatline[1][Z]);
    32. //  pt2.set(m_arHatline[1][X], m_arHatline[1][Y], m_arHatline[1][Z]);
    33. //
    34. //  AcGeVector3d v1 = m_ptEdge - center;
    35. //  AcGeVector3d v2 = AcGeVector3d::kXAxis;
    36. //
    37. //  //dir = center -
    38. //  //AcGeVector3d zDir = m_vecU.crossProduct(m_vecV);
    39. //  //double rad = m_vecU.angleTo(AcGeVector3d::kXAxis);
    40. //  double rad = (m_ptStart.asVector()).angleTo((m_ptStart.asVector() - AcGeVector3d(m_ptStart[X], m_ptStart[Y]+1, m_ptStart[Z])));
    41. //  double grad = (rad * 360.0) / M_PI;
    42. //
    43. //  rad = v1.angleTo(v2);
    44. //  grad = (rad * 360.0) / M_PI;
    45. //
    46. //
    47. //  if (grad > 0 && grad <= 90)
    48. //  {
    49. //        pt2.set(m_arHatline[2][X] - 0.0001, m_arHatline[2][Y] + 0.0001, m_arHatline[2][Z]);
    50. //  }
    51. //  if (grad > 90 && grad <= 180)
    52. //  {
    53. //        pt2.set(m_arHatline[2][X] - 0.0001, m_arHatline[2][Y] + 0.0001, m_arHatline[2][Z]);
    54. //  }
    55. //  if (grad > 180 && grad <= 270)
    56. //  {
    57. //        pt2.set(m_arHatline[2][X] - 0.0001, m_arHatline[2][Y] + 0.0001, m_arHatline[2][Z]);
    58. //  }
    59. //  if (grad > 270 && grad <= 360)
    60. //  {
    61. //        pt2.set(m_arHatline[2][X] - 0.0001, m_arHatline[2][Y] + 0.0001, m_arHatline[2][Z]);
    62. //  }
    63. //
    64. //  AcGePoint3d centerWcs(center), pt1Wcs(pt1), pt2Wcs(pt2);
    65. ////  acdbUcs2Wcs(asDblArray(center), asDblArray(centerWcs), false);
    66. ////  acdbUcs2Wcs(asDblArray(pt1), asDblArray(pt1Wcs), false);
    67. ////  acdbUcs2Wcs(asDblArray(pt2), asDblArray(pt2Wcs), false);
    68. //
    69. //  AcGeVector3d v1Wcs(pt1Wcs - centerWcs);
    70. //  AcGeVector3d v2Wcs(pt2Wcs - centerWcs);
    71. //
    72. //  double radius = centerWcs.distanceTo(pt1Wcs);
    73. //  AcGeVector3d arcNorm = (-1) * v1Wcs.crossProduct(v2Wcs);
    74. //
    75. //  AcGeVector3d arcRef = arcNorm.perpVector();
    76. //  arcNorm.negate();
    77. //
    78. //  double startAngle = v1Wcs.angleTo(arcRef, arcNorm);
    79. //  double endAngle = v2Wcs.angleTo(arcRef, arcNorm);
    80. //
    81. //  AcDbArc * pArc = new AcDbArc(centerWcs, arcNorm, radius, startAngle, endAngle);
    82. //
    83. //  //pArc->setStartAngle(startAngle);
    84. //  //pArc->setEndAngle(endAngle);
    85. //
    86. //  pArc->setNormal(AcGeVector3d(0.0, 0.0, 1.0));
    87. //
    88. //////////////////////////////////////////////////////////////////////////
    89. //                    Конец полного бреда
    90. //////////////////////////////////////////////////////////////////////////

    91.   AcGeCircArc3d geArc(m_arHatline[0], m_arHatline[1], m_arHatline[2]);
    92.   AcDbCurve *pArc = NULL;
    93.   AcDbCurve::createFromAcGeCurve(geArc, pArc);
    94.   // добавление в набор новых примитивов
    95.   if (pArc) entitySet.append(pArc);

    96.   return Acad::eOk;
    97. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:27 | 显示全部楼层
    1. // Called when a bubble notification is closed.  
    2. // The return code indicates the close condition.  
    3. // You can customize the pData argument to suit your needs as well.
    4. static void BubbleWindowCallback(void* pData, int nReturnCode)
    5. {
    6.   CString strMsg;
    7.   switch (nReturnCode)
    8.   {
    9.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_ERROR_NO_CREATE:
    10.     AfxMessageBox(_T("Couldn't Create the Bubble Window!"));
    11.     break;
    12.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_ERROR_NO_ICONS:
    13.     AfxMessageBox(_T("No Tray Area for the Bubble Window!"));
    14.     break;
    15.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_ERROR_NO_NOTIFICATIONS:
    16.     AfxMessageBox(_T("No Bubble Window Notifications!"));
    17.     break;
    18.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_CLOSE:
    19.     acutPrintf(L"\nNotification Closed...\n");
    20.     break;
    21.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_TIME_OUT:
    22.     acutPrintf(L"\nNotification Timed Out...\n");
    23.     break;
    24.   case AcTrayItemBubbleWindowControl::BUBBLE_WINDOW_HYPERLINK_CLICK:
    25.     acutPrintf(L"\nHyperlink Selected...\n");
    26.     break;
    27.   }
    28.   acedPostCommandPrompt();
    29. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:30 | 显示全部楼层
    1. AcDbObjectId insertBlockRef(AcDbObjectId idBtr, AcGePoint3d pt)
    2. {
    3.   AcDbBlockTableRecordPointer pSpace(acdbCurDwg()->currentSpaceId(), AcDb::kForWrite);
    4.   if (pSpace.openStatus() != Acad::eOk)
    5.           return;
    6.   AcDbBlockReference *pRef = new AcDbBlockReference(pt, idBtr);
    7.   pRef->setDatabaseDefaults(acdbCurDwg());
    8.   AcDbObjectId id;
    9.   pSpace->appendAcDbEntity(id, pRef);
    10.   // Нужно не забыть про атрибуты блока
    11.   AcDbBlockTableRecordPointer pBlockDef(idBtr, AcDb::kForRead);
    12.   Acad::ErrorStatus es = pBlockDef.openStatus();
    13.   AcDbBlockTableRecordIterator *pIterator = NULL;
    14.   pBlockDef->newIterator(pIterator);
    15.   for (pIterator->start(); !pIterator->done(); pIterator->step())
    16.   {
    17.     AcDbObjectId idAttDef;
    18.     pIterator->getEntityId(idAttDef);
    19.     AcDbObjectPointer<AcDbAttributeDefinition> pAttdef(idAttDef, AcDb::kForRead);
    20.     // Только неконстантные атрибуты
    21.     if (pAttdef.openStatus() == Acad::eOk && !pAttdef->isConstant())
    22.     {
    23.       AcDbObjectPointer<AcDbAttribute> pAtt; pAtt.create();
    24.       pAtt->setAttributeFromBlock(pAttdef,AcGeMatrix3d::kIdentity);
    25.       // Переносим дополнительно своства определения атрибута в атрибут
    26.       pAtt->setInvisible(attdef->isInvisible());
    27.       pAtt->setFieldLength(attdef->fieldLength());

    28.       pAtt->setThickness(attdef->thickness());
    29.       pAtt->setOblique(attdef->oblique());
    30.       pAtt->setRotation(attdef->rotation());
    31.       pAtt->setHeight(attdef->height());
    32.       pAtt->setTextStyle(attdef->textStyle());
    33.       pAtt->mirrorInX(attdef->isMirroredInX());
    34.       pAtt->mirrorInY(attdef->isMirroredInY());
    35.       pAtt->setHorizontalMode(attdef->horizontalMode());
    36.       pAtt->setVerticalMode(attdef->verticalMode());
    37.       pAtt->setPosition(attdef->position());
    38.       pAtt->setAlignmentPoint(attdef->alignmentPoint());
    39.       pAtt->setTag(attdef->tagConst());
    40.       pAtt->setTextString(attdef->textStringConst());
    41.       
    42.       pAtt->transformBy(pBlkRef->blockTransform());
    43.       AcDbObjectId attId;
    44.       pBlkRef->appendpAttute(attId, pAtt);
    45.     }
    46.   }
    47.   delete pIterator;
    48.   pRef->close();
    49.   return id;
    50. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-20 09:04
  • 签到天数: 1540 天

    [LV.Master]伴坛终老

     楼主| 发表于 2020-12-29 18:30 | 显示全部楼层
    1. //Добавить объект в конец группы
    2. int appendObjectGroup(LPCTSTR NameGroup, AcDbObjectId entId)
    3. {
    4.         int Res;
    5.         AcDbDictionary *pGroupDict=NULL;
    6.         
    7.     acdbHostApplicationServices()->workingDatabase()
    8.         ->getGroupDictionary(pGroupDict, AcDb::kForWrite);   //получить адрес словаря

    9.         if (pGroupDict->has(NameGroup) == TRUE) {//Если группа с таким именем существует -добавить в нее примитив
    10.                 AcDbGroup *pGroup;
    11.                 AcDbObjectId  groupId;
    12.                  
    13.                 pGroupDict->getAt(NameGroup, groupId);  //получить индентификатор группы по ее имени
    14.                 acdbOpenObject(pGroup, groupId, AcDb::kForWrite); //открыть группу для записи

    15.                 Res=pGroup->append(entId);              //добавить новый объект в конец группы
    16.                 if (Res != Acad::eOk) {
    17.                         acutPrintf(_T("\n\n*** pGroup->append Error=%i \n\n"), Res);
    18.                 }
    19.                                 
    20.                 pGroupDict->close();
    21.                 pGroup->close();
    22.                 Res=0;
    23.         }
    24.         else {//словаря с таким именем не найдено
    25.                 Res=pGroupDict->close();
    26.                 Res=1;
    27.         }

    28.         return Res;
    29. }
    复制代码
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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