找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 167|回复: 2

insert dwf file

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-4 08:57:38 | 显示全部楼层 |阅读模式
  1. AcDbObjectId CBlockUtil::InsertDwf(CString strFileFullPath, CString strFileName, AcGePoint3d insertPoint, double dbScale, double dbRotation)
  2. {
  3.         AcDbDictionary *pNamedobj = NULL;
  4.         AcDbDictionary *pAPPDict = NULL;
  5.         AcDbDictionary *pDict = NULL;
  6.         AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase();
  7.         Acad::ErrorStatus es;
  8.         es = pDb->getNamedObjectsDictionary(pNamedobj, AcDb::kForWrite);
  9.         if (Acad::eOk != es) return false;
  10.         CString strAppName = TEXT("APP"), strFieldName = TEXT("PLOT");
  11.         if (pNamedobj->getAt(strAppName, (AcDbObject*&)pAPPDict, AcDb::kForWrite) == Acad::eKeyNotFound)
  12.         {
  13.                 pAPPDict = new AcDbDictionary;
  14.                 AcDbObjectId dictId;
  15.                 pNamedobj->setAt(strAppName, pAPPDict, dictId);
  16.         }
  17.         pNamedobj->close();
  18.         if (pAPPDict->getAt(strFieldName, (AcDbObject*&)pDict, AcDb::kForWrite) == Acad::eKeyNotFound)
  19.         {
  20.                 pDict = new AcDbDictionary;
  21.                 AcDbObjectId dictId;
  22.                 pAPPDict->setAt(strFieldName, pDict, dictId);
  23.         }
  24.         pAPPDict->close();
  25.         AcDbDwfDefinition *pDwfDef = new AcDbDwfDefinition;
  26.         pDwfDef->setSourceFileName(strFileFullPath);
  27.         AcDbObjectId entId;
  28.         es = pDict->setAt(strFileName, (AcDbObject*&)pDwfDef, entId);
  29.         pDict->close();
  30.         pDwfDef->close();
  31.         AcDbDwfReference *pDwfRef = new AcDbDwfReference;
  32.         es = pDwfRef->setDefinitionId(entId);
  33.         es = pDwfRef->setPosition(insertPoint);
  34.         es = pDwfRef->setRotation(dbRotation);
  35.         es = pDwfRef->setScaleFactors(dbScale);
  36.         es = pDwfRef->setIsOn(true);
  37.         es = pDwfRef->setFade(0);
  38.         AcDbObjectId idDwfRef = AcDbObjectId::kNull;
  39.         idDwfRef = CDwgDatabaseUtil::PostToModelSpace((AcDbEntity*)pDwfRef);
  40.         pDwfRef->close();
  41.         return idDwfRef;
  42. }
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-3-4 08:57:50 | 显示全部楼层
es = pDwfRef->setDefinitionId(entId);
        es = pDwfRef->setNormal(AcGeVector3d::kZAxis);
        es = pDwfRef->setPosition(insertPoint);
        es = pDwfRef->setRotation(dbRotation);

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-3-4 08:58:03 | 显示全部楼层
es = pDwfRef->setDefinitionId(entId);
        es = pDwfRef->setNormal(AcGeVector3d::kZAxis);
        es = pDwfRef->setPosition(insertPoint);
        es = pDwfRef->setRotation(0.0);
        AcGeMatrix3d rot;
        rot.setToRotation(dbRotation, AcGeVector3d::kZAxis, insertPoint);
        pDwfRef->transformBy(rot);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-27 22:46 , Processed in 0.144030 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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