Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

149 lines
3.4 KiB
C++

#include "StdAfx.h"
#include "StdArx.h"
// The one and only document manager object
// You can use the DocVars object to retrieve
// document specific data throughout your application
AsdkDataManager<CDocData> DocVars;
//
// Implementation of the document data class.
//
CDocData::CDocData()
{
// NOTE: DO NOT edit the following lines.
//{{AFX_ARX_DATA_INIT(CDocData)
//}}AFX_ARX_DATA_INIT
// TODO: add your own initialization.
}
CDocData::CDocData(const CDocData &data)
{
// NOTE: DO NOT edit the following lines.
//{{AFX_ARX_DATA_INIT2(CDocData)
//}}AFX_ARX_DATA_INIT2
// TODO: add your own initialization.
}
CDocData::~CDocData()
{
// NOTE: DO NOT edit the following lines.
//{{AFX_ARX_DATA_DEL(CDocData)
//}}AFX_ARX_DATA_DEL
// TODO: clean up.
}
const TCHAR * GetRegLocation()
{
return _T("Software\\SHSware\\R2012");
}
double DocGetPScale()
{
return 100.0;
}
BOOL SetLayerLocked(const TCHAR* szLayerName, BOOL bLock)
{
AcDbLayerTable *pLayertable = NULL;
AcDbLayerTableRecord *pLayerRec = NULL;
acdbCurDwg()->getLayerTable(pLayertable, AcDb::kForRead);
if(!pLayertable)
return FALSE;
if((pLayertable->getAt(szLayerName, pLayerRec, AcDb::kForWrite)) == Acad::eOk) {
if(bLock)
pLayerRec->setIsLocked(true); // 打开
else
pLayerRec->setIsLocked(false); // 关
pLayerRec->close();
pLayertable->close();
}
else
pLayertable->close();
return TRUE;
}
BOOL SetLayer0UnLocked()
{
AcDbLayerTable *pLayertable = NULL;
AcDbLayerTableRecord *pLayerRec = NULL;
acdbCurDwg()->getLayerTable(pLayertable, AcDb::kForRead);
if(!pLayertable)
return FALSE;
if((pLayertable->getAt(_T("0"), pLayerRec, AcDb::kForRead)) == Acad::eOk) {
if(pLayerRec->isLocked() && pLayerRec->upgradeOpen()==Acad::eOk) {
pLayerRec->setIsLocked(false); // 关
pLayerRec->downgradeOpen();
}
pLayerRec->close();
}
pLayertable->close();
return TRUE;
}
void SetBlkAttrText(Entity entBlk, const TCHAR*szText, const TCHAR*szTag, double nHeight, BOOL bVisible, BOOL bDown)
{
SetLayer0UnLocked();
AcDbBlockReference *pBlockRef = NULL;// 定义块表指针
AcDbObjectId eId;
acdbGetObjectId(eId, entBlk);
acdbOpenObject(pBlockRef, eId, AcDb::kForRead);
if(!pBlockRef)
return;
AcDbObjectIterator *pIterator;
pIterator = pBlockRef -> attributeIterator();
for (pIterator -> start(); !pIterator -> done(); pIterator -> step())
{
//遍历块中实体
AcDbObjectId att_id;
att_id = pIterator -> objectId();
AcDbEntity *pEnt;
AcDbAttribute *pAtt;
acdbOpenAcDbEntity(pEnt, att_id, AcDb::kForWrite);
pAtt = AcDbAttribute::cast(pEnt);
if(pAtt != NULL)
{
TCHAR *cname = pAtt->tag();//得到标记
if(_tcsicmp(cname, szTag) == 0){
if(!bVisible)
pAtt->setInvisible(Adesk::kTrue);
else{
pAtt->setTextString(szText);
pAtt->setHeight(nHeight*DocGetPScale());
pAtt->setInvisible(Adesk::kFalse);
if(bDown){
pAtt->setHorizontalMode(AcDb::kTextLeft);
pAtt->setVerticalMode(AcDb::kTextTop);
}
}
}
delete[] cname;
}
pEnt->close();
}
delete pIterator;
pBlockRef->close();
}
CString GetArxDir()
{
TCHAR szPath[MAX_PATH];
::GetModuleFileName(_hdllInstance, szPath, MAX_PATH);
CString sPath(szPath);
sPath = sPath.Left(sPath.ReverseFind(_T('\\')));
return sPath;
}
CString GetSysDir()
{
CString arx = GetArxDir();
CString sys = arx.Left(arx.ReverseFind(_T('\\')));
return sys + _T("\\sys");
}