2521 lines
59 KiB
C++
2521 lines
59 KiB
C++
#include "stdafx.h"
|
|
#include "Resource.h"
|
|
#include "KTParamService.h"
|
|
#include "KTEntityDragMgr.h"
|
|
#include "KTPIDUtility.h"
|
|
#include "EquAttribDlg.h"
|
|
#include "NozzleDlg.h"
|
|
#include "ArrowDlg.h"
|
|
#include "InstBubbleDlg.h"
|
|
#include "LineNumDlg.h"
|
|
#include "SpecJumpDlg.h"
|
|
#include "ReduerDlg.h"
|
|
#include "KTPipeLineNoDlg.h"
|
|
#include "CKTDimUtility.h"
|
|
#include "UIHistory.h"
|
|
#include "coretools.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
#define LAYER_VESSEL _T("LAY_Vessel") // Vessel
|
|
#define TSTYLE_VESSEL _T("Equment_Dim") // Vessel
|
|
#define LAY_INSTRUMENT _T("LAY_INSTRUMENT") // INSTRUMENT
|
|
#define PID_LINETYPE_FILE _T("KTPID.lin")
|
|
#define LAYER_EQUDIM _T("LAY_EQUMENTDIM ") // EQUMENTDIM
|
|
|
|
#define PID_LINENO _T("管线名称") //Xdata中的管线名称
|
|
|
|
#define PID_LINETYPE_DEF _T("AcadIso.lin")
|
|
|
|
namespace
|
|
{
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, double dScale, AcGePoint3d ptBase, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
//控制缩放比例/////////////////////////////////////
|
|
AcGeMatrix3d mat1, mat2;
|
|
mat1.setToScaling(dScale);
|
|
mat2.setToTranslation(ptBase - AcGePoint3d::kOrigin);
|
|
//mat2.setToRotation(dAngle, AcGeVector3d::kZAxis);
|
|
AcDbEntity* pEnt;
|
|
int iPos = arpPart.length();
|
|
while ((--iPos) >= 0)
|
|
{
|
|
pEnt = (AcDbEntity*)arpPart[iPos];
|
|
ASSERT(NULL != pEnt);
|
|
pEnt->transformBy(mat1);
|
|
pEnt->transformBy(mat2);
|
|
}
|
|
|
|
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, double dScale, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
|
|
//控制缩放比例/////////////////////////////////////
|
|
AcGeMatrix3d mat, mat2;
|
|
mat.setToScaling(dScale);
|
|
//mat2.setToRotation(dAngle, AcGeVector3d::kZAxis);
|
|
AcDbEntity* pEnt;
|
|
int iPos = arpPart.length();
|
|
while ((--iPos) >= 0)
|
|
{
|
|
pEnt = (AcDbEntity*)arpPart[iPos];
|
|
ASSERT(NULL != pEnt);
|
|
//pEnt->transformBy(mat*mat2);
|
|
pEnt->transformBy(mat);
|
|
}
|
|
////////////////////////////////////////////////////
|
|
|
|
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, AcGePoint3d ptBase, AcGeVector3d& vt, double dScale, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
|
|
//控制缩放比例/////////////////////////////////////
|
|
AcGeMatrix3d mat, mat2;
|
|
mat.setToScaling(dScale);
|
|
//mat2.setToRotation(dAngle, AcGeVector3d::kZAxis);
|
|
AcDbEntity* pEnt;
|
|
int iPos = arpPart.length();
|
|
while ((--iPos) >= 0)
|
|
{
|
|
pEnt = (AcDbEntity*)arpPart[iPos];
|
|
ASSERT(NULL != pEnt);
|
|
//pEnt->transformBy(mat*mat2);
|
|
pEnt->transformBy(mat);
|
|
}
|
|
////////////////////////////////////////////////////
|
|
|
|
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.SetDragPoint(ptBase, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
double dDragValue = drag.GetDragValue();
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dDragValue, AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, double dScale, AcGeVector3d& vt, AcGePoint3d& ptBase, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
|
|
//控制缩放比例/////////////////////////////////////
|
|
AcGeMatrix3d mat, mat2;
|
|
mat.setToScaling(dScale);
|
|
//mat2.setToRotation(dAngle, AcGeVector3d::kZAxis);
|
|
AcDbEntity* pEnt;
|
|
int iPos = arpPart.length();
|
|
while ((--iPos) >= 0)
|
|
{
|
|
pEnt = (AcDbEntity*)arpPart[iPos];
|
|
ASSERT(NULL != pEnt);
|
|
//pEnt->transformBy(mat*mat2);
|
|
pEnt->transformBy(mat);
|
|
}
|
|
////////////////////////////////////////////////////
|
|
|
|
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
double dDragValue = drag.GetDragValue();
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dDragValue, AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
ptBase = drag.GetDragPoint();
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, AcGePoint3d& ptBase, double& dNozzleScale, double& dNozzleRotate, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(FALSE);
|
|
|
|
BOOL bOk = FALSE;
|
|
bOk = drag.DoDrag();
|
|
dNozzleScale = drag.GetDragValue();
|
|
ptBase = drag.GetDragPoint();
|
|
|
|
drag.EnableMove(FALSE);
|
|
drag.EnableScale(FALSE);
|
|
drag.EnableRotate(bRotate);
|
|
drag.SetDragPoint(ptBase, TRUE);
|
|
bOk = drag.DoDrag();
|
|
dNozzleRotate = drag.GetDragValue();
|
|
|
|
if (bOk)
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, double dScale, AcGeVector3d& vt, AcGePoint3d& ptBase, double dAngle, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
|
|
//控制缩放比例/////////////////////////////////////
|
|
AcGeMatrix3d mat, mat2;
|
|
mat.setToScaling(dScale);
|
|
mat2.setToRotation(dAngle, AcGeVector3d::kZAxis);
|
|
AcDbEntity* pEnt;
|
|
int iPos = arpPart.length();
|
|
while ((--iPos) >= 0)
|
|
{
|
|
pEnt = (AcDbEntity*)arpPart[iPos];
|
|
ASSERT(NULL != pEnt);
|
|
pEnt->transformBy(mat*mat2);
|
|
//pEnt->transformBy(mat);
|
|
}
|
|
////////////////////////////////////////////////////
|
|
|
|
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(bRotate, NULL, dAngle);
|
|
if (drag.DoDrag())
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return RTERROR;
|
|
}
|
|
double dDragValue = drag.GetDragValue();
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dDragValue, AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
ptBase = drag.GetDragPoint();
|
|
return RTNORM;
|
|
}
|
|
|
|
int KTCreateEntity(CMapStringToString & mapVarToValue, CString sType, AcGePoint3d& ptBase, double& dNozzleScale, double& dNozzleRotate, double dAngle, BOOL bBlock, BOOL bGroup, BOOL bMove, BOOL bScale, BOOL bRotate)
|
|
{
|
|
|
|
// 取得参数化服务
|
|
KTParamService* pService = GetKTParamService();
|
|
if (NULL == pService)
|
|
{
|
|
acutPrintf(_T("\n参数化服务不存在, 请先加载参数化模块!"));
|
|
return RTERROR;
|
|
}
|
|
|
|
GetKTParamService()->InitService();
|
|
|
|
//
|
|
// 获得参数化设备对象图元
|
|
AcDbVoidPtrArray arpPart;
|
|
if (!pService->CreateParamPart(arpPart, mapVarToValue, sType))
|
|
{
|
|
acutPrintf(_T("参数化设备创建失败, 可能没有找到指定设备或者数据参数不足!"));
|
|
return RTERROR;
|
|
}
|
|
//
|
|
if (0 == arpPart.length())
|
|
{
|
|
acutPrintf(_T("\n参数化设备不存在图形元素定义!"));
|
|
return RTNONE;
|
|
}
|
|
// 拖放创建的参数化设备图元
|
|
CKTEntityDragMgr drag(AcGePoint3d::kOrigin, arpPart, TRUE);
|
|
drag.EnableMove(bMove);
|
|
drag.EnableScale(bScale);
|
|
drag.EnableRotate(FALSE);
|
|
|
|
BOOL bOk = FALSE;
|
|
bOk = drag.DoDrag();
|
|
dNozzleScale = drag.GetDragValue();
|
|
ptBase = drag.GetDragPoint();
|
|
|
|
drag.EnableMove(FALSE);
|
|
drag.EnableScale(FALSE);
|
|
drag.EnableRotate(bRotate, NULL, dAngle);
|
|
drag.SetDragPoint(ptBase, TRUE);
|
|
bOk = drag.DoDrag();
|
|
dNozzleRotate = drag.GetDragValue();
|
|
|
|
if (bOk)
|
|
{
|
|
// 做块
|
|
if (bBlock)
|
|
{
|
|
AcDbObjectId id = CKTCadUtility::CreateBlockTableRecord(arpPart, drag.GetDragPoint());
|
|
AcDbBlockReference *pRef = new AcDbBlockReference(drag.GetDragPoint(), id);
|
|
ASSERT(NULL != pRef);
|
|
CKTCadUtility::AddToBlockTableRecord(pRef);
|
|
pRef->close();
|
|
}
|
|
// 做组
|
|
else if (bGroup)
|
|
{
|
|
AcDbObjectIdArray arid;
|
|
drag.append(arid);
|
|
CKTCadUtility::CreateAcDbGroup(arid);
|
|
}
|
|
// 打散
|
|
else
|
|
{
|
|
drag.append();
|
|
}
|
|
}
|
|
return RTNORM;
|
|
}
|
|
|
|
int CreateDimText(CString sTag, CString sName, CString sType, CString sDes)
|
|
{
|
|
CKTObjLifeMgr entMgr;
|
|
AcDbVoidPtrArray arpEnts;
|
|
|
|
AcDbObjectId idLayer = KTSetting::InitLayer(LAYER_EQUDIM);
|
|
|
|
AcGePoint3d ptPos;
|
|
AcDbObjectId idText = KTSetting::InitTextStyle(TSTYLE_VESSEL);
|
|
|
|
double dTextSize = 0.0;
|
|
AcDbTextStyleTableRecord* pTextStyleRec = NULL;
|
|
acdbOpenObject(pTextStyleRec, idText, AcDb::kForRead);
|
|
if (NULL != pTextStyleRec)
|
|
{
|
|
dTextSize = pTextStyleRec->textSize();
|
|
pTextStyleRec->close();
|
|
}
|
|
else
|
|
{
|
|
CKTCadUtility::GetSystemVar(_T("TEXTSIZE"), dTextSize);
|
|
}
|
|
|
|
AcGeVector3d vtOffset(UcsYAxis * dTextSize);
|
|
double dAngle = CKTCadUtility::GetAngle(UcsXAxis);
|
|
|
|
//按设置
|
|
//字高默认2.5-->设备标注文字
|
|
//按全局标注比例
|
|
double dpipedn, dpipew, dtxtH, dtxtW;
|
|
int nDimType = 0;
|
|
AecDbObjXDataMap xInitDataMap;
|
|
CKTDimUtility::Getinit(xInitDataMap, dpipew, dtxtH, dtxtW, nDimType);
|
|
|
|
CKTEntityDragMgr drag;
|
|
drag.SetDragPoint(ptPos);
|
|
drag.EnableRotate(FALSE);
|
|
drag.EnableScale(FALSE);
|
|
|
|
AcDbText* pText = new AcDbText(ptPos, sTag, idText, 0, dAngle);
|
|
ASSERT(NULL != pText);
|
|
pText->setLayer(idLayer);
|
|
pText->setHeight(dtxtH);
|
|
pText->setWidthFactor(0.75);
|
|
drag.Add(pText);
|
|
|
|
ptPos -= vtOffset;
|
|
pText = new AcDbText(ptPos, sName, idText, 0, dAngle);
|
|
ASSERT(NULL != pText);
|
|
pText->setHeight(dtxtH);
|
|
pText->setWidthFactor(0.75);
|
|
pText->setLayer(idLayer);
|
|
drag.Add(pText);
|
|
|
|
ptPos -= vtOffset;
|
|
pText = new AcDbText(ptPos, sType, idText, 0, dAngle);
|
|
ASSERT(NULL != pText);
|
|
pText->setHeight(dtxtH);
|
|
pText->setWidthFactor(0.75);
|
|
pText->setLayer(idLayer);
|
|
drag.Add(pText);
|
|
|
|
ptPos -= vtOffset;
|
|
pText = new AcDbText(ptPos, sDes, idText, 0, dAngle);
|
|
ASSERT(NULL != pText);
|
|
pText->setHeight(dtxtH);
|
|
pText->setWidthFactor(0.75);
|
|
pText->setLayer(idLayer);
|
|
drag.Add(pText);
|
|
|
|
if (drag.DoDrag())
|
|
{
|
|
arpEnts.append(*drag.GetAll());
|
|
drag.Remove();
|
|
}
|
|
|
|
|
|
entMgr.Add(arpEnts);
|
|
entMgr.AddToBlockTableRecord();
|
|
return 0;
|
|
}
|
|
|
|
int CreateDimText(CString sTag)
|
|
{
|
|
CKTObjLifeMgr entMgr;
|
|
AcDbVoidPtrArray arpEnts;
|
|
|
|
AcDbObjectId idLayer = KTSetting::InitLayer(LAYER_EQUDIM);
|
|
|
|
AcGePoint3d ptPos;
|
|
AcDbObjectId idText = KTSetting::InitTextStyle(TSTYLE_VESSEL);
|
|
|
|
double dTextSize = 0.0;
|
|
AcDbTextStyleTableRecord* pTextStyleRec = NULL;
|
|
acdbOpenObject(pTextStyleRec, idText, AcDb::kForRead);
|
|
if (NULL != pTextStyleRec)
|
|
{
|
|
dTextSize = pTextStyleRec->textSize();
|
|
pTextStyleRec->close();
|
|
}
|
|
else
|
|
{
|
|
CKTCadUtility::GetSystemVar(_T("TEXTSIZE"), dTextSize);
|
|
}
|
|
|
|
AcGeVector3d vtOffset(UcsYAxis * dTextSize);
|
|
double dAngle = CKTCadUtility::GetAngle(UcsXAxis);
|
|
|
|
//按设置
|
|
//字高默认2.5-->设备标注文字
|
|
//按全局标注比例
|
|
double dpipedn, dpipew, dtxtH, dtxtW;
|
|
int nDimType = 0;
|
|
AecDbObjXDataMap xInitDataMap;
|
|
CKTDimUtility::Getinit(xInitDataMap, dpipew, dtxtH, dtxtW, nDimType);
|
|
|
|
CKTEntityDragMgr drag;
|
|
drag.SetDragPoint(ptPos);
|
|
drag.EnableRotate(FALSE);
|
|
drag.EnableScale(FALSE);
|
|
|
|
AcDbText* pText = new AcDbText(ptPos, sTag, idText, 0, dAngle);
|
|
ASSERT(NULL != pText);
|
|
pText->setLayer(idLayer);
|
|
pText->setHeight(dtxtH);
|
|
pText->setWidthFactor(0.75);
|
|
|
|
drag.Add(pText);
|
|
|
|
if (drag.DoDrag())
|
|
{
|
|
arpEnts.append(*drag.GetAll());
|
|
drag.Remove();
|
|
}
|
|
|
|
|
|
entMgr.Add(arpEnts);
|
|
entMgr.AddToBlockTableRecord();
|
|
return 0;
|
|
}
|
|
|
|
int CreatePIDEqument(CEquAttribDlg &CDlg, LPCTSTR sType, LPCTSTR sClass)
|
|
{
|
|
GetKTParamService()->InitService();
|
|
CAcModuleResourceOverride myResources;
|
|
int nRes = CDlg.DoModal();
|
|
if (nRes == IDOK)
|
|
{
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue = _T("");
|
|
sValue.Format(_T("%s"), CDlg.m_sTag);
|
|
mapVarToValue.SetAt(_T("Tag"), sValue);
|
|
|
|
sValue.Format(_T("%s"), CDlg.m_sName);
|
|
mapVarToValue.SetAt(_T("Name"), sValue);
|
|
|
|
sValue.Format(_T("%s"), CDlg.m_sType);
|
|
mapVarToValue.SetAt(_T("Type"), sValue);
|
|
|
|
sValue.Format(_T("%s"), CDlg.m_sDes);
|
|
mapVarToValue.SetAt(_T("Des"), sValue);
|
|
|
|
sValue.Format(_T("%s"), sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
sValue.Format(_T("%s"), sClass);
|
|
mapVarToValue.SetAt(_T("Class"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue, sType, FALSE, TRUE, TRUE, TRUE, TRUE);
|
|
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acedAlert(_T("\n系统没有初始化!"));
|
|
return FALSE;
|
|
}
|
|
int iContent = 0;
|
|
xDataMap.GetAt(DOC_PIDEWITHDIM, iContent);
|
|
if (iContent == 1)
|
|
{
|
|
CreateDimText(CDlg.m_sTag, CDlg.m_sName, CDlg.m_sType, CDlg.m_sDes);
|
|
}
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
AcDbObjectId GetGroupId(AcDbObjectId objId)
|
|
{
|
|
AcDbObjectId persObjId;
|
|
AcDbObject *pEnt;
|
|
if (Acad::eOk != acdbOpenObject(pEnt, objId, AcDb::kForRead))
|
|
{
|
|
acutPrintf(_T("\n实体打开失败!"));
|
|
return AcDbObjectId::kNull;
|
|
}
|
|
|
|
AcDbDictionary *pGroup;
|
|
const AcDbVoidPtrArray *pReactors;
|
|
pReactors = pEnt->reactors();
|
|
if (pReactors == NULL)
|
|
{
|
|
acutPrintf(_T("\n该实体未编组!"));
|
|
pEnt->close();
|
|
return AcDbObjectId::kNull;
|
|
}
|
|
pEnt->close();
|
|
int length = pReactors->length();
|
|
void *pSomething;
|
|
for (int i = 0; i < length; ++i)
|
|
{
|
|
pSomething = (AcDbObject*)pReactors->at(i);
|
|
if (acdbIsPersistentReactor(pSomething)) {
|
|
// Every group reactor is a persistent reactor.
|
|
// Is this a reactor from a group?
|
|
persObjId = acdbPersistentReactorObjectId(pSomething);
|
|
AcDbObject *pReactor;
|
|
if (Acad::eOk != acdbOpenObject(pReactor, persObjId, AcDb::kForRead))
|
|
{
|
|
acutPrintf(_T("\n迭代器打开失败!"));
|
|
continue;
|
|
}
|
|
if (pReactor->isKindOf(AcDbGroup::desc())) {
|
|
// This is a group reactor. Get the group name.
|
|
AcDbObjectId groupId = pReactor->ownerId();
|
|
if (Acad::eOk != acdbOpenObject(pGroup, groupId, AcDb::kForRead))
|
|
{
|
|
acutPrintf(_T("\n组打开失败!"));
|
|
pReactor->close();
|
|
continue;
|
|
}
|
|
LPTSTR groupName;
|
|
if (Acad::eOk != (pGroup->nameAt(persObjId, groupName)))
|
|
{
|
|
acutPrintf(_T("\n获得组名失败!"));
|
|
pReactor->close();
|
|
pGroup->close();
|
|
continue;
|
|
}
|
|
pGroup->close();
|
|
}
|
|
pReactor->close();
|
|
}
|
|
}
|
|
return persObjId;
|
|
}
|
|
|
|
int CreateBubble(CInstBubbleDlg &CDlg, int iType)
|
|
{
|
|
int nType = -1;
|
|
CString sType = _T("");
|
|
CString sTcontent = _T("");
|
|
CString sBcontent = _T("");
|
|
CString sLineType = _T("");
|
|
double dScale;
|
|
|
|
AcGePoint3d ptInsert;
|
|
AcGeVector3d vDir;
|
|
AcDbObjectId idLineType, idLayer, idPolyline;
|
|
idLineType = NULL;
|
|
idLayer = NULL;
|
|
idLayer = KTSetting::InitLayer(LAY_INSTRUMENT);
|
|
|
|
//CInstBubbleDlg CDlg;
|
|
CDlg.iType = iType;
|
|
CAcModuleResourceOverride myResources;
|
|
int nRes = CDlg.DoModal();
|
|
if (nRes == IDOK)
|
|
{
|
|
nType = CDlg.m_iRadio;
|
|
sTcontent = CDlg.m_sTContent;
|
|
sBcontent = CDlg.m_sBContent;
|
|
sLineType.Format(_T("%s\\%s"), PID_LINETYPE_FILE, CDlg.m_sLineType);
|
|
dScale = CDlg.m_dR;
|
|
|
|
|
|
//设置线形
|
|
if (_T("") != sLineType)
|
|
{
|
|
// 分解"线型路径及文件\线型"格式
|
|
TCHAR szPathName[MAX_PATH];
|
|
LPCTSTR pszType = _tcsrchr(sLineType, _T('\\'));
|
|
if (NULL == pszType)
|
|
{
|
|
_tcscpy(szPathName, PID_LINETYPE_DEF);
|
|
pszType = sLineType;
|
|
}
|
|
else
|
|
{
|
|
int iRet = pszType - LPCTSTR(sLineType);
|
|
_tcsncpy(szPathName, sLineType, iRet); szPathName[iRet] = 0;
|
|
pszType++;
|
|
}
|
|
|
|
acedFindFile(szPathName, szPathName);
|
|
acdbCurDwg()->loadLineTypeFile(pszType, szPathName);
|
|
AcDbSymbolUtilities::getLinetypeId(idLineType, pszType, acdbCurDwg());
|
|
}
|
|
|
|
switch (iType)
|
|
{
|
|
case 1:
|
|
switch (nType)
|
|
{
|
|
case 0:
|
|
sType = _T("PIDDisc-Local");
|
|
break;
|
|
case 1:
|
|
sType = _T("PIDDisc-PrimaryFront");
|
|
break;
|
|
case 2:
|
|
sType = _T("PIDDisc-PrimaryBack");
|
|
break;
|
|
case 3:
|
|
sType = _T("PIDDisc-AuxiliaryFront");
|
|
break;
|
|
case 4:
|
|
sType = _T("PIDDisc-AuxiliaryBack");
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch (nType)
|
|
{
|
|
case 0:
|
|
sType = _T("PIDShared-Local");
|
|
break;
|
|
case 1:
|
|
sType = _T("PIDShared-PrimaryFront");
|
|
break;
|
|
case 2:
|
|
sType = _T("PIDShared-PrimaryBack");
|
|
break;
|
|
case 3:
|
|
sType = _T("PIDShared-AuxiliaryFront");
|
|
break;
|
|
case 4:
|
|
sType = _T("PIDShared-AuxiliaryBack");
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
switch (nType)
|
|
{
|
|
case 0:
|
|
sType = _T("PIDComputer-Local");
|
|
break;
|
|
case 1:
|
|
sType = _T("PIDComputer-PrimaryFront");
|
|
break;
|
|
case 2:
|
|
sType = _T("PIDComputer-PrimaryBack");
|
|
break;
|
|
case 3:
|
|
sType = _T("PIDComputer-AuxiliaryFront");
|
|
break;
|
|
case 4:
|
|
sType = _T("PIDComputer-AuxiliaryBack");
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
switch (nType)
|
|
{
|
|
case 0:
|
|
sType = _T("PIDLogic-Local");
|
|
break;
|
|
case 1:
|
|
sType = _T("PIDLogic-PrimaryFront");
|
|
break;
|
|
case 2:
|
|
sType = _T("PIDLogic-PrimaryBack");
|
|
break;
|
|
case 3:
|
|
sType = _T("PIDLogic-AuxiliaryFront");
|
|
break;
|
|
case 4:
|
|
sType = _T("PIDLogic-AuxiliaryBack");
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
switch (nType)
|
|
{
|
|
case 0:
|
|
sType = _T("PIDPilot-Local");
|
|
break;
|
|
case 1:
|
|
sType = _T("PIDPilot-PrimaryFront");
|
|
break;
|
|
case 2:
|
|
sType = _T("PIDPilot-AuxiliaryFront");
|
|
break;
|
|
case 3:
|
|
sType = _T("");
|
|
break;
|
|
case 4:
|
|
sType = _T("");
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
int isuccess = KTPIDUtility::CreatePolyLineALL(idLineType, idLayer, ptInsert, vDir, idPolyline);
|
|
if (isuccess == 0)
|
|
{
|
|
if (idPolyline != AcDbObjectId::kNull)
|
|
{
|
|
//将仪表线断开,断开距离为仪表泡的半径
|
|
vDir.normalize();
|
|
AcGePoint3d ptMid = ptInsert - vDir * dScale / 4;
|
|
KTPIDUtility::BreakPIDPipe(idPolyline, ptMid, dScale / 2);
|
|
}
|
|
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue = _T("");
|
|
sValue.Format(_T("%s"), sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
sValue.Format(_T("%s"), _T("仪表泡"));
|
|
mapVarToValue.SetAt(_T("Class"), sValue);
|
|
|
|
sValue.Format(_T("%s"), sTcontent);
|
|
mapVarToValue.SetAt(_T("Tcontent"), sValue);
|
|
|
|
sValue.Format(_T("%s"), sBcontent);
|
|
mapVarToValue.SetAt(_T("Bcontent"), sValue);
|
|
|
|
sValue.Format(_T("%s"), _T("0.25"));
|
|
mapVarToValue.SetAt(_T("TxtH"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue, sType, dScale, ptInsert, FALSE, FALSE, FALSE, FALSE, FALSE);
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
//命令代码区
|
|
//换热器
|
|
void PL_KTExchangeDouble()
|
|
{
|
|
CString sType=_T("PIDExc-DoubleEnd");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTExchangeDoubleEK()
|
|
{
|
|
CString sType=_T("PIDExc-DoubleEndKettle");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
return;
|
|
}
|
|
|
|
void PL_KTProcessFlow()
|
|
{
|
|
CString sType=_T("PIDExc-ProcessFlow");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
return;
|
|
}
|
|
|
|
void PL_KTSingleEnd()
|
|
{
|
|
CString sType=_T("PIDExc-SingleEnd");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTSingleEK()
|
|
{
|
|
CString sType=_T("PIDExc-SingleEndKettle");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTSuper()
|
|
{
|
|
CString sType=_T("PIDExc-Super");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTExcPipe()
|
|
{
|
|
CString sType=_T("PIDExc-Pipe");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTExcUPipe()
|
|
{
|
|
CString sType=_T("PIDExc-UPipe");
|
|
CString sClass =_T("换热器");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
//泵
|
|
void PL_KTCentrifuqal1()
|
|
{
|
|
CString sType=_T("PIDPump-Centrifuqal1");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTCentrifuqal2()
|
|
{
|
|
CString sType=_T("PIDPump-Centrifuqal2");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTDeep1()
|
|
{
|
|
CString sType=_T("PIDPump-Deep1");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTDeep2()
|
|
{
|
|
CString sType=_T("PIDPump-Deep2");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTDual()
|
|
{
|
|
CString sType=_T("PIDPump-Dual");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTHoriz1()
|
|
{
|
|
CString sType=_T("PIDPump-Horiz1");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTHoriz2()
|
|
{
|
|
CString sType=_T("PIDPump-Horiz2");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTInline()
|
|
{
|
|
CString sType=_T("PIDPump-Inline");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTRotary()
|
|
{
|
|
CString sType=_T("PIDPump-Rotary");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTTurbine1()
|
|
{
|
|
CString sType=_T("PIDPump-Turbine1");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTTurbine2()
|
|
{
|
|
CString sType=_T("PIDPump-Turbine2");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTVacuum()
|
|
{
|
|
CString sType=_T("PIDPump-Vacuum");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPumpVert1()
|
|
{
|
|
CString sType=_T("PIDPump-Vert1");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPumpVert2()
|
|
{
|
|
CString sType=_T("PIDPump-Vert2");
|
|
CString sClass =_T("泵");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
//管嘴
|
|
void PL_KTPIDNozzle()
|
|
{
|
|
CString sType=_T("");
|
|
CString sClass =_T("管嘴");
|
|
|
|
CAcModuleResourceOverride myResources;
|
|
CNozzleDlg CDlg;
|
|
int nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
int nType =CDlg.m_iRadio;
|
|
double dScale = CDlg.m_dScale;
|
|
BOOL bScale = CDlg.m_bScale;
|
|
switch(nType)
|
|
{
|
|
case 0:
|
|
sType=_T("PIDNozzle1");
|
|
break;
|
|
case 1:
|
|
sType=_T("PIDNozzle2");
|
|
break;
|
|
case 2:
|
|
sType=_T("PIDNozzle3");
|
|
break;
|
|
case 3:
|
|
sType=_T("PIDNozzle4");
|
|
break;
|
|
case 4:
|
|
sType=_T("PIDNozzle5");
|
|
break;
|
|
case 5:
|
|
sType=_T("PIDNozzle6");
|
|
break;
|
|
case 6:
|
|
sType=_T("PIDNozzle7");
|
|
break;
|
|
case 7:
|
|
sType=_T("PIDNozzle8");
|
|
break;
|
|
}
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
sValue.Format(_T("%s"),CDlg.m_sNozzleNO);
|
|
mapVarToValue.SetAt(_T("Tag"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sClass);
|
|
mapVarToValue.SetAt(_T("Class"), sValue);
|
|
if (bScale==TRUE)
|
|
{
|
|
AcGeVector3d vt;
|
|
AcGePoint3d ptBase;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dScale,vt,ptBase,FALSE,TRUE,TRUE,FALSE,TRUE);
|
|
AcDbObjectId id = NULL;
|
|
BOOL nOK = KTPIDUtility::GetPipeID(ptBase,id);
|
|
if (nOK == TRUE)
|
|
{
|
|
AcGePoint3d ptInsert = ptBase + vt*dScale/2;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dScale);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
double dNozzleScale=1;
|
|
double dNozzleRotate=0;
|
|
|
|
AcGePoint3d ptBase;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,ptBase,dNozzleScale,dNozzleRotate,FALSE,TRUE,TRUE,TRUE,TRUE);
|
|
AcDbObjectId id = NULL;
|
|
BOOL nOK = KTPIDUtility::GetPipeID(ptBase,id);
|
|
if (nOK == TRUE)
|
|
{
|
|
AcGeVector3d vt;
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dNozzleRotate,AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
AcGePoint3d ptInsert = ptBase + vt*dNozzleScale/2;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dNozzleScale);
|
|
}
|
|
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
//Stove
|
|
void PL_KTPIDSTV1()
|
|
{
|
|
CString sType=_T("PIDSTV-1");
|
|
CString sClass =_T("工业炉");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDSTV2()
|
|
{
|
|
CString sType=_T("PIDSTV-2");
|
|
CString sClass =_T("工业炉");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
//Rector
|
|
void PL_KTOnPIDR1()
|
|
{
|
|
CString sType=_T("PIDR-1");
|
|
CString sClass =_T("反应釜");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTOnPIDR2()
|
|
{
|
|
CString sType=_T("PIDR-2");
|
|
CString sClass =_T("反应釜");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTOnPIDR3()
|
|
{
|
|
CString sType=_T("PIDR-3");
|
|
CString sClass =_T("反应釜");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTOnPIDR4()
|
|
{
|
|
CString sType=_T("PIDR-4");
|
|
CString sClass =_T("反应釜");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
//Compressor
|
|
void PL_KTPIDCompressor1()
|
|
{
|
|
CString sType=_T("PIDCompressor-fan1");
|
|
CString sClass =_T("压缩机");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDCompressor2()
|
|
{
|
|
CString sType=_T("PIDCompressor-fan2");
|
|
CString sClass =_T("压缩机");
|
|
CEquAttribDlg dlg;
|
|
GET_CACHE(%s%s%s%s, &dlg.m_sDes, &dlg.m_sName, &dlg.m_sTag, &dlg.m_sType);
|
|
CreatePIDEqument(dlg, sType,sClass);
|
|
SET_CACHE(%s%s%s%s, dlg.m_sDes, dlg.m_sName, dlg.m_sTag, dlg.m_sType);
|
|
return;
|
|
}
|
|
//Flow dirction arrow
|
|
void PL_KTPIDFDA()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
CString sType=_T("");
|
|
CString sClass =_T("流向箭头");
|
|
|
|
|
|
|
|
CAcModuleResourceOverride myResources;
|
|
CArrowDlg CDlg;
|
|
|
|
GET_CACHE(%d%f%d%s%s
|
|
, &CDlg.m_iRadio
|
|
, &CDlg.m_dScale
|
|
, &CDlg.m_bScale
|
|
, &CDlg.m_sDwgNo
|
|
, &CDlg.m_sPipeNo);
|
|
|
|
double dScale = 1;
|
|
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
xDataMap.GetAt(DOC_CONSIGN, dScale);
|
|
////
|
|
if (!CDlg.m_bScale)
|
|
CDlg.m_dScale = dScale;
|
|
int nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
SET_CACHE(%d%f%d%s%s
|
|
, CDlg.m_iRadio
|
|
, CDlg.m_dScale
|
|
, CDlg.m_bScale ? 1 : 0
|
|
, CDlg.m_sDwgNo
|
|
, CDlg.m_sPipeNo);
|
|
|
|
int nType = CDlg.m_iRadio;
|
|
dScale = CDlg.m_dScale;
|
|
BOOL bScale = CDlg.m_bScale;
|
|
CString sPipeNo = CDlg.m_sPipeNo;
|
|
CString sDwgNo = CDlg.m_sDwgNo;
|
|
double dAngle = PI;
|
|
|
|
switch(nType)
|
|
{
|
|
case 0:
|
|
sType=_T("PIDArrow1");
|
|
dAngle = PI;
|
|
break;
|
|
case 1:
|
|
sType=_T("PIDArrow2");
|
|
dAngle = 0;
|
|
break;
|
|
case 2:
|
|
sType=_T("PIDArrow3");
|
|
dAngle = PI;
|
|
break;
|
|
case 3:
|
|
sType=_T("PIDArrow4");
|
|
dAngle = 0;
|
|
break;
|
|
case 4:
|
|
sType=_T("PIDArrow5");
|
|
dAngle = PI;
|
|
break;
|
|
case 5:
|
|
sType=_T("PIDArrow6");
|
|
dAngle = 0;
|
|
break;
|
|
case 6:
|
|
sType=_T("PIDArrow7");
|
|
dAngle = PI;
|
|
break;
|
|
case 7:
|
|
sType=_T("PIDArrow8");
|
|
dAngle = 0;
|
|
break;
|
|
case 8:
|
|
sType=_T("PIDArrow9");
|
|
dAngle = PI;
|
|
break;
|
|
case 9:
|
|
sType=_T("PIDArrow10");
|
|
dAngle = 0;
|
|
break;
|
|
}
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
sValue.Format(_T("%s"),sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sClass);
|
|
mapVarToValue.SetAt(_T("Class"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sPipeNo);
|
|
mapVarToValue.SetAt(_T("PipeNo"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sDwgNo);
|
|
mapVarToValue.SetAt(_T("DwgNo"), sValue);
|
|
|
|
if (bScale==TRUE)
|
|
{
|
|
AcGeVector3d vt;
|
|
AcGePoint3d ptBase;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dScale,vt,ptBase,dAngle,FALSE,TRUE,TRUE,FALSE,TRUE);
|
|
AcDbObjectId id = NULL;
|
|
BOOL nOK = KTPIDUtility::GetPipeID(ptBase,id);
|
|
if (nOK == TRUE)
|
|
{
|
|
AcGePoint3d ptInsert = ptBase + vt*dScale/2;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dScale);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
double dNozzleScale=1;
|
|
double dNozzleRotate=0;
|
|
AcGePoint3d ptBase;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,ptBase,dNozzleScale,dNozzleRotate,dAngle,FALSE,TRUE,TRUE,TRUE,TRUE);
|
|
AcDbObjectId id = NULL;
|
|
BOOL nOK = KTPIDUtility::GetPipeID(ptBase,id);
|
|
if (nOK == TRUE)
|
|
{
|
|
AcGeVector3d vt;
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dNozzleRotate,AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
AcGePoint3d ptInsert = ptBase + vt*dNozzleScale/2;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dNozzleScale);
|
|
}
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
//Instrument Bubble
|
|
void PL_KTDiscBubble()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sContent = _T("12");
|
|
xDataMap.GetAt(DOC_PIDINSRDN, sContent);
|
|
|
|
CInstBubbleDlg dlg;
|
|
dlg.m_dR = _ttof(sContent);
|
|
GET_CACHE(%s%s%f%d%d, &dlg.m_sBContent, &dlg.m_sTContent, &dlg.m_dR, &dlg.m_iRadio, &dlg.m_nLineType);
|
|
CreateBubble(dlg, 1);
|
|
SET_CACHE(%s%s%f%d%d, dlg.m_sBContent, dlg.m_sTContent, dlg.m_dR, dlg.m_iRadio, dlg.m_nLineType);
|
|
return;
|
|
}
|
|
//Shared
|
|
void PL_KTSharedBubble()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sContent = _T("12");
|
|
xDataMap.GetAt(DOC_PIDINSRDN, sContent);
|
|
|
|
CInstBubbleDlg dlg;
|
|
dlg.m_dR = _ttof(sContent);
|
|
GET_CACHE(%s%s%f%d%d, &dlg.m_sBContent, &dlg.m_sTContent, &dlg.m_dR, &dlg.m_iRadio, &dlg.m_nLineType);
|
|
CreateBubble(dlg, 2);
|
|
SET_CACHE(%s%s%f%d%d, dlg.m_sBContent, dlg.m_sTContent, dlg.m_dR, dlg.m_iRadio, dlg.m_nLineType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTComputerBubble()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sContent = _T("12");
|
|
xDataMap.GetAt(DOC_PIDINSRDN, sContent);
|
|
|
|
CInstBubbleDlg dlg;
|
|
dlg.m_dR = _ttof(sContent);
|
|
GET_CACHE(%s%s%f%d%d, &dlg.m_sBContent, &dlg.m_sTContent, &dlg.m_dR, &dlg.m_iRadio, &dlg.m_nLineType);
|
|
CreateBubble(dlg, 3);
|
|
SET_CACHE(%s%s%f%d%d, dlg.m_sBContent, dlg.m_sTContent, dlg.m_dR, dlg.m_iRadio, dlg.m_nLineType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTLogicBubble()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sContent = _T("12");
|
|
xDataMap.GetAt(DOC_PIDINSRDN, sContent);
|
|
|
|
CInstBubbleDlg dlg;
|
|
dlg.m_dR = _ttof(sContent);
|
|
GET_CACHE(%s%s%f%d%d, &dlg.m_sBContent, &dlg.m_sTContent, &dlg.m_dR, &dlg.m_iRadio, &dlg.m_nLineType);
|
|
CreateBubble(dlg, 4);
|
|
SET_CACHE(%s%s%f%d%d, dlg.m_sBContent, dlg.m_sTContent, dlg.m_dR, dlg.m_iRadio, dlg.m_nLineType);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPilotBubble()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sContent = _T("12");
|
|
xDataMap.GetAt(DOC_PIDINSRDN, sContent);
|
|
|
|
CInstBubbleDlg dlg;
|
|
dlg.m_dR = _ttof(sContent);
|
|
GET_CACHE(%s%s%f%d%d, &dlg.m_sBContent, &dlg.m_sTContent, &dlg.m_dR, &dlg.m_iRadio, &dlg.m_nLineType);
|
|
CreateBubble(dlg, 5);
|
|
SET_CACHE(%s%s%f%d%d, dlg.m_sBContent, dlg.m_sTContent, dlg.m_dR, dlg.m_iRadio, dlg.m_nLineType);
|
|
return;
|
|
}
|
|
|
|
|
|
//PID Arrow
|
|
void PL_KTPIDSArrow()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
//read init data arrow Lenght
|
|
double dArrowLen = 2;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
xDataMap.GetAt(DOC_PIDSARROW, dArrowLen);
|
|
|
|
double dScale = 1.0;
|
|
CString sScale;
|
|
xDataMap.GetAt(DOC_SCALE, sScale); //出图比例
|
|
int nPos = sScale.Find(_T(':'));
|
|
if (nPos != -1)
|
|
{
|
|
dScale = _ttof(sScale.Mid(nPos + 1));
|
|
}
|
|
dArrowLen *= dScale;
|
|
|
|
CMapStringToString mapVarToValue;
|
|
CString sType=_T("PIDArrow");
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dArrowLen,FALSE,TRUE,TRUE,FALSE,TRUE);
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDMArrow()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
double dArrowLen = 3;
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
xDataMap.GetAt(DOC_PIDMARROW, dArrowLen);
|
|
|
|
double dScale = 1.0;
|
|
CString sScale;
|
|
xDataMap.GetAt(DOC_SCALE, sScale); //出图比例
|
|
int nPos = sScale.Find(_T(':'));
|
|
if (nPos != -1)
|
|
{
|
|
dScale = _ttof(sScale.Mid(nPos + 1));
|
|
}
|
|
dArrowLen *= dScale;
|
|
|
|
CMapStringToString mapVarToValue;
|
|
CString sType=_T("PIDArrow");
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dArrowLen,FALSE,TRUE,TRUE,FALSE,TRUE);
|
|
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDLArrow()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
double dArrowLen = 5;
|
|
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
xDataMap.GetAt(DOC_PIDBARROW, dArrowLen);
|
|
|
|
double dScale = 1.0;
|
|
CString sScale;
|
|
xDataMap.GetAt(DOC_SCALE, sScale); //出图比例
|
|
int nPos = sScale.Find(_T(':'));
|
|
if (nPos != -1)
|
|
{
|
|
dScale = _ttof(sScale.Mid(nPos + 1));
|
|
}
|
|
dArrowLen *= dScale;
|
|
|
|
CMapStringToString mapVarToValue;
|
|
CString sType=_T("PIDArrow");
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dArrowLen,FALSE,TRUE,TRUE,FALSE,TRUE);
|
|
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDOUTArrow()
|
|
{
|
|
double dArrowLen = 5;
|
|
CMapStringToString mapVarToValue;
|
|
CString sType=_T("PIDArrow-out");
|
|
|
|
//获取初始化数据
|
|
/*AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
double dScale = 1.0;
|
|
CString sScale;
|
|
xDataMap.GetAt(DOC_SCALE, sScale); //出图比例
|
|
int nPos = sScale.Find(_T(':'));
|
|
if (nPos != -1)
|
|
{
|
|
dScale = _ttof(sScale.Mid(nPos + 1));
|
|
}
|
|
dArrowLen *= dScale;*/
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,dArrowLen,FALSE,TRUE,TRUE,TRUE,TRUE);
|
|
|
|
return;
|
|
}
|
|
|
|
//自定义设备
|
|
void PL_KTPIDUserdefine()
|
|
{
|
|
CAcModuleResourceOverride myResources;
|
|
CEquAttribDlg CDlg;
|
|
int nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)//如果点了确定按钮
|
|
{
|
|
//
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PID-MaterialPoint");
|
|
sValue.Format(_T("%s"),CDlg.m_sTag);
|
|
mapVarToValue.SetAt(_T("Tag"), sValue);
|
|
|
|
sValue.Format(_T("%s"),CDlg.m_sName);
|
|
mapVarToValue.SetAt(_T("Name"), sValue);
|
|
|
|
sValue.Format(_T("%s"),CDlg.m_sType);
|
|
mapVarToValue.SetAt(_T("Type"), sValue);
|
|
|
|
sValue.Format(_T("%s"),CDlg.m_sDes);
|
|
mapVarToValue.SetAt(_T("Des"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
sValue.Format(_T("%s"),_T("自定义设备"));
|
|
mapVarToValue.SetAt(_T("Class"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,FALSE,FALSE,TRUE,FALSE,FALSE);
|
|
|
|
|
|
//选择图形实体并编组
|
|
ads_name adsSS;
|
|
ads_name adsobjName;
|
|
Adesk::Int32 lsslength;
|
|
AcDbObjectId objectID = AcDbObjectId::kNull;
|
|
AcDbObjectIdArray IdArray;
|
|
IdArray.setLogicalLength(0);
|
|
//构建选择集
|
|
if(acedSSGet(NULL,NULL,NULL,NULL,adsSS)!=RTNORM)
|
|
{
|
|
return;
|
|
}
|
|
acedSSLength(adsSS,&lsslength);
|
|
for (long i=0;i<lsslength;i++)
|
|
{
|
|
acedSSName(adsSS,i,adsobjName);
|
|
acdbGetObjectId(objectID,adsobjName);
|
|
IdArray.append(objectID);
|
|
}
|
|
acedSSFree(adsSS);
|
|
acedSSFree(adsobjName);
|
|
|
|
objectID=CKTCadUtility::CreateAcDbGroup(IdArray);
|
|
|
|
|
|
CreateDimText(CDlg.m_sTag,CDlg.m_sName,CDlg.m_sType,CDlg.m_sDes);
|
|
}
|
|
return;
|
|
}
|
|
//设备标注
|
|
void PL_KTPIDEquDim()
|
|
{
|
|
//选择
|
|
ads_name EntName;
|
|
AcDbObjectId idEnt = AcDbObjectId::kNull;
|
|
AcDbObjectId idGroup = AcDbObjectId::kNull;
|
|
AcDbObjectId idTemp = AcDbObjectId::kNull;
|
|
AcDbObjectId idTip = AcDbObjectId::kNull;
|
|
Acad::ErrorStatus es;
|
|
AcDbEntity* pEnt = NULL;
|
|
|
|
CString sContent=_T("");
|
|
CAcModuleResourceOverride myResources;
|
|
CEquAttribDlg CDlg;
|
|
|
|
AcGePoint3d ptBase;
|
|
int nRes=acedEntSel(_T("\n选择设备:"),EntName,asDblArray(ptBase));
|
|
if(nRes!=RTNORM)
|
|
{
|
|
return;
|
|
}
|
|
acdbGetObjectId(idEnt,EntName);
|
|
if (idEnt == AcDbObjectId::kNull)
|
|
{
|
|
acedAlert(_T("\n选择设备"));
|
|
return;
|
|
}
|
|
|
|
|
|
// 通过组ID获得物体中材料点的信息
|
|
idGroup = GetGroupId(idEnt);
|
|
if (idGroup !=AcDbObjectId::kNull)
|
|
{
|
|
AcDbGroup* pGroup = NULL;
|
|
acdbOpenObject(pGroup,idGroup,AcDb::kForRead);
|
|
AcDbGroupIterator* pIter = pGroup->newIterator();
|
|
AecDbObjXDataMap objXData;
|
|
for(;!pIter->done();pIter->next())
|
|
{
|
|
idTemp = pIter->objectId();
|
|
if (objXData.Read(idTemp,_T("KTParamPart")))
|
|
{
|
|
objXData.GetAt(_T("点类型"),sContent);
|
|
if (sContent.CompareNoCase(_T("材料点"))==0)
|
|
{
|
|
objXData.GetAt(_T("名称"),sContent);
|
|
if (sContent.CompareNoCase(_T("设备"))==0)
|
|
{
|
|
idTip = idTemp;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
delete pIter;
|
|
pGroup->close();
|
|
}
|
|
|
|
if (Acad::eOk == (es = acdbOpenAcDbEntity(pEnt, idTip, AcDb::kForRead)))
|
|
{
|
|
//验证扩展数据是管子中心线
|
|
AecDbObjXDataMap objXData;
|
|
if (objXData.Read(pEnt,_T("KTParamPart")))
|
|
{
|
|
objXData.GetAt(_T("设备位号"),sContent);
|
|
CDlg.m_sTag = sContent;
|
|
|
|
objXData.GetAt(_T("设备名称"),sContent);
|
|
CDlg.m_sName = sContent;
|
|
|
|
objXData.GetAt(_T("设备规格"),sContent);
|
|
CDlg.m_sType = sContent;
|
|
|
|
objXData.GetAt(_T("设备描述"),sContent);
|
|
CDlg.m_sDes = sContent;
|
|
|
|
}
|
|
pEnt->close();
|
|
}
|
|
|
|
nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
CreateDimText(CDlg.m_sTag,CDlg.m_sName,CDlg.m_sType,CDlg.m_sDes);
|
|
}
|
|
return;
|
|
}
|
|
//烟囱
|
|
void PL_KTPIDCHIMNEY()
|
|
{
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PID-Chimney");
|
|
|
|
sValue.Format(_T("%s"),_T("烟囱"));
|
|
mapVarToValue.SetAt(_T("Name"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,FALSE,TRUE,TRUE,TRUE,FALSE);
|
|
return;
|
|
}
|
|
//火炬
|
|
void PL_KTPIDTORCH()
|
|
{
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PID-Torch");
|
|
|
|
sValue.Format(_T("%s"),_T("火炬"));
|
|
mapVarToValue.SetAt(_T("Name"), sValue);
|
|
|
|
sValue.Format(_T("%s"),sType);
|
|
mapVarToValue.SetAt(_T("Code"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,FALSE,TRUE,TRUE,TRUE,FALSE);
|
|
return;
|
|
}
|
|
//管嘴标注
|
|
void PL_KTPIDNozzleDim()
|
|
{
|
|
//选择
|
|
ads_name EntName;
|
|
AcDbObjectId idEnt = AcDbObjectId::kNull;
|
|
AcDbObjectId idGroup = AcDbObjectId::kNull;
|
|
AcDbObjectId idTemp = AcDbObjectId::kNull;
|
|
AcDbObjectId idTip = AcDbObjectId::kNull;
|
|
Acad::ErrorStatus es;
|
|
AcDbEntity* pEnt = NULL;
|
|
|
|
CString sContent=_T("");
|
|
CAcModuleResourceOverride myResources;
|
|
CEquAttribDlg CDlg;
|
|
|
|
AcGePoint3d ptBase;
|
|
int nRes=acedEntSel(_T("\n选择设备:"),EntName,asDblArray(ptBase));
|
|
if(nRes!=RTNORM)
|
|
{
|
|
return;
|
|
}
|
|
acdbGetObjectId(idEnt,EntName);
|
|
if (idEnt == AcDbObjectId::kNull)
|
|
{
|
|
acedAlert(_T("\n选择设备"));
|
|
return;
|
|
}
|
|
|
|
|
|
// 通过组ID获得物体中材料点的信息
|
|
idGroup = GetGroupId(idEnt);
|
|
if (idGroup !=AcDbObjectId::kNull)
|
|
{
|
|
AcDbGroup* pGroup = NULL;
|
|
acdbOpenObject(pGroup,idGroup,AcDb::kForRead);
|
|
AcDbGroupIterator* pIter = pGroup->newIterator();
|
|
AecDbObjXDataMap objXData;
|
|
for(;!pIter->done();pIter->next())
|
|
{
|
|
idTemp = pIter->objectId();
|
|
if (objXData.Read(idTemp,_T("KTParamPart")))
|
|
{
|
|
objXData.GetAt(_T("点类型"),sContent);
|
|
if (sContent.CompareNoCase(_T("材料点"))==0)
|
|
{
|
|
objXData.GetAt(_T("名称"),sContent);
|
|
if (sContent.CompareNoCase(_T("设备"))==0)
|
|
{
|
|
idTip = idTemp;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
delete pIter;
|
|
pGroup->close();
|
|
}
|
|
|
|
if (Acad::eOk == (es = acdbOpenAcDbEntity(pEnt, idTip, AcDb::kForRead)))
|
|
{
|
|
//验证扩展数据是管子中心线
|
|
AecDbObjXDataMap objXData;
|
|
if (objXData.Read(pEnt,_T("KTParamPart")))
|
|
{
|
|
objXData.GetAt(_T("设备位号"),sContent);
|
|
}
|
|
pEnt->close();
|
|
}
|
|
if (sContent!=_T(""))
|
|
{
|
|
CreateDimText(sContent);
|
|
}
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDREPORT()
|
|
{
|
|
CAcModuleResourceOverride myResources;
|
|
CLineNumDlg Dlg;
|
|
|
|
CUIISQLiteServer sqlDb;
|
|
CString dbPath = FilePath::GetSysDir();
|
|
dbPath += _T("\\Plumbing.db");
|
|
if (!sqlDb.InitADOServer(dbPath))
|
|
{
|
|
acutPrintf(_T("\n系统数据库环境没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
Dlg.SetADOServer(&sqlDb);
|
|
int nRet = Dlg.DoModal();
|
|
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDSPEC1()
|
|
{
|
|
GetKTParamService()->InitService();
|
|
CAcModuleResourceOverride myResources;
|
|
CSpecJumpDlg CDlg;
|
|
int nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PIDSpecJump1");
|
|
sValue.Format(_T("%s"),CDlg.m_sSpecLeft);
|
|
mapVarToValue.SetAt(_T("SpecLeft"), sValue);
|
|
|
|
sValue.Format(_T("%s"),CDlg.m_sSpecRight);
|
|
mapVarToValue.SetAt(_T("SpecRight"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,FALSE,FALSE,TRUE,TRUE,TRUE);
|
|
|
|
}
|
|
return;
|
|
|
|
}
|
|
|
|
void PL_KTPIDSPEC2()
|
|
{
|
|
GetKTParamService()->InitService();
|
|
CAcModuleResourceOverride myResources;
|
|
CSpecJumpDlg CDlg;
|
|
int nRes = CDlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PIDSpecJump2");
|
|
sValue.Format(_T("%s"),CDlg.m_sSpecLeft);
|
|
mapVarToValue.SetAt(_T("SpecLeft"), sValue);
|
|
|
|
sValue.Format(_T("%s"),CDlg.m_sSpecRight);
|
|
mapVarToValue.SetAt(_T("SpecRight"), sValue);
|
|
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,FALSE,FALSE,TRUE,TRUE,TRUE);
|
|
|
|
}
|
|
return;
|
|
|
|
}
|
|
//Center Reducer
|
|
void PL_KTPIDCRD()
|
|
{
|
|
if (!CoreTools::hasCSSZ(true)) return;
|
|
CUIISQLiteServer sqlDb;
|
|
CString dbPath = FilePath::GetSysDir();
|
|
dbPath += _T("\\Plumbing.db");
|
|
if (!sqlDb.InitADOServer(dbPath))
|
|
{
|
|
acutPrintf(_T("\n系统数据库环境没有初始化!"));
|
|
return;
|
|
}
|
|
|
|
//获取初始化数据
|
|
AecDbObjXDataMap xDataMap;
|
|
PIDLineTools::ReSetPID(xDataMap);
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
|
|
{
|
|
acutPrintf(_T("\n系统没有初始化!"));
|
|
return;
|
|
}
|
|
CString sPro,sScale,sPipeW;
|
|
|
|
xDataMap.GetAt(DOC_PIDPROJECT,sPro);
|
|
xDataMap.GetAt(DOC_PIDMPIPE1W,sPipeW);
|
|
xDataMap.GetAt(DOC_VALVESCALE,sScale);
|
|
|
|
|
|
double dPipeW=_ttof(sPipeW);
|
|
double dL=_ttof(sScale);
|
|
int npipe=-1;
|
|
AcDbObjectId id;
|
|
|
|
AcGePoint3d ptGeOn1,pts,pte,ptEnd;
|
|
CString sLineno=_T("");
|
|
CString sDn=_T("");
|
|
CString sSpec=_T("");
|
|
|
|
int nresult = acedGetPoint(NULL,_T("\n选择插入点:"),asDblArray(ptGeOn1));
|
|
if (nresult != RTNORM) return;
|
|
|
|
BOOL nB = KTPIDUtility::FindPipeCen(ptGeOn1,id,npipe,dPipeW,pts,pte,sLineno,sDn,sSpec); //是管子dPipeW是线宽,npipe是单双线属性等
|
|
if (nB == FALSE)
|
|
{
|
|
acutPrintf(_T("未获得管道信息!"));
|
|
return;
|
|
}
|
|
|
|
CAcModuleResourceOverride myResources;
|
|
CReduerDlg dlg;
|
|
dlg.m_nDn = _ttoi(sDn);
|
|
dlg.m_sSpec = sSpec;
|
|
dlg.m_sPipeNo = sLineno;
|
|
dlg.m_dScale = _ttof(sScale);
|
|
dlg.m_pADOServer = &sqlDb;
|
|
|
|
int nRes = dlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
int nFlag = 0;
|
|
nFlag = dlg.m_nFlag;
|
|
CString sType =_T("");
|
|
CString sFittingType =_T("");
|
|
|
|
switch(dlg.m_nFlag)
|
|
{
|
|
case 0:
|
|
sType=_T("PIDCRD");
|
|
sFittingType =_T("同心大小头");
|
|
break;
|
|
case 1:
|
|
sType=_T("PIDURD");
|
|
sFittingType =_T("底平偏心大小头");
|
|
break;
|
|
case 2:
|
|
sType=_T("PIDDRD");
|
|
sFittingType =_T("顶平偏心大小头");
|
|
break;
|
|
case 3:
|
|
sType=_T("PIDSRD");
|
|
sFittingType =_T("同心大小头");
|
|
break;
|
|
}
|
|
|
|
CString sDnStart = _T("");
|
|
CString sDnEnd = _T("");
|
|
sDnStart = dlg.sDnStart;
|
|
sDnEnd = dlg.sDnEnd;
|
|
double dScale = 1;
|
|
dScale = dlg.m_dScale;
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
mapVarToValue.SetAt(_T("Spec"), dlg.m_sSpec);
|
|
mapVarToValue.SetAt(_T("Line"), dlg.m_sPipeNo);
|
|
mapVarToValue.SetAt(_T("Tag"), _T("管件"));
|
|
mapVarToValue.SetAt(_T("Type"),_T("异径管件"));
|
|
mapVarToValue.SetAt(_T("Name"), sFittingType);
|
|
mapVarToValue.SetAt(_T("DNS"),sDnStart);
|
|
mapVarToValue.SetAt(_T("DNE"),sDnEnd);
|
|
mapVarToValue.SetAt(_T("Scale"),sScale);
|
|
AcGeVector3d vt;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,ptGeOn1,vt,dScale,FALSE,TRUE,FALSE,FALSE,TRUE);
|
|
AcGePoint3d ptInsert = ptGeOn1 + vt*dScale/2;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dScale);
|
|
|
|
//修改后面的元件的公称直径
|
|
AcDbObjectIdArray arIDs;
|
|
ads_name ent;
|
|
ads_name ss;
|
|
int nFount = -1;
|
|
while(TRUE)
|
|
{
|
|
nRes = acedSSGet(NULL, NULL, NULL, NULL, ss);
|
|
if (nRes == RTNONE )
|
|
{
|
|
break;
|
|
}
|
|
|
|
if (nRes == RTCAN)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (nRes == RTNORM)
|
|
{
|
|
Adesk::Int32 lLen = 0;
|
|
acedSSLength(ss,&lLen);
|
|
for (int i = 0;i < lLen;i++)
|
|
{
|
|
acedSSName(ss,i,ent);
|
|
if ( Acad::eOk == acdbGetObjectId(id,ent))
|
|
{
|
|
if (!arIDs.find(id,nFount))
|
|
{
|
|
arIDs.append(id);
|
|
}
|
|
}
|
|
}
|
|
acedSSFree(ss);
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nSize = 0;
|
|
nSize = arIDs.length();
|
|
AecDbObjXDataMap objXData;
|
|
|
|
if (nSize>0)
|
|
{
|
|
for (int i =0;i<nSize;i++)
|
|
{
|
|
id = arIDs.at(i);
|
|
if (objXData.Read(id,PIDPIPE_APP))
|
|
{
|
|
objXData.SetAt(PID_PIPE_DN,_ttoi(sDnEnd));
|
|
objXData.Write(id,PIDPIPE_APP);
|
|
}
|
|
if (objXData.Read(id,KTPARAMPART))
|
|
{
|
|
objXData.SetAt(_T("公称直径"),_ttoi(sDnEnd));
|
|
objXData.Write(id,KTPARAMPART);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
void PL_KTPIDINS()
|
|
{
|
|
|
|
//将数据传入生成图形模块
|
|
CMapStringToString mapVarToValue;
|
|
CString sValue=_T("");
|
|
CString sType=_T("PIDINS");
|
|
double dNozzleScale=1;
|
|
double dNozzleRotate=0;
|
|
AcGePoint3d ptBase;
|
|
double dAngle = 0;
|
|
int iResult = KTCreateEntity(mapVarToValue,sType,ptBase,dNozzleScale,dNozzleRotate,dAngle,FALSE,TRUE,TRUE,TRUE,TRUE);
|
|
AcDbObjectId id = NULL;
|
|
BOOL nOK = KTPIDUtility::GetPipeID(ptBase,id);
|
|
if (nOK == TRUE)
|
|
{
|
|
AcGeVector3d vt;
|
|
vt = AcGeVector3d::kXAxis;
|
|
vt.rotateBy(dNozzleRotate,AcGeVector3d::kZAxis);
|
|
vt.normalize();
|
|
AcGePoint3d ptInsert = ptBase;
|
|
KTPIDUtility::BreakPIDPipe(id,ptInsert,dNozzleScale);
|
|
}
|
|
return;
|
|
|
|
}
|
|
|
|
void PL_KTPIDLINENOMO()
|
|
{
|
|
CUIISQLiteServer sqlDb;
|
|
CString dbPath = FilePath::GetSysDir();
|
|
dbPath += _T("\\Plumbing.db");
|
|
if (!sqlDb.InitADOServer(dbPath))
|
|
{
|
|
acutPrintf(_T("\n系统数据库环境没有初始化!"));
|
|
return;
|
|
}
|
|
CAcModuleResourceOverride myResource;
|
|
KTPipeLineNoDlg dlg;
|
|
dlg.m_pADOServer = &sqlDb;
|
|
int nRes = dlg.DoModal();
|
|
if(nRes == IDOK)
|
|
{
|
|
CString sLineNo = dlg.m_sPipeLineNo;
|
|
CString sMedia = dlg.m_sMedia;
|
|
CString sFullLineNo = _T("");
|
|
sFullLineNo.Format(_T("%s-%s"),sMedia,sLineNo);
|
|
|
|
//1.选择实体
|
|
ads_name ss;
|
|
ads_name ent;
|
|
int nFoundAt = -1;
|
|
Adesk::Int32 lLen = 0l;
|
|
AcDbObjectId id;
|
|
AcDbObjectIdArray arIDs;
|
|
|
|
struct resbuf* pRb = NULL;
|
|
pRb = acutBuildList(RTDXF0,_T("LINE,ARC,LWPOLYLINE,POINT"),NULL);
|
|
while(TRUE)
|
|
{
|
|
nRes = acedSSGet(_T("_:S"), NULL, NULL, pRb, ss);
|
|
if (nRes == RTNORM)
|
|
{
|
|
acedSSLength(ss,&lLen);
|
|
for (int i = 0;i < lLen;i++)
|
|
{
|
|
acedSSName(ss,i,ent);
|
|
if ( Acad::eOk == acdbGetObjectId(id,ent))
|
|
{
|
|
if (!arIDs.find(id,nFoundAt))
|
|
{
|
|
arIDs.append(id);
|
|
}
|
|
}
|
|
}
|
|
acedSSFree(ss);
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if (arIDs.length() == 0) return;
|
|
|
|
//2.更改管号
|
|
CString sOldLineNo;
|
|
|
|
AcDbEntity* pEnt = NULL;
|
|
for (int i = 0;i < arIDs.length();i++)
|
|
{
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt,arIDs.at(i),AcDb::kForWrite))
|
|
{
|
|
AecDbObjXDataMap xDataMap;
|
|
if (xDataMap.Read(pEnt,PIDPIPE_APP)) //是管线
|
|
{
|
|
if (xDataMap.GetAt(PIPE_LINENO,sOldLineNo))
|
|
{
|
|
//1.更改顺序号,介质,管号,spec
|
|
xDataMap.SetAt(PID_PIPE_NO,sLineNo);
|
|
xDataMap.SetAt(PID_PIPE_LINENO,sFullLineNo);
|
|
xDataMap.SetAt(PID_PIPE_MEDIA,sMedia);
|
|
xDataMap.Write(pEnt,PIDPIPE_APP);
|
|
}
|
|
}
|
|
else if (xDataMap.Read(pEnt,KTPARAMPART))//材料点
|
|
{
|
|
if (xDataMap.GetAt(PID_LINENO,sOldLineNo))
|
|
{
|
|
//1.更改顺序号,介质,管号,spec
|
|
xDataMap.SetAt(PID_LINENO,sFullLineNo);
|
|
xDataMap.Write(pEnt,KTPARAMPART);
|
|
}
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
void PL_GYBBCmd()
|
|
{
|
|
CString sMtoexe, sMtoPath;
|
|
sMtoPath = FilePath::GetSysDir();
|
|
sMtoexe = sMtoPath + _T("\\KTBOM.exe");
|
|
::ShellExecute(acedGetAcadFrame()->m_hWnd, _T("open"), sMtoexe, NULL, sMtoPath, SW_SHOWNORMAL);
|
|
} |