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

199 lines
5.6 KiB
C++

#include "stdafx.h"
// No Msg file is required
TARCH_IMPEXP void VpLayerFreeze3D();
TARCH_IMPEXP void VpLayerFreeze2D();
TARCH_IMPEXP int UpdatDisp();
//TARCH_IMPEXP void UpdateTDbEntity();
/*
TARCH_IMPEXP int ShowQ()
{
AssureTileMode(0);
DocSetDrawMode(DRAW_3D);
UpdatDisp();
DocSetDrawMode(DRAW_2D);
UpdateTDbEntity();
return RTNORM;
}
*/
// Command: 显示2D
TARCH_IMPEXP int Show2D()
{
int nTileMode=0;
VERIFY(xg_getvar(_T("TILEMODE"), &nTileMode)==RTNORM);
DocSetDrawMode(DRAW_2D);
UpdateTDbEntity();
XSymbolList lstLayers(_T("LAYER"), _T("3D*"));
for(int i=0; i<lstLayers.Length(); i++)
AssureLayer(lstLayers[i], LAYSTAT_FREEZE);
XSymbolList lstLayers1(_T("LAYER"), _T("2D*"));
for(i=0; i<lstLayers1.Length(); i++)
AssureLayer(lstLayers1[i], LAYSTAT_ON|LAYSTAT_THAW);
return RTNORM;
}
TARCH_IMPEXP int ShowStd()
{
int nTileMode=0;
VERIFY(xg_getvar(_T("TILEMODE"), &nTileMode)==RTNORM);
DocSetDrawMode(DRAW_2D+DRAW_3D);
UpdateTDbEntity();
return RTNORM;
}
// Command: 显示3D
TARCH_IMPEXP int Show3D()
{
int nTileMode=0;
VERIFY(xg_getvar(_T("TILEMODE"), &nTileMode)==RTNORM);
DocSetDrawMode(DRAW_3D);
UpdateTDbEntity();
XSymbolList lstLayers(_T("LAYER"), _T("2D*"));
for(int i=0; i<lstLayers.Length(); i++)
AssureLayer(lstLayers[i], LAYSTAT_FREEZE);
XSymbolList lstLayers1(_T("LAYER"), _T("3D*,3T*"));
for(i=0; i<lstLayers1.Length(); i++)
AssureLayer(lstLayers1[i], LAYSTAT_ON|LAYSTAT_THAW);
return RTNORM;
}
TARCH_IMPEXP int GetDwgToWrite(TCHAR * fullName, const TCHAR *pszPlus, const TCHAR *title=NULL)
{
resbuf result;
XString dwgPrefix(256);
result.resval.rstring=NULL;
xg_getvar(_T("DWGPREFIX"), dwgPrefix);
if(pszPlus) {
TCHAR szDwgName[80]=_T("");
AT_GetCurDwg(szDwgName);
dwgPrefix << szDwgName << pszPlus;
}
int rc = ads_getfiled((title? title:_T("输入文件名")), dwgPrefix, _T("DWG"), 1, &result);
if(rc==RTNORM) {
_tcscpy(fullName, result.resval.rstring);
free(result.resval.rstring);
}
return rc;
}
//////////////////////////////////////////////////////////////
// command: 裁剪生成详图
// 用Dview剖切
// Status: 如果三维图层没有打开,则剖面图可能出现不了这些实体
// 必须在WCS下
/*
int ClipDetail()
{
AsureWCS();
TCHAR fullName[80]=_T("");
if(StartAnotherDwg()!=RTNORM || GetDwgToWrite(fullName, NULL, _T("输入文件名"))!=RTNORM)
return RTERROR;
XPoint ptLow, ptUp;
if(XGetPoint(NULL, _T("\n第一个角点: "), ptLow)!=RTNORM ||
ads_getcorner(ptLow, _T("\n另一个角点: "), ptUp)!=RTNORM)
return RTERROR;
XPushVar<int> expert(_T("EXPERT"), 2);
ads_command(RTSTR, _T("SAVEAS"), RTSTR, _T(""), RTSTR, fullName, NULL);
PickSet ss(SS_FREE);
if(ss.Get("C", ptLow, ptUp)==RTNORM) {
PickSet ssAll(SS_FREE);
ssAll.Get("X");
ssAll -= ss;
PickSet ssVp(SS_FREE);
if(ssVp.Get("X", NULL, NULL, RBList(RTDXF0, "VIEWPORT", NULL))==RTNORM)
ssAll -= ssVp;
ssAll.Erase();
PickSet ssExplode(SS_FREE);
long lCount=ss.Length();
for(long i=0L; i<lCount; i++) {
Entity ent=ss[i];
XDbObject obj(ent, AcDb::kForRead);
if(!obj) continue;
TDbEntity *pEnt1=TDbEntity::cast(obj.m_pObject);
TDbCurveEntity *pEnt2=TDbCurveEntity::cast(obj.m_pObject);
if(pEnt1 || pEnt2) {
AcDbVoidPtrArray entSet;
XExplodeStream dc(entSet);
if(pEnt1) {
if(pEnt1->ExplodeOrDraw2d(dc)==Acad::eInvalidInput)
pEnt1->explode(entSet);
ssExplode += ent;
} else if(pEnt2) {
if(pEnt2->ExplodeOrDraw2d(dc)==Acad::eInvalidInput)
pEnt2->explode(entSet);
ssExplode += ent;
}
long lNum=entSet.length();
for(long j=0L; j<lNum; j++) {
AcDbEntity * pDbEnt=(AcDbEntity *)entSet[j];
ASSERT(pDbEnt);
AddToModelSpace(pDbEnt, Adesk::kTrue);
}
}
}
ssExplode.Erase();
ptLow.z=ptUp.z=0;
XRectAngle box(ptLow, ptUp);
XPoly2D poly(1);
poly.AppendNode(box.GetLowLeft());
poly.AppendNode(box.GetLowRight());
poly.AppendNode(box.GetUpRight());
poly.AppendNode(box.GetUpLeft());
RBList fence=ads_buildlist(RT3DPOINT, &box.GetLowLeft(),
RT3DPOINT, &box.GetLowRight(),
RT3DPOINT, &box.GetUpRight(),
RT3DPOINT, &box.GetUpLeft(),
RT3DPOINT, &box.GetLowLeft(), NULL);
PickSet ssForClip(SS_FREE), ssIn(SS_FREE), ssOut(SS_FREE);
if(ssForClip.Get("F", fence, NULL, NULL)==RTNORM) {
PolyClip(ssForClip, poly, ssIn, ssOut);
if(!!ssOut)
ssOut.Erase();
}
}
ads_command(RTSTR, ".QSAVE", NULL);
return RTNORM;
}
// command: 改变高度
int ChgElevation()
{
PickSet ss(SS_FREE);
if(SelectEntities("\n请选择要移动的实体!", ss, RBList(RTDXF0, "*", NULL))!=RTNORM) return RTERROR;
ads_real dist;
if(ads_getdist(NULL, "\n请输入垂直方向的移动距离(>0:往上; <0:往下): ", &dist)==RTNORM) {
XPoint base, result(0,0,dist);
XPushVar<int> vOsMode("OSMODE", 0);
ads_command(RTSTR, ".MOVE", RTPICKS, (long *)ss, RTSTR, "",
RT3DPOINT, &base, RT3DPOINT, &result, NULL);
}
return RTNORM;
}
*/