611 lines
19 KiB
C++
611 lines
19 KiB
C++
// OpenLayerDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "tapi.h"
|
|
#include "twtdef.h"
|
|
|
|
#include "DbPsConfig.h"
|
|
#include <actrans.h>
|
|
|
|
//#include "arxtools.h"
|
|
#include "OpenLayerDlg.h"
|
|
#include "ChangeLayDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern XStringList g_lstCloseLay;
|
|
|
|
void SetEntityLayer(Entity ent, const TCHAR* szLayer)
|
|
{
|
|
AcDbObjectId eId;
|
|
AcDbEntity *pEnt = NULL;
|
|
acdbGetObjectId(eId, ent);
|
|
acdbOpenObject(pEnt, eId, AcDb::kForWrite);
|
|
if(pEnt){
|
|
pEnt->setLayer(szLayer);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
|
|
void SetTArchLayTag()
|
|
{
|
|
PickSet ss(SS_FREE);
|
|
if(SelectEntities(_T("请选择要设置为建筑标识的图元 <退出>:"), ss, RBList()) != RTNORM)
|
|
return;
|
|
long sslen = ss.Length();
|
|
acedSetStatusBarProgressMeter(_T("设置中..."), 0, sslen);
|
|
|
|
for(long j=0;j<sslen;j++){
|
|
if(acedUsrBrk()){
|
|
acedRestoreStatusBar();
|
|
return;
|
|
}
|
|
|
|
Entity entTmp = ss[j];
|
|
// TCHAR szLayer[256];
|
|
// entTmp.GetData(8, szLayer);
|
|
WriteXdata(entTmp, _T("TG-LAYER"), _T("TArch"));
|
|
acedSetStatusBarProgressMeterPos(j);
|
|
}
|
|
acedRestoreStatusBar();
|
|
return;
|
|
}
|
|
|
|
void ClearTArchLayTag()
|
|
{
|
|
PickSet ss(SS_FREE);
|
|
if(SelectEntities(_T("请选择要清除建筑标识的图元 <退出>:"), ss, RBList()) != RTNORM)
|
|
return;
|
|
long sslen = ss.Length();
|
|
acedSetStatusBarProgressMeter(_T("清除中..."), 0, sslen);
|
|
|
|
for(long j=0;j<sslen;j++){
|
|
if(acedUsrBrk()){
|
|
acedRestoreStatusBar();
|
|
return;
|
|
}
|
|
|
|
Entity entTmp = ss[j];
|
|
CString csTmp = ReadXdata(entTmp, _T("TG-LAYER"));
|
|
if(csTmp == _T("TArch"))
|
|
WriteXdata(entTmp, _T("TG-LAYER"), _T(""));
|
|
acedSetStatusBarProgressMeterPos(j);
|
|
}
|
|
acedRestoreStatusBar();
|
|
return;
|
|
}
|
|
|
|
void ChangeLayer2Twt()
|
|
{
|
|
PickSet ss(SS_FREE);
|
|
if(SelectEntities(_T("请选择要改层的图元 <退出>:"), ss, RBList()) != RTNORM)
|
|
return;
|
|
CAcModuleResourceOverride exm;
|
|
CChangeLayDlg dlg;
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
long sslen = ss.Length();
|
|
|
|
if(dlg.m_csRet == "tg"){ //把图元打上建筑标记,不去修改图层
|
|
// XStringList lst;
|
|
// lst.Append(tstrnew(_T("DOTE")));
|
|
// lst.Append(tstrnew(_T("BALCONY")));
|
|
// lst.Append(tstrnew(_T("TITLE")));
|
|
// lst.Append(tstrnew(_T("COLUMN")));
|
|
// lst.Append(tstrnew(_T("WINDOW")));
|
|
// lst.Append(tstrnew(_T("AXIS")));
|
|
// lst.Append(tstrnew(_T("GROUND")));
|
|
// lst.Append(tstrnew(_T("WALL")));
|
|
// lst.Append(tstrnew(_T("SURFACE")));
|
|
// lst.Append(tstrnew(_T("ROOF")));
|
|
// lst.Append(tstrnew(_T("STAIR")));
|
|
// lst.Append(tstrnew(_T("LVTRY")));
|
|
// lst.Append(tstrnew(_T("RAIL")));
|
|
// lst.Append(tstrnew(_T("HANDRAIL")));
|
|
// lst.Append(tstrnew(_T("SPACE")));
|
|
// lst.Append(tstrnew(_T("CAMERA")));
|
|
// lst.Append(tstrnew(_T("AXIS_TEXT")));
|
|
// lst.Append(tstrnew(_T("PUB_DIM")));
|
|
// lst.Append(tstrnew(_T("PUB_TEXT")));
|
|
// lst.Append(tstrnew(_T("PUB_WINDW")));
|
|
// lst.Append(tstrnew(_T("PUB_HATCH")));
|
|
// lst.Append(tstrnew(_T("PUB_TITLE")));
|
|
// lst.Append(tstrnew(_T("WINDOW_TEXT")));
|
|
// lst.Append(tstrnew(_T("S_WALL")));
|
|
// lst.Append(tstrnew(_T("S_WINDOW")));
|
|
// lst.Append(tstrnew(_T("S_BLOCK")));
|
|
// lst.Append(tstrnew(_T("S_STAIR")));
|
|
// lst.Append(tstrnew(_T("E_FLOOR")));
|
|
// lst.Append(tstrnew(_T("E_LINE")));
|
|
// lst.Append(tstrnew(_T("E_WINDOW")));
|
|
// lst.Append(tstrnew(_T("E_BLOCK")));
|
|
// lst.Append(tstrnew(_T("E_STAIR")));
|
|
// lst.Append(tstrnew(_T("BASE")));
|
|
// lst.Append(tstrnew(_T("WALL1")));
|
|
// lst.Append(tstrnew(_T("FLOOR")));
|
|
// lst.Append(tstrnew(_T("EAVES")));
|
|
// lst.Append(tstrnew(_T("DIM")));
|
|
// lst.Append(tstrnew(_T("TEXT")));
|
|
// lst.Append(tstrnew(_T("WINDW")));
|
|
// lst.Append(tstrnew(_T("HATCH")));
|
|
// lst.Append(tstrnew(_T("GLASS")));
|
|
// lst.Append(tstrnew(_T("OTHER")));
|
|
// lst.Append(tstrnew(_T("PUB_WALL")));
|
|
|
|
for(long j=0;j<sslen;j++){
|
|
Entity entTmp = ss[j];
|
|
TCHAR szLayer[256];
|
|
entTmp.GetData(8, szLayer);
|
|
// if(lst.Index(szLayer) < 0){
|
|
WriteXdata(entTmp, _T("TG-LAYER"), _T("TArch"));
|
|
// }
|
|
}
|
|
return;
|
|
}
|
|
|
|
InitLayer(dlg.m_csRet);
|
|
for(long j=0;j<sslen;j++){
|
|
Entity entTmp = ss[j];
|
|
if(entTmp.Is(_T("INSERT"))){
|
|
TCHAR szBlkName[256];
|
|
entTmp.GetData(2, szBlkName);
|
|
RBList rbMask2 = ads_buildlist( -4, _T("<or"),
|
|
-4, _T("<and"), RTDXF0, _T("INSERT"), 8, _T("*"), 2, szBlkName, -4, _T("and>"),
|
|
-4, _T("<and"), RTDXF0, _T("AEC_BLOCK_INSERT"), 8, _T("*"), 2, szBlkName, -4, _T("and>"),
|
|
-4, _T("or>"), NULL);
|
|
PickSet ssAll(SS_FREE);
|
|
ssAll.Get(_T("X"), NULL, NULL, rbMask2);
|
|
long len2 = ssAll.Length();
|
|
for(long i=0;i<len2;i++){
|
|
Entity ent2 = ssAll[i];
|
|
SetEntityLayer(ent2, dlg.m_csRet);
|
|
}
|
|
return;
|
|
}
|
|
SetEntityLayer(entTmp, dlg.m_csRet);
|
|
}
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 图层合并
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void MergeLayer()
|
|
{
|
|
Entity entFirst, entSecond;
|
|
if(SelectEntity(_T("\n请选择要删除图层上的任意图元:<退出>"), entFirst, RBList()) != RTNORM)
|
|
return;
|
|
|
|
TCHAR szLay1[256], szLay2[256];
|
|
|
|
entFirst.GetData(8, szLay1);
|
|
if(SelectEntity(_T("\n请选择要合并到图层(目标)上的任意图元:<退出>"), entSecond, RBList()) != RTNORM)
|
|
return;
|
|
entSecond.GetData(8, szLay2);
|
|
if(_tcsicmp(szLay1, szLay2) == 0){
|
|
adsout << _T("\n2个图层一致,无需合并");
|
|
return;
|
|
}
|
|
if(_tcsicmp(szLay1, _T("0")) == 0){
|
|
adsout << _T("\n无法删除0层");
|
|
return;
|
|
}
|
|
AcDbObjectId idLayer = GetLayerIdFromString(szLay1);
|
|
OPENOBJ_BEGIN(idLayer, AcDb::kForRead, AcDbLayerTableRecord, pLayer);
|
|
if(pLayer) {
|
|
if(pLayer->isLocked())
|
|
{
|
|
adsout << _T("\n 无法删除已经锁定的图层!");
|
|
return;
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
|
|
|
|
CString csPrompt;
|
|
csPrompt.Format(_T("\n您确定要把%s图层合并到%s图层上吗? 且删除%s图层?"), szLay1, szLay2, szLay1);
|
|
int nRes = AfxMessageBox(csPrompt, MB_YESNO | MB_ICONWARNING);
|
|
if (nRes != IDYES)
|
|
return;
|
|
|
|
|
|
|
|
|
|
RBList rbMask(RTDXF0, _T("*"), 8, szLay1, NULL);
|
|
PickSet ssAll(SS_FREE);
|
|
ssAll.Get(_T("X"), NULL, NULL, rbMask);
|
|
long len = ssAll.Length();
|
|
for(long i=0;i<len;i++){
|
|
Entity ent = ssAll[i];
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, AcDbEntity, pEnt);
|
|
if(pEnt) {
|
|
pEnt->setLayer(szLay2);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
xg_getvar(_T("CLAYER"), szLay2);
|
|
if(_tcsicmp(szLay1, szLay2) == 0)
|
|
xg_setvar(_T("CLAYER"), _T("0"));
|
|
|
|
AcDbObjectIdArray objIds;
|
|
objIds.append(idLayer);
|
|
Adesk::UInt32* count = new Adesk::UInt32[1];
|
|
count[0] = 0;
|
|
AcDbDatabase *pCurDwg = acdbCurDwg();
|
|
Acad::ErrorStatus es = pCurDwg->countHardReferences(objIds, count);
|
|
if (es != Acad::eOk || count[0] > 0) {
|
|
delete [] count;
|
|
adsout << _T("\n 图层存在引用.无法删除图层!");
|
|
return;
|
|
}
|
|
|
|
delete [] count;
|
|
|
|
OPENOBJ_BEGIN(idLayer, AcDb::kForWrite, AcDbLayerTableRecord, pLayer);
|
|
if(pLayer) {
|
|
Acad::ErrorStatus es = pLayer->erase();
|
|
if(es != Acad::eOk) {
|
|
adsout << _T("\n 无法删除图层记录!");
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 图层转换
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void ConvertLayer()
|
|
{
|
|
Entity entFirst, entSecond;
|
|
if(SelectEntity(_T("\n请选择要转换图层(源)上的任意图元:<转换成上华图层>"), entFirst, RBList()) != RTNORM){
|
|
if(g_nProductId==14){
|
|
|
|
acDocManager->sendStringToExecute(curDoc(), _T("ChangeLayer2Twt "), true, false, false);
|
|
}
|
|
return;
|
|
}
|
|
TCHAR szLay1[256], szLay2[256];
|
|
CString csLayDes;
|
|
entFirst.GetData(8, szLay1);
|
|
if(SelectEntity(_T("\n请选择要转换图层(目标)上的任意图元:<转换成上华相应图层>"), entSecond, RBList()) != RTNORM){
|
|
if(_tcsicmp(szLay1, _T("GJ")) == 0)
|
|
csLayDes = LAY_EQUIP_PIPE;
|
|
else if(_tcsicmp(szLay1, _T("GJ-阀门")) == 0)
|
|
csLayDes = LAY_EQUIP_VALVE;
|
|
else if(_tcsicmp(szLay1, _T("FL")) == 0)
|
|
csLayDes = LAY_TWT_FLANGE;
|
|
else if(_tcsicmp(szLay1, _T("EQ-喷淋")) == 0)
|
|
csLayDes = LAY_EQUIP_SPRINKLE;
|
|
else if(_tcsicmp(szLay1, _T("EQ-消防")) == 0)
|
|
csLayDes = LAY_EQUIP_HYDRANT;
|
|
else if(_tcsicmp(szLay1, _T("EQ-室外")) == 0)
|
|
csLayDes = LAY_TWT_OUT;
|
|
else if(_tcsicmp(szLay1, _T("SX")) == 0)
|
|
csLayDes = LAY_TWT_WATERTANK;
|
|
else if(_tcsicmp(szLay1, _T("SB")) == 0)
|
|
csLayDes = LAY_TWT_PUMP;
|
|
else if(g_nProductId==14){
|
|
RBList rbMask(RTDXF0, _T("*"), 8, szLay1, NULL);
|
|
CAcModuleResourceOverride exm;
|
|
CChangeLayDlg dlg;
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
InitLayer(dlg.m_csRet);
|
|
PickSet ss(SS_FREE);
|
|
ss.Get(_T("X"), NULL, NULL, rbMask);
|
|
long len = ss.Length();
|
|
for(long i=0;i<len;i++){
|
|
Entity ent = ss[i];
|
|
SetEntityLayer(ent, (const TCHAR*)dlg.m_csRet);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
else{
|
|
entSecond.GetData(8, szLay2);
|
|
csLayDes = szLay2;
|
|
}
|
|
if(_tcsicmp(szLay1, szLay2) == 0)
|
|
return;
|
|
PickSet ss(SS_FREE);
|
|
RBList rbMask(RTDXF0, _T("*"), 8, szLay1, NULL);
|
|
ss.Get(_T("X"), NULL, NULL, rbMask);
|
|
long len = ss.Length();
|
|
for(long i=0;i<len;i++){
|
|
Entity ent = ss[i];
|
|
SetEntityLayer(ent, (const TCHAR*)csLayDes);
|
|
}
|
|
adsout << _T("\n") << szLay1 << _T("层 已经成功转换到 ") << szLay2 << _T("层了!");
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 打开图层
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
void OpenLayer()
|
|
{
|
|
XSymbolList lstLayer(_T("LAYER"));
|
|
int len = lstLayer.Length();
|
|
BOOL flag = FALSE;
|
|
for(int i=0;i<len;i++){
|
|
CString csLay = lstLayer[i];
|
|
|
|
if(!IsLayerOn((const TCHAR *)csLay)){
|
|
flag = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(flag == FALSE){
|
|
adsout << _T("\n所有图层都是打开的!");
|
|
return;
|
|
}
|
|
|
|
CAcModuleResourceOverride exm;
|
|
COpenLayerDlg dlg;
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COpenLayerDlg dialog
|
|
|
|
|
|
COpenLayerDlg::COpenLayerDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(COpenLayerDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(COpenLayerDlg)
|
|
m_bAll = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void COpenLayerDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(COpenLayerDlg)
|
|
DDX_Control(pDX, IDC_BLK_LAYER, m_listBlk);
|
|
DDX_Control(pDX, IDC_LIST_LAYER, m_listCtrl);
|
|
DDX_Check(pDX, IDC_CHECK_ALL, m_bAll);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(COpenLayerDlg, CDialog)
|
|
//{{AFX_MSG_MAP(COpenLayerDlg)
|
|
ON_BN_CLICKED(IDC_CHECK_ALL, OnCheckAll)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COpenLayerDlg message handlers
|
|
|
|
BOOL COpenLayerDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
XString fullFile;
|
|
if(FindFile(_T("layerdef.dat"), fullFile)) {
|
|
FILE *fp=fopen(_AS(fullFile), "r");
|
|
if(!fp)
|
|
return TRUE;
|
|
while(!feof(fp)) {
|
|
char sBuf[256]="";
|
|
TCHAR cName[256]=_T(""), eName[256]=_T(""), sColor[256]=_T("");
|
|
fgets(sBuf, 255, fp);
|
|
if(sBuf[0]) {
|
|
CT_strnth(TString(sBuf), 1, cName);
|
|
CT_strnth(TString(sBuf), 2, eName);
|
|
CT_strnth(TString(sBuf), 3, sColor);
|
|
}
|
|
if(cName[0] && eName[0]) {
|
|
int nColor=_ttoi(sColor);
|
|
m_lstAllLayer.Append(new CLayerData(eName, cName, nColor));
|
|
}
|
|
}
|
|
fclose(fp);
|
|
}
|
|
|
|
m_listCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
m_listCtrl.SetExtendedStyle(LVS_EX_CHECKBOXES);
|
|
m_listCtrl.InsertColumn ( 0, _T("层名"), LVCFMT_LEFT, 80 );
|
|
m_listCtrl.InsertColumn ( 1, _T("描述"), LVCFMT_LEFT, 80 );
|
|
m_listBlk.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
m_listBlk.SetExtendedStyle(LVS_EX_CHECKBOXES);
|
|
m_listBlk.InsertColumn ( 0, _T("层名"), LVCFMT_LEFT, 180 );
|
|
m_listBlk.InsertColumn ( 1, _T("描述"), LVCFMT_LEFT, 80 );
|
|
XSymbolList lstLayer(_T("LAYER"));
|
|
int len = lstLayer.Length();
|
|
int n(0);
|
|
for(int i=0;i<len;i++){
|
|
CString csLay = lstLayer[i];
|
|
CString csDesName;
|
|
if(csLay.Find(_T("|")) > -1)
|
|
continue;
|
|
if(!IsLayerOn((const TCHAR *)csLay)){
|
|
m_listCtrl.InsertItem ( n, csLay, 0 );
|
|
for(int j=0;j<m_lstAllLayer.Length();j++){
|
|
CString csTmp = m_lstAllLayer[j]->m_csEName;
|
|
if(csLay == csTmp){
|
|
csDesName = m_lstAllLayer[j]->m_csCName;
|
|
break;
|
|
}
|
|
}
|
|
m_listCtrl.SetItemText ( n, 1, csDesName);
|
|
n++;
|
|
}
|
|
}
|
|
n = 0;
|
|
BOOL bHasBlk = FALSE;
|
|
for(i=0;i<len;i++){
|
|
CString csLay = lstLayer[i];
|
|
CString csDesName;
|
|
if(csLay.Find(_T("|")) < 0)
|
|
continue;
|
|
if(!IsLayerOn((const TCHAR *)csLay)){
|
|
m_listBlk.InsertItem ( n, csLay, 0 );
|
|
for(int j=0;j<m_lstAllLayer.Length();j++){
|
|
CString csTmp = m_lstAllLayer[j]->m_csEName;
|
|
int idx = csLay.Find(_T("|"));
|
|
CString csLayTmp = csLay.Right(csLay.GetLength() - idx - 1);
|
|
if(csLayTmp == csTmp){
|
|
csDesName = m_lstAllLayer[j]->m_csCName;
|
|
break;
|
|
}
|
|
}
|
|
m_listBlk.SetItemText ( n, 1, csDesName);
|
|
bHasBlk = TRUE;
|
|
n++;
|
|
}
|
|
}
|
|
//SR 2010-11-8 增加默认
|
|
int num = g_lstCloseLay.Length();
|
|
for(int m=0;m<num;m++)
|
|
{
|
|
CString csLayClosed = g_lstCloseLay[m];
|
|
len = m_listCtrl.GetItemCount();
|
|
for(int i=0;i<len;i++){
|
|
CString csName = m_listCtrl.GetItemText(i, 0);
|
|
if(csName == csLayClosed)
|
|
m_listCtrl.SetCheck(i, TRUE);
|
|
}
|
|
len = m_listBlk.GetItemCount();
|
|
for(i=0;i<len;i++){
|
|
CString csName = m_listBlk.GetItemText(i, 0);
|
|
if(csName == csLayClosed)
|
|
m_listBlk.SetCheck(i, TRUE);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if(!bHasBlk){
|
|
CRect rect;
|
|
this->GetWindowRect(&rect);
|
|
rect.right -= 300;
|
|
this->MoveWindow(&rect);
|
|
}
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
|
|
void COpenLayerDlg::OnCheckAll()
|
|
{
|
|
UpdateData(TRUE);
|
|
int len = m_listCtrl.GetItemCount();
|
|
for(int i=0;i<len;i++){
|
|
m_listCtrl.SetCheck(i, m_bAll);
|
|
}
|
|
len = m_listBlk.GetItemCount();
|
|
for(i=0;i<len;i++){
|
|
m_listBlk.SetCheck(i, m_bAll);
|
|
}
|
|
|
|
}
|
|
|
|
void ShowEntity(const CString &sLayer, BOOL bOpen);
|
|
void COpenLayerDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
int len = m_listCtrl.GetItemCount();
|
|
for(int i=0;i<len;i++){
|
|
if(m_listCtrl.GetCheck(i)){
|
|
CString csName = m_listCtrl.GetItemText(i, 0);
|
|
SetLayerOnOff(csName, TRUE);
|
|
ShowEntity(csName, TRUE);
|
|
}
|
|
}
|
|
len = m_listBlk.GetItemCount();
|
|
for(i=0;i<len;i++){
|
|
if(m_listBlk.GetCheck(i)){
|
|
CString csName = m_listBlk.GetItemText(i, 0);
|
|
SetLayerOnOff(csName, TRUE);
|
|
ShowEntity(csName, TRUE);
|
|
}
|
|
}
|
|
|
|
|
|
actrTransactionManager->flushGraphics(); //acad 刷新
|
|
acedUpdateDisplay();
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
BOOL IsPipeLayer(const CString &sLayer)
|
|
{
|
|
if (sLayer.Compare(LAY_PIPE_FEED) == 0 || sLayer.Compare(LAY_PIPE_FEED2) == 0 || sLayer.Compare(LAY_PIPE_FEED3) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_FEED) == 0 || sLayer.Compare(LAY_VPIPE_FEED2) == 0 || sLayer.Compare(LAY_VPIPE_FEED3) == 0
|
|
|| sLayer.Compare(LAY_PIPE_HEADFEED) == 0 || sLayer.Compare(LAY_PIPE_HEADFEED2) == 0 || sLayer.Compare(LAY_PIPE_HEADFEED3) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_HEADFEED) == 0 || sLayer.Compare(LAY_VPIPE_HEADFEED2) == 0 || sLayer.Compare(LAY_VPIPE_HEADFEED3) == 0
|
|
|| sLayer.Compare(LAY_PIPE_HEADBACK) == 0 || sLayer.Compare(LAY_PIPE_HEADBACK2) == 0 || sLayer.Compare(LAY_PIPE_HEADBACK3) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_HEADBACK) == 0 || sLayer.Compare(LAY_VPIPE_HEADBACK2) == 0 || sLayer.Compare(LAY_VPIPE_HEADBACK3) == 0
|
|
|| sLayer.Compare(LAY_PIPE_DIRT) == 0 || sLayer.Compare(LAY_VPIPE_DIRT) == 0 || sLayer.Compare(LAY_PIPE_USELESS) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_USELESS) == 0 || sLayer.Compare(LAY_PIPE_RAIN) == 0 || sLayer.Compare(LAY_VPIPE_RAIN) == 0
|
|
|| sLayer.Compare(LAY_PIPE_USED) == 0 || sLayer.Compare(LAY_VPIPE_USED) == 0 || sLayer.Compare(LAY_PIPE_FIRE) == 0
|
|
|| sLayer.Compare(LAY_PIPE_FIRE2) == 0 || sLayer.Compare(LAY_PIPE_FIRE3) == 0 || sLayer.Compare(LAY_PIPE_SPRINKLE) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_SPRINKLE) == 0 || sLayer.Compare(LAY_PIPE_COAGULATE) == 0 || sLayer.Compare(LAY_VPIPE_COAGULATE) == 0
|
|
|| sLayer.Compare(LAY_PIPE_DRINK) == 0 || sLayer.Compare(LAY_VPIPE_DRINK) == 0 || sLayer.Compare(LAY_PIPE_PRESSDIRT) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_PRESSDIRT) == 0 || sLayer.Compare(LAY_PIPE_PRESSUSELESS) == 0 || sLayer.Compare(LAY_VPIPE_PRESSUSELESS) == 0
|
|
|| sLayer.Compare(LAY_PIPE_PRESSRAIN) == 0 || sLayer.Compare(LAY_VPIPE_PRESSRAIN) == 0 || sLayer.Compare(LAY_PIPE_OTHER) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_OTHER) == 0 || sLayer.Compare(LAY_PIPE_USER1) == 0 || sLayer.Compare(LAY_PIPE_USER2) == 0
|
|
|| sLayer.Compare(LAY_PIPE_USER3) == 0 || sLayer.Compare(LAY_PIPE_USER4) == 0 || sLayer.Compare(LAY_PIPE_USER5) == 0
|
|
|| sLayer.Compare(LAY_PIPE_USER6) == 0 || sLayer.Compare(LAY_PIPE_USER7) == 0 || sLayer.Compare(LAY_PIPE_USER8) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_USER1) == 0 || sLayer.Compare(LAY_VPIPE_USER2) == 0 || sLayer.Compare(LAY_VPIPE_USER3) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_USER4) == 0 || sLayer.Compare(LAY_VPIPE_USER5) == 0 || sLayer.Compare(LAY_VPIPE_USER6) == 0
|
|
|| sLayer.Compare(LAY_VPIPE_USER7) == 0 || sLayer.Compare(LAY_VPIPE_USER5) == 0)
|
|
{
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
void ShowEntity(const CString &sLayer, BOOL bOpen)
|
|
{
|
|
if (IsPipeLayer(sLayer))
|
|
{
|
|
AcDbDatabase *dwg = acdbCurDwg();
|
|
AcAxDocLock docLock(dwg);
|
|
TDbPsConfig *pConfig = GetDwgPsGlobal(AcDb::kForWrite);
|
|
if (pConfig != NULL)
|
|
{
|
|
pConfig->ShowSystem(GetPipeSysByLayer(sLayer), bOpen);
|
|
pConfig->close();
|
|
}
|
|
}
|
|
|
|
RBList rbMask(8, sLayer, NULL);
|
|
PickSet ssAll(SS_FREE);
|
|
ssAll.Get(_T("X"), NULL, NULL, rbMask);
|
|
for (long i = 0; i < ssAll.Length(); i++)
|
|
{
|
|
OPENOBJ_BEGIN(ssAll[i], AcDb::kForRead, AcDbEntity, pEnt);
|
|
if(pEnt != NULL)
|
|
{
|
|
if(pEnt->visibility() == AcDb::kInvisible){
|
|
if(pEnt->upgradeOpen()==Acad::eOk) {
|
|
pEnt->setVisibility(AcDb::kVisible);
|
|
pEnt->downgradeOpen();
|
|
}
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
|
|
}
|
|
|