#include "stdafx.h" #include "KTSideJig.h" #include "KTObjLifeMgr.h" KTSideJig::KTSideJig() { } KTSideJig::~KTSideJig() { } BOOL KTSideJig::DragCreate(AcGePoint3dArray& pts, double dTextH,double dTextW,CStringArray &stexts, int ntype,LPCTSTR pszPrompt,AcDbObjectId idSt,AcDbObjectId idLayer, AcDbVoidPtrArray& arpEnt) { m_ntype=ntype; m_pts.append(pts); m_idTextS=idSt; m_idTextL=idLayer; m_sTexts.Append(stexts); m_ptFirst=pts.at(0); m_dTextH=dTextH; m_dTextW=dTextW; CKTObjLifeMgr entMgr; if (NULL != pszPrompt) setDispPrompt(pszPrompt); BOOL bError = (AcEdJig::kNormal != drag()); entMgr.Add(m_pTexts); if (bError) return FALSE; arpEnt.append(m_pTexts); entMgr.Remove(); m_pts.setLogicalLength(0); return TRUE; } AcEdJig::DragStatus KTSideJig::sampler() { setUserInputControls((UserInputControls)(AcEdJig::kAccept3dCoordinates | AcEdJig::kNoNegativeResponseAccepted | AcEdJig::kNoZeroResponseAccepted)); AcEdJig::DragStatus eStatus = acquirePoint(m_ptDynamic); if (AcEdJig::kNormal != eStatus) return eStatus; if (m_ptLast == m_ptDynamic) return kNoChange; return eStatus; } Adesk::Boolean KTSideJig::update() { if (m_ptLast == m_ptDynamic) return Adesk::kTrue; //移除上次的数据 m_cDumbEntity.m_arpEntity.setLogicalLength(0); int i=0; i = m_pTexts.length(); while ((--i) >= 0) delete ((AcDbEntity*)m_pTexts[i]); m_pTexts.setLogicalLength(0); int nl=m_pts.logicalLength(); AcGePoint3d pttemp; AcGeVector3d vtemp,vNormal; vtemp=AcGeVector3d::kXAxis; if (1 == m_ntype) { vtemp=AcGeVector3d::kYAxis; } AcGePlane plane; for (int j=0;jsetTextStyle(m_idTextS); ptextu->setTextHeight(m_dTextH); ptextu->setLayer(m_idTextL); ptextu->setContents(m_sTexts.GetAt(j)); ptextu->setAttachment(AcDbMText::kBottomCenter); if (1 == m_ntype) { ptextu->setRotation(PI_2); } else { ptextu->setRotation(0); } ptextu->setLocation(pttemp); m_cDumbEntity.m_arpEntity.append(ptextu); m_pTexts.append(ptextu); } m_ptLast = m_ptDynamic; return Adesk::kTrue; } AcDbEntity* KTSideJig::entity() const { return (AcDbEntity*)&m_cDumbEntity; }