把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
This commit is contained in:
gjm committed 2026-10-04 00:04:20 +08:00
1 parent 2b0c2055ff
commit 164968b62e
6171 files changed
+191244 -191243

No files matched your search

@@ -1,4 +1,4 @@
#include "stdafx.h"
#include "stdafx.h"
#include "AecDbVenDoghouse.h"
#include "AecDbEarthWorm.h"
@@ -16,44 +16,44 @@ ACRX_DXF_DEFINE_MEMBERS (AecDbVenDoghouse, AecDbPortRoom,
AecDbVenDoghouse::AecDbVenDoghouse(void)
{
memset(&m_fncNode,0,sizeof(EWFnctNode));
m_fncNode.dDistFromPre = AS_MUNIT(8500.0); //分段节点的8.5米位置
m_fncNode.eFnType = kVenDoghouse; //通风口
_tcscpy(m_fncNode.szNodeSpec,_T("通风口")); //口位置
m_fncNode.fNodeDef[0] = AS_MUNITF(800.0f); //沿管廊方向内长
m_fncNode.fNodeDef[1] = AS_MUNITF(800.0f); //管廊断面方向内宽
m_fncNode.fNodeDef[2] = AS_MUNITF(2050.0f); //口1 左室定位尺寸,左对齐
m_fncNode.fNodeDef[3] = AS_MUNITF(500.0f); //口2 左室定位尺寸,左对齐
m_fncNode.fNodeDef[4] = AS_MUNITF(500.0f); //口3 左室定位尺寸,左对齐
m_fncNode.fNodeDef[5] = 0.0f; //结束
_tcscpy(m_fncNode.szNodeDefSpec,_T("通风口"));
m_fncNode.dDistFromPre = AS_MUNIT(8500.0); //分段节点的8.5米位置
m_fncNode.eFnType = kVenDoghouse; //通风口
_tcscpy(m_fncNode.szNodeSpec,_T("通风口")); //口位置
m_fncNode.fNodeDef[0] = AS_MUNITF(800.0f); //沿管廊方向内长
m_fncNode.fNodeDef[1] = AS_MUNITF(800.0f); //管廊断面方向内宽
m_fncNode.fNodeDef[2] = AS_MUNITF(2050.0f); //口1 左室定位尺寸,左对齐
m_fncNode.fNodeDef[3] = AS_MUNITF(500.0f); //口2 左室定位尺寸,左对齐
m_fncNode.fNodeDef[4] = AS_MUNITF(500.0f); //口3 左室定位尺寸,左对齐
m_fncNode.fNodeDef[5] = 0.0f; //结束
_tcscpy(m_fncNode.szNodeDefSpec,_T("通风口"));
//房子描述尺寸
//房子描述尺寸
m_fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸,左对齐
m_fncNode.fNodeDef[11] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[12] = AS_MUNITF(8600.0f);//横向室内宽度,
m_fncNode.fNodeDef[13] = AS_MUNITF(2200.0f);//房子高度
m_fncNode.fNodeDef[14] = AS_MUNITF(4200.0f);//房子和通风井总高度
m_fncNode.fNodeDef[15] = AS_MUNITF(2500.0f);//房子纵向内长,
m_fncNode.fNodeDef[16] = 0.0f;//n室(旧). 改为->新的方式 如 23.0f 为第2,3 舱室加
m_fncNode.fNodeDef[17] = AS_MUNITF(1800.0f);//房子出风口宽度:
m_fncNode.fNodeDef[18] = AS_MUNITF(9000.0f);//房子伸出距离 X:
m_fncNode.fNodeDef[19] = 0.0f; //通风巷道布置方向
//房子描述尺寸
//房子描述尺寸
m_fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸,左对齐
m_fncNode.fNodeDef[11] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[12] = AS_MUNITF(8600.0f);//横向室内宽度,
m_fncNode.fNodeDef[13] = AS_MUNITF(2200.0f);//房子高度
m_fncNode.fNodeDef[14] = AS_MUNITF(4200.0f);//房子和通风井总高度
m_fncNode.fNodeDef[15] = AS_MUNITF(2500.0f);//房子纵向内长,
m_fncNode.fNodeDef[16] = 0.0f;//n室(旧). 改为->新的方式 如 23.0f 为第2,3 舱室加
m_fncNode.fNodeDef[17] = AS_MUNITF(1800.0f);//房子出风口宽度:
m_fncNode.fNodeDef[18] = AS_MUNITF(9000.0f);//房子伸出距离 X:
m_fncNode.fNodeDef[19] = 0.0f; //通风巷道布置方向
m_fncNode.fNodeDef[20] = AS_MUNITF(1300.0f);//百叶窗总高
m_fncNode.fNodeDef[21] = AS_MUNITF(1800.0f);//百叶窗总高
m_fncNode.fNodeDef[23] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[24] = AS_MUNITF(1000.0f);//门宽
m_fncNode.fNodeDef[25] = AS_MUNITF(2100.0f);//门高
m_fncNode.fNodeDef[26] = AS_MUNITF(600.0f);//位置
m_fncNode.fNodeDef[20] = AS_MUNITF(1300.0f);//百叶窗总高
m_fncNode.fNodeDef[21] = AS_MUNITF(1800.0f);//百叶窗总高
m_fncNode.fNodeDef[23] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[24] = AS_MUNITF(1000.0f);//门宽
m_fncNode.fNodeDef[25] = AS_MUNITF(2100.0f);//门高
m_fncNode.fNodeDef[26] = AS_MUNITF(600.0f);//位置
m_fncNode.fNodeDef[30] = 0.0f; //0 扶梯 1直梯
m_fncNode.fNodeDef[31] = AS_MUNITF(20.0f); //扶梯钢管直径
m_fncNode.fNodeDef[32] = AS_MUNITF(500.0f); //扶梯宽度
m_fncNode.fNodeDef[33] = AS_MUNITF(300.0f); //扶梯间距
m_fncNode.fNodeDef[34] = AS_MUNITF(180.0f); //扶梯踏脚伸出长度
m_fncNode.fNodeDef[35] = AS_MUNITF(120.0f); //扶梯固入墙纵向深
m_fncNode.fNodeDef[36] = AS_MUNITF(250.0f); //扶梯固入墙横向长
m_fncNode.fNodeDef[30] = 0.0f; //0 扶梯 1直梯
m_fncNode.fNodeDef[31] = AS_MUNITF(20.0f); //扶梯钢管直径
m_fncNode.fNodeDef[32] = AS_MUNITF(500.0f); //扶梯宽度
m_fncNode.fNodeDef[33] = AS_MUNITF(300.0f); //扶梯间距
m_fncNode.fNodeDef[34] = AS_MUNITF(180.0f); //扶梯踏脚伸出长度
m_fncNode.fNodeDef[35] = AS_MUNITF(120.0f); //扶梯固入墙纵向深
m_fncNode.fNodeDef[36] = AS_MUNITF(250.0f); //扶梯固入墙横向长
m_bShareDoubleHouse = false;
}
@@ -128,14 +128,14 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
if (pEW == NULL)
return Acad::eInvalidInput;
//ln和xy面的夹角
//ln和xy面的夹角
AcGeVector3d vtDir = ln.endPoint() - ln.startPoint();
vtDir.normalize();
AcGeVector3d vtDirXY = vtDir.orthoProject(AcGeVector3d::kZAxis);
double dAngle = vtDirXY.angleTo(vtDir);
//获取每个舱的三维位置
//获取每个舱的三维位置
AcGePoint2d ptThick;
AcArray<ERoom> arRooms;
pEW->GetSectionRooms(eSecType,arSizeDatas,arRooms,ptThick,dAngle);
@@ -144,33 +144,33 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
AcGePoint2d ptSize;
pEW->GetWidthAndHeight(eSecType,arSizeDatas,ln,ptSize,true);
//_T("RECT:3900x3600|2900x3600|400x300|EXT:...");//EXT为扩充字段
//_T("RECT:3900x3600|2900x3600|400x300|EXT:...");//EXT为扩充字段
AcGePoint2d ptEWOIW = arSizeDatas.last();
/*
memset(&m_fncNode,0,sizeof(EWFnctNode));
m_fncNode.dDistLen = AS_MUNIT(8500.0); //分段节点的8.5米位置
m_fncNode.eFnType = kVenDoghouse; //通风口
_tcscpy(m_fncNode.szNodeSpec,_T("通风口")); //口位置
m_fncNode.fNodeDef[0] = AS_MUNITF(800.0f); //沿管廊方向内长
m_fncNode.fNodeDef[1] = AS_MUNITF(800.0f); //管廊断面方向内宽
m_fncNode.fNodeDef[2] = AS_MUNITF(2050.0f); //口1 左室定位尺寸,左对齐
m_fncNode.fNodeDef[3] = AS_MUNITF(500.0f); //口2 左室定位尺寸,左对齐
m_fncNode.fNodeDef[4] = AS_MUNITF(500.0f); //口3 左室定位尺寸,左对齐
m_fncNode.fNodeDef[5] = 0.0f; //结束
_tcscpy(m_fncNode.szNodeDefSpec,_T("通风口"));
m_fncNode.dDistLen = AS_MUNIT(8500.0); //分段节点的8.5米位置
m_fncNode.eFnType = kVenDoghouse; //通风口
_tcscpy(m_fncNode.szNodeSpec,_T("通风口")); //口位置
m_fncNode.fNodeDef[0] = AS_MUNITF(800.0f); //沿管廊方向内长
m_fncNode.fNodeDef[1] = AS_MUNITF(800.0f); //管廊断面方向内宽
m_fncNode.fNodeDef[2] = AS_MUNITF(2050.0f); //口1 左室定位尺寸,左对齐
m_fncNode.fNodeDef[3] = AS_MUNITF(500.0f); //口2 左室定位尺寸,左对齐
m_fncNode.fNodeDef[4] = AS_MUNITF(500.0f); //口3 左室定位尺寸,左对齐
m_fncNode.fNodeDef[5] = 0.0f; //结束
_tcscpy(m_fncNode.szNodeDefSpec,_T("通风口"));
//房子描述尺寸
m_fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸,左对齐
m_fncNode.fNodeDef[11] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[12] = AS_MUNITF(4450.0f);//横向宽度,
m_fncNode.fNodeDef[13] = AS_MUNITF(2200.0f);//房子高度
m_fncNode.fNodeDef[14] = AS_MUNITF(4200.0f);//房子和通风井高度
m_fncNode.fNodeDef[15] = AS_MUNITF(1800.0f);//房子纵向内宽,
fncNode.fNodeDef[16] = 0.0f;//n室(旧). 改为->新的方式 如 23.0f 为第2,3 舱室加
m_fncNode.fNodeDef[17] = AS_MUNITF(1800.0f);//房子出风口
m_fncNode.fNodeDef[18] = AS_MUNITF(9000.0f);//房子伸出距离X
m_fncNode.fNodeDef[19] = 0.0f; //通风巷道布置方向
//房子描述尺寸
m_fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸,左对齐
m_fncNode.fNodeDef[11] = AS_MUNITF(250.0f); //墙厚
m_fncNode.fNodeDef[12] = AS_MUNITF(4450.0f);//横向宽度,
m_fncNode.fNodeDef[13] = AS_MUNITF(2200.0f);//房子高度
m_fncNode.fNodeDef[14] = AS_MUNITF(4200.0f);//房子和通风井高度
m_fncNode.fNodeDef[15] = AS_MUNITF(1800.0f);//房子纵向内宽,
fncNode.fNodeDef[16] = 0.0f;//n室(旧). 改为->新的方式 如 23.0f 为第2,3 舱室加
m_fncNode.fNodeDef[17] = AS_MUNITF(1800.0f);//房子出风口
m_fncNode.fNodeDef[18] = AS_MUNITF(9000.0f);//房子伸出距离X
m_fncNode.fNodeDef[19] = 0.0f; //通风巷道布置方向
*/
//int nRoomOutIndex = (int)( m_fncNode.fNodeDef[16] + 0.5f);
@@ -185,14 +185,14 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
AcGePoint3d ptPos;
if (nRoomOutIndex == 0)
{
ptPos = room1.ptGe[3]; //左上角点
ptPos = room1.ptGe[3]; //左上角点
ptPos.z += ptThick.x;
ptPos += vtDir * m_fncNode.dDistFromPre;
//ptPos += vtDirX * m_fncNode.fNodeDef[10];
}
else
{
ptPos = room2.ptGe[2]; //右上角点
ptPos = room2.ptGe[2]; //右上角点
ptPos.z += ptThick.x;
ptPos += vtDir * m_fncNode.dDistFromPre;
//ptPos -= vtDirX * m_fncNode.fNodeDef[10];
@@ -202,18 +202,18 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
Acad::ErrorStatus es = Acad::eOk;
AcDb3dSolid* pHouse = NULL;
//创建一个带屋顶的房子,屋顶有开口
//创建一个带屋顶的房子,屋顶有开口
double dL = m_fncNode.fNodeDef[15];
double dW = m_fncNode.fNodeDef[12];
double dH = m_fncNode.fNodeDef[13];
double dT = m_fncNode.fNodeDef[11];
double dX = m_fncNode.fNodeDef[18] + m_fncNode.fNodeDef[10] + ptEWOIW.x;//伸出
double dXW = m_fncNode.fNodeDef[17] + 2.0 * dT;//房子出风口
double dX = m_fncNode.fNodeDef[18] + m_fncNode.fNodeDef[10] + ptEWOIW.x;//伸出
double dXW = m_fncNode.fNodeDef[17] + 2.0 * dT;//房子出风口
AcGePoint3d ptNew = ptPos;
pHouse = CreateHouse(ptNew,dL,dW,dH,dT,dT,dX,dXW,vtDirXY,vtDirX,true);
//通风井
//通风井
ptNew.z += dH;
dL = m_fncNode.fNodeDef[17] + 2.0 * dT;
dW = m_fncNode.fNodeDef[17] + 2.0 * dT;
@@ -228,7 +228,7 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
}
}
//开通风口
//开通风口
AcGePoint3d ptGeH = ptNew;
ptGeH += vtDirXY * dT;
ptGeH += vtDirX * dT;
@@ -244,12 +244,12 @@ Acad::ErrorStatus AecDbVenDoghouse::CreateDoghouse(ESection eSecType,const AcGeP
}
}
//绘制顶部百叶
//绘制顶部百叶
AcGePoint3d ptGe = ptNew;
ptGe.z += dH;
DrawBWindow(ptGe,vtDirX,vtDirXY);
//绘制爬梯
//绘制爬梯
ptGe.z -= m_fncNode.fNodeDef[14];
ptGe += 0.5 * (dW + dT) * vtDirXY;
ptGe += dT * vtDirX;
@@ -286,7 +286,7 @@ AcDb3dSolid* AecDbVenDoghouse::CreateHouse(AcGePoint3d& ptLB,double dL,double dW
nPts = 7;
ptGe4 = ptGe[4];
if (m_bShareDoubleHouse )//通风井靠左
if (m_bShareDoubleHouse )//通风井靠左
{
ptGe[0] = ptLB;
ptGe[0] += vtDirL * dL;
@@ -329,7 +329,7 @@ AcDb3dSolid* AecDbVenDoghouse::CreateHouse(AcGePoint3d& ptLB,double dL,double dW
{
if (nPts == 7)
{
if ( m_bShareDoubleHouse )//通风井靠左)
if ( m_bShareDoubleHouse )//通风井靠左)
{
//offset
ptGe[0] -= vtDirL * dT;
@@ -434,7 +434,7 @@ AcDb3dSolid* AecDbVenDoghouse::CreateHouse(AcGePoint3d& ptLB,double dL,double dW
if (bHasRoof)
{
//楼板厚度普遍在80~100mm之间,取90
//楼板厚度普遍在80~100mm之间,取90
ln.setStartPoint(ptGeFloor[0]);
ln.setEndPoint(ptGeFloor[0] - AS_MUNIT(90.0) * AcGeVector3d::kZAxis);
@@ -471,13 +471,13 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
if (dOutL < 0.01f)
dOutL = m_fncNode.fNodeDef[15];
double dExt = AS_MUNIT(20.0);//屋檐
double dCap = dOutL + 2 * m_fncNode.fNodeDef[11] + 2 * dExt;//屋顶宽
double dH = AS_MUNIT(1000.0);//高度
double dThick = AS_MUNIT(20.0);//屋顶厚度
double dPageW = AS_MUNIT(20.0);//百叶宽度
double dExt = AS_MUNIT(20.0);//屋檐
double dCap = dOutL + 2 * m_fncNode.fNodeDef[11] + 2 * dExt;//屋顶宽
double dH = AS_MUNIT(1000.0);//高度
double dThick = AS_MUNIT(20.0);//屋顶厚度
double dPageW = AS_MUNIT(20.0);//百叶宽度
//4个柱子,侧面百叶
//4个柱子,侧面百叶
AcGePoint3d ptPos = ptGe;
ptPos -= dExt * vtDirHor;
@@ -494,7 +494,7 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
AcGePoint3d ptTmp = ptGe;
//柱子1
//柱子1
dL = m_fncNode.fNodeDef[11];
dW = m_fncNode.fNodeDef[11];
AcDb3dSolid* pCol1 = AecDbEarthWorm::NewXBox(ptTmp,dL,dW,dH,vtDirHor,vtDirXY);
@@ -503,7 +503,7 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
Add3DBuffer(pCol1);
//m_ar3DDrableBufPtrs.append(pCol1);
}
//柱子2
//柱子2
ptTmp += (dOutL + m_fncNode.fNodeDef[11]) * vtDirHor;
AcDb3dSolid* pCol2 = AecDbEarthWorm::NewXBox(ptTmp,dL,dW,dH,vtDirHor,vtDirXY);
if (pCol2 != NULL)
@@ -512,7 +512,7 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
//m_ar3DDrableBufPtrs.append(pCol2);
}
//柱子3
//柱子3
ptTmp = ptGe;
ptTmp += (dOutL + m_fncNode.fNodeDef[11]) * vtDirXY;
AcDb3dSolid* pCol3 = AecDbEarthWorm::NewXBox(ptTmp,dL,dW,dH,vtDirHor,vtDirXY);
@@ -522,7 +522,7 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
//m_ar3DDrableBufPtrs.append(pCol3);
}
//柱子4
//柱子4
ptTmp += (dOutL + m_fncNode.fNodeDef[11]) * vtDirHor;
AcDb3dSolid* pCol4 = AecDbEarthWorm::NewXBox(ptTmp,dL,dW,dH,vtDirHor,vtDirXY);
if (pCol4 != NULL)
@@ -531,7 +531,7 @@ Acad::ErrorStatus AecDbVenDoghouse::DrawBWindow(const AcGePoint3d& ptGe,const Ac
//m_ar3DDrableBufPtrs.append(pCol4);
}
//百叶...
//百叶...
int nCount = (int)(dH / dPageW + 0.5);
return Acad::eOk;