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

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();
}
}