#pragma once const double PI = 4*atan(1.0); class LayerParam; namespace BaseFuncs { void CAD_GetVarInt(CString sMode, int &nRet); void CAD_SetvarInt(CString sMode, int nRet); BOOL DeleteEnt(AcDbObjectId EntId); BOOL ClearAcadCmdLine(); BOOL AddEntToDb(AcDbEntity *pEnt, AcDbObjectId &EntId, AcDbObjectId OwerId = NULL); void CAD_SendStringToExecute(CString szCommand, bool bAutoReturn = TRUE); void dist_ent_highlight(AcDbObjectId EntId); void dist_ent_highlight(AcDbObjectIdArray EntIds); void dist_ent_unhighlight(AcDbObjectId EntId); void dist_ent_unhighlight(AcDbObjectIdArray EntIds); void JxString(CString str, CString strFg, CStringArray &strArr); BOOL FindStringInArr(CStringArray &strArr, CString str, int &nIndex); void GetSubDir(CString sDirPath, CStringArray &sSubPathArr); void GetFileNameByDir(CString sDirPath, CString sExt, CStringArray &sFileNameArray); void DrawD(AcDbObjectId &PlineId, BOOL bAutoClose = False); void GetBulge(AcGePoint3d pt1, AcGePoint3d pt2, AcGePoint3d pt3, double &dBulge); void CAD_GetVarReal(CString sMode, double &dReal); void CAD_SetvarReal(CString sMode, double dReal); BOOL GetPlAngle(AcDbObjectId PlId, double &dAngle); void ClosePline(AcDbObjectId PlineId); Adesk::Boolean polyWindingNumber(AcDbObjectId polyId, int &winding); Adesk::Boolean polyWindingNumber(AcDbPolyline *&pPoly, int &winding); BOOL InSertBlockFromDwgToCurDb(CString sDwgPath, CString sBlockName, AcDbObjectId &BlockId); void SSToIds(ads_name ssName, AcDbObjectIdArray &EnIds); BOOL FindStringInArr(const CStringArray &strArr, CString str, int &nIndex); void dist_blkrcd_getbyRef(AcDbObjectIdArray BlfIds, AcDbObjectIdArray &RcdIds, CStringArray &strArr); BOOL dist_dwg_ReadDiction(CString &sXDList, CString sDicName, CString sRecName); BOOL dist_dwg_WriteDiction(CString sXDList, CString sDicName, CString sRecName); BOOL GetColorIndex(CString sColor, unsigned long &nColor); void GetSoftPath(CString &sSoftPath); void dist_blkrcd_insert(AcDbDatabase *pDb, AcDbObjectIdArray BlcokIds, AcDbDatabase *pOrgDb = NULL); void dist_blkrcd_insert(CString strFilePath, AcDbObjectIdArray BlcokIds, AcDbDatabase *pOrgDb = NULL); void dist_ent_getminmaxpt(AcDbObjectIdArray GroupIds, AcGePoint3d &ptMin, AcGePoint3d &ptMax); BOOL GetEntExt(AcDbObjectId EntId, AcGePoint3d &ptMax, AcGePoint3d &ptMin); void dist_ss_ToIds(ads_name ssName, AcDbObjectIdArray &EnIds); BOOL GetEntExt(AcDbEntity *pEnt, AcGePoint3d &ptMax, AcGePoint3d &ptMin); void GetPathName(CString &sSoftPath); HBITMAP BitmapFromDib(HANDLE hdib, HPALETTE hpal); HANDLE readDibFromMemory(LPVOID pDibSrc); WORD PaletteSize(VOID FAR *pv); WORD DibNumColors(VOID FAR *pv); void makeHatch3(CString sHatchName, AcDbObjectIdArray ExtIds, AcDbObjectIdArray DftIds, int nColor, double dAngle = 0.0, double dScale = 1.0); BOOL GetAttdefByBlockIdNew(AcDbObjectId BlockId, CStringArray &strTags, CStringArray &strPromts, CStringArray &strContents); BOOL GetBlockCommand(CString sDwgPath, CString sBlockName, CString &sCommand); BOOL GetColorIndex(CString sTextPath, CString sKey, int &nRcolor, int &nGcolor, int &nBcolor); BOOL GetBlockId(CString sDwgFilePath, AcDbObjectId &BlockId); BOOL RenameBlock(CString sDwgName, CString sOldName, CString sNewName); BOOL RenameBlock(AcDbDatabase *&pDb, CString sOldName, CString sNewName); void InsertBlockRef1(AcDbObjectId BlockId, AcDbObjectId &BlockRefId, AcGePoint3d ptInsert, AcGeScale3d scale, double dAngle, BOOL bCreate = TRUE); BOOL GetBlockCommand(CString sDwgPath, CString sBlockName, CString &sCommand); BOOL GetJd(AcGePoint3d pt1, AcGePoint3d pt2, AcGeVector3d vt, AcGePoint3d ptOut, AcGePoint3d &ptJd); void GetInIFolderAndIcon(CString sIniName, CStringArray &sFolderArr, CStringArray &sBigIconArr, CStringArray &sSmllIconArr); void JxString(CString str, CStringArray &strArr); BOOL GetJd(AcGePoint3d pt1, AcGePoint3d pt2, AcGeVector3d vt, AcGePoint3d ptOut, AcGePoint3d &ptJd); void CAD_FlushAcadGraphicsQueue(); BOOL InSertBlockFromDwgToCurDb(CString sDwgPath, CString sBlockName, AcDbObjectId &BlockId); void DrawBlockFun(); BOOL GetLayerParam(CString sAppName, CString sLayerName, LayerParam &pm); void CreateLineType(CString sLineTypeName, AcDbObjectId &LineTypeId); void GetLineTypeId(CString sLineTypeName, AcDbObjectId &LineTypeId); AcDbObjectId CreateLayer(CString sAppName, CString sLayerName); bool IsMMUnitForDwg(); void OpenTkAndSelectByName(LPCTSTR pszFolder, LPCTSTR pszDwg); void updateBlockIcon(); } namespace BaseFuncs { class LayerParam { public: LayerParam() { CString strColor; sKey = ""; sLayerName = ""; nColorIndex = 0; dLineWidth = 0.0;//线宽度 sLineType = "";//线型 bClose = FALSE; bFreeze = FALSE; //冻结 bvpdflt = FALSE; bLock = FALSE; //锁定 } ~LayerParam() { } LayerParam(const LayerParam &layer) { strColor = layer.strColor; sKey = layer.sKey; sLayerName = layer.sLayerName; nColorIndex = layer.nColorIndex; dLineWidth = layer.dLineWidth;//线宽度 sLineType = layer.sLineType;//线型 bClose = layer.bClose; bFreeze = layer.bFreeze; //冻结 bvpdflt = layer.bvpdflt; bLock = layer.bLock; //锁定 } LayerParam &operator = (const LayerParam &layer) { strColor = layer.strColor; sKey = layer.sKey; sLayerName = layer.sLayerName; nColorIndex = layer.nColorIndex; dLineWidth = layer.dLineWidth;//线宽度 sLineType = layer.sLineType;//线型 bClose = layer.bClose; bFreeze = layer.bFreeze; //冻结 bvpdflt = layer.bvpdflt; bLock = layer.bLock; //锁定 return *this; } CString sKey; CString sLayerName; int nColorIndex; double dLineWidth;//线宽度 CString sLineType;//线型 BOOL bClose; BOOL bFreeze; //冻结 BOOL bvpdflt; BOOL bLock; //锁定 CString strColor; }; typedef CArrayCLayerParamArray; class CLayer { public: CLayer(CString sAppName, CString sLayerName, BOOL bRet = TRUE); ~CLayer(); AcDbObjectId m_OldId; BOOL m_bRet; }; class CDistOsMode { public: CDistOsMode(int nVarInt) { CAD_GetVarInt("OSMODE", m_nOldMode); CAD_SetvarInt("OSMODE", nVarInt); } ~CDistOsMode() { CAD_SetvarInt("OSMODE", m_nOldMode); } public: int m_nOldMode; }; }