transformby的简单用法

该代码功能如下,添加一个文字对象,然后进行平移和旋转
AcAxDocLock lock;
AcDbSymbolTableRecordPointer<AcDbBlockTableRecord> bp(acdbSymUtil()->blockModelSpaceId(acdbCurDwg()),AcDb::kForWrite);
AcGePoint3d ins_Pnt(100,100,0),m_Pnt(200,200,0),b_Pnt(20,20,0);
AcDbText* pText=new AcDbText(ins_Pnt,_T("txh0001"));
pText->setHeight(1000);

//定义一个b_Pnt到m_Pnt间的向量,向量值为(180,180,0),然后将文字对象按向量值移动(100+180=280,100+180=280,0)
AcGeVector3d vec=m_Pnt-b_Pnt;

//以点b_pnt定义一个向量(20,20,0),让文字对象移动(100+20=120,100+20=120,0)
//AcGeVector3d vec(b_Pnt.asVector()); 

AcGeMatrix3d mat1,mat2;
mat1.setTranslation(vec);
mat2.setToRotation(-90*PI/180,AcGeVector3d::kZAxis,m_Pnt); //以m_Pnt为中心点,Z轴为旋转轴,旋转-90度,要转换为弧度
bp->appendAcDbEntity(pText);
pText->transformBy(mat1); 
pText->transformBy(mat2);
pText->close();

 


 

你可能感兴趣的:(transformby的简单用法)