769 lines
31 KiB
C++
769 lines
31 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <set>
|
|
#include "aecdbwall.h"
|
|
|
|
#pragma region define id
|
|
|
|
|
|
#define ID_CONTEXT_MENU_VIEW_TOP 130
|
|
#define ID_CONTEXT_MENU_VIEW_BOTTOM 131
|
|
#define ID_CONTEXT_MENU_VIEW_LEFT 132
|
|
#define ID_CONTEXT_MENU_VIEW_RIGHT 133
|
|
#define ID_CONTEXT_MENU_VIEW_FRONT 134
|
|
#define ID_CONTEXT_MENU_VIEW_BACK 135
|
|
#define ID_CONTEXT_MENU_VIEW_SWISO 136
|
|
#define ID_CONTEXT_MENU_VIEW_SEISO 137
|
|
#define ID_CONTEXT_MENU_VIEW_NEISO 138
|
|
#define ID_CONTEXT_MENU_VIEW_NWISO 139
|
|
#define ID_CONTEXT_MENU_ORBIT_3D 140
|
|
#define ID_CONTEXT_MENU_ORBIT_3DF 141
|
|
#define ID_CONTEXT_MENU_ORBIT_3DC 142
|
|
#define ID_CONTEXT_MENU_VSCURRENT_2 143
|
|
#define ID_CONTEXT_MENU_VSCURRENT_W 144
|
|
#define ID_CONTEXT_MENU_VSCURRENT_H 145
|
|
#define ID_CONTEXT_MENU_VSCURRENT_R 146
|
|
#define ID_CONTEXT_MENU_VSCURRENT_C 147
|
|
#define ID_CONTEXT_MENU_HIDE_SHOWALL 149
|
|
#define ID_CONTEXT_MENU_PL_DKBH 150
|
|
#define ID_CONTEXT_MENU_EXPORT_SWTT 151
|
|
|
|
|
|
static int cmd_start_id = 151;
|
|
#pragma endregion
|
|
|
|
#pragma region UIMenuItem
|
|
|
|
#define CONDI_PARAMS const AcDbObjectIdArray &ar, const AcGePoint3d &pt = AcGePoint3d::kOrigin
|
|
#define CONDI_PARAMS_IMP const AcDbObjectIdArray &ar, const AcGePoint3d &pt
|
|
|
|
/*
|
|
如何判断一个菜单是否显示?
|
|
鼠标右键是,反应器会把当前选择的实体id通过AcDbObjectArray传递过来
|
|
通过这些id可以判断菜单能否被显示.
|
|
可以通过一个函数,或者一个dxf过滤表+实体个数 两种方式来判断,
|
|
最省事的方法是直接放到选择集,让命令自己判断,但是这样会造成菜单数量爆炸.
|
|
|
|
宏使用说明
|
|
1.FC_CONDI_ 开头,说明用函数做过滤器,来判断注册的菜单是否显示,使用的话,
|
|
需要传入一个函数,用来判断菜单使用情况.
|
|
|
|
2.FT_CONDI_ 开头,说明用DXF做过滤器,来判断注册的菜单是否显示,使用的话,
|
|
需要传入dxf字符串,和实体个数,用来判断菜单使用情况.
|
|
实体个数如果小于0,说明需要多个实体,如果是-1,说明需要多个但至少要有1个
|
|
如果是-2,说明需要多个但至少要有2个
|
|
|
|
3._SIM,简单命名模式,真实命令名称与注册类名称一致.
|
|
|
|
4._FUL,全命名模式,适用于真实命令与注册类名称不一致的情况,参看"插入板" "设备标高" 等命令.
|
|
|
|
5._SENDER,只是发送命令,不会向命令传递任何数据.
|
|
|
|
6.FT_CONDI_N_ENT,这个宏注册的类只有在N个符合DXF表的情况下菜单才会显示,
|
|
并且发送命令是,会把N个实体,一个一个的组成resbuf传给命令,参看"合并管线"
|
|
|
|
7.FT_CONDI_PT_INS,这个宏负责在右键弹出菜单的点上插入一些实体,
|
|
会把这个点以resbuf的方式传给命令,参看端加弯头
|
|
|
|
8._EXE,表示需要重载 executeCommand 函数
|
|
|
|
9._COD,表示需要重载 eanbleCondition 函数
|
|
|
|
*/
|
|
|
|
class UIMenuItem
|
|
{
|
|
public:
|
|
enum Category
|
|
{
|
|
eNone = 0,
|
|
// 系统级别
|
|
eSys,
|
|
// 生成实体
|
|
eCr,
|
|
// 管线生成类
|
|
eCrPipe,
|
|
// 土建生成类
|
|
eCrStut,
|
|
// 暖通生成类
|
|
eCrHVAC,
|
|
// 电气生成类
|
|
eCrElec,
|
|
// 生成设备
|
|
eCrEqui,
|
|
// 管线设计
|
|
eDsPipe,
|
|
// 土建设计
|
|
eDsStut,
|
|
// 设备设计
|
|
eDsEqui,
|
|
// 暖通设计
|
|
eDsHVAC,
|
|
// 电气设计
|
|
eDsElec,
|
|
// 管件插入
|
|
eInsFitting,
|
|
// 插入参数阀门
|
|
eInsParamValve,
|
|
// 插入自定义阀门
|
|
eInsCustomValve,
|
|
// 土建标注
|
|
eDimStut,
|
|
// 系统标注
|
|
eDimSys,
|
|
// 视图操作
|
|
eOpView,
|
|
// 数据中心
|
|
eExport,
|
|
};
|
|
public:
|
|
UIMenuItem()
|
|
:m_iWeight(0)
|
|
, m_iCategory(eNone)
|
|
, m_sCommand(_T(""))
|
|
, m_idCommand(-1)
|
|
, m_sUIName(_T(""))
|
|
, m_bUsed(true)
|
|
, m_bUseSingleEntity(true) { }
|
|
|
|
UIMenuItem(const UINT_PTR &id)
|
|
:m_iWeight(0)
|
|
, m_iCategory(eNone)
|
|
, m_sCommand(_T(""))
|
|
, m_idCommand(id)
|
|
, m_sUIName(_T(""))
|
|
, m_bUsed(true)
|
|
, m_bUseSingleEntity(true) { }
|
|
|
|
UIMenuItem(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &weight
|
|
, const Category &cat )
|
|
:m_iWeight(weight)
|
|
, m_iCategory(cat)
|
|
, m_idCommand(id)
|
|
, m_sCommand(cmd)
|
|
, m_sUIName(name)
|
|
, m_bUsed(true)
|
|
, m_bUseSingleEntity(true) { }
|
|
|
|
UIMenuItem(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &weight
|
|
, const Category &cat
|
|
, const bool & bSingle)
|
|
:m_iWeight(weight)
|
|
, m_iCategory(cat)
|
|
, m_idCommand(id)
|
|
, m_sCommand(cmd)
|
|
, m_sUIName(name)
|
|
, m_bUsed(true)
|
|
, m_bUseSingleEntity(bSingle) { }
|
|
|
|
virtual ~UIMenuItem() {}
|
|
|
|
static CString getClassName(UIMenuItem *pItem);
|
|
|
|
static bool compareItems(const UIMenuItem *a, const UIMenuItem *b);
|
|
|
|
static bool compareItemsByCategory(const UIMenuItem *a, const UIMenuItem *b);
|
|
|
|
struct compareItemsById
|
|
{
|
|
bool operator()(const UIMenuItem *a, const UIMenuItem *b) const
|
|
{
|
|
if (!a || !b) return false;
|
|
return a->m_idCommand < b->m_idCommand;
|
|
}
|
|
};
|
|
|
|
static CString getCategoryName(const Category &cat);
|
|
static void BuildPickFist();
|
|
|
|
virtual bool eanbleCondition(const AcDbObjectIdArray &ar, const AcGePoint3d &pt);
|
|
virtual resbuf* executeCommand() const;
|
|
void addToMenu(const HMENU &hMenu, const int &idx) const;
|
|
|
|
template <typename T>
|
|
static bool isKindOf(const AcDbObjectId &id)
|
|
{
|
|
if (!id.isValid()) return false;
|
|
AcRxClass *pIdClass = id.objectClass();
|
|
if (pIdClass == NULL) return false;
|
|
AcRxClass *pTargetClass = T::desc();
|
|
return pIdClass->isDerivedFrom(pTargetClass);
|
|
}
|
|
|
|
template <typename T>
|
|
static bool isSameOf(const AcDbObjectId &id)
|
|
{
|
|
if (!id.isValid()) return false;
|
|
AcRxClass *pIdClass = id.objectClass();
|
|
if (pIdClass == NULL) return false;
|
|
AcRxClass *pTargetClass = T::desc();
|
|
return pIdClass == pTargetClass;
|
|
}
|
|
|
|
template <typename T>
|
|
static bool isKindOf(CONDI_PARAMS)
|
|
{
|
|
for (int i(0); i < ar.length(); ++i)
|
|
{
|
|
if (isKindOf<T>(ar[i]) == false)
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// 实体数量必须大于1
|
|
template <typename T>
|
|
static bool isMoreKindOf(CONDI_PARAMS)
|
|
{
|
|
if (ar.length() < 2) return false;
|
|
for (int i(0); i < ar.length(); ++i)
|
|
{
|
|
if (isKindOf<T>(ar[i]) == false)
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
template <typename T>
|
|
static bool isOneAndKindOf(CONDI_PARAMS)
|
|
{
|
|
return (ar.length() == 1 && isKindOf<T>(ar.first()));
|
|
}
|
|
|
|
template <typename T1, typename T2>
|
|
static bool isOneAndKindOf(CONDI_PARAMS)
|
|
{
|
|
return ar.length() == 1
|
|
&& (isKindOf<T1>(ar.first())
|
|
|| isKindOf<T2>(ar.first()));
|
|
}
|
|
|
|
static bool idMatchFilter(const AcDbObjectId &id, LPCTSTR sFilter);
|
|
|
|
// 实体的dxf是否满足 Filter
|
|
static bool isFilterMacth(CONDI_PARAMS_IMP, LPCTSTR sFilter, const int &N);
|
|
|
|
// 是否是一个上华实体
|
|
static bool isOneSHEntity(CONDI_PARAMS);
|
|
|
|
// 是否全是上华实体
|
|
static bool isAllSHEntity(CONDI_PARAMS);
|
|
|
|
// 是否是一个闭合曲线
|
|
static bool isClosedPLine(CONDI_PARAMS);
|
|
|
|
// 能否快速修改
|
|
static bool canQModify(CONDI_PARAMS);
|
|
|
|
// 是否是一个阀门
|
|
static bool isOneValve(CONDI_PARAMS);
|
|
|
|
static bool isFlange(CONDI_PARAMS);
|
|
|
|
static bool isVertPipe(CONDI_PARAMS);
|
|
|
|
// 设备但不是阀门
|
|
static bool isEquButNoValve(CONDI_PARAMS);
|
|
|
|
// 符合 底板,楼板,盖板
|
|
static bool isSlab(CONDI_PARAMS);
|
|
|
|
// 符合斜底板
|
|
static bool isXSlab(CONDI_PARAMS);
|
|
|
|
// 是否从AecMInterfaces派生?
|
|
static bool isAecMInterfaces(const AcDbObjectId &id);
|
|
|
|
public:
|
|
// 命令名称
|
|
CString m_sCommand;
|
|
|
|
// 菜单名称
|
|
CString m_sUIName;
|
|
|
|
// 权重
|
|
int m_iWeight;
|
|
|
|
// 分类
|
|
Category m_iCategory;
|
|
|
|
// 选择的实体 (目前可记录可不记录,因为都在选择集里面)
|
|
// 所有的派生类公用一个即可,节省内存
|
|
static AcDbObjectIdArray m_arIds;
|
|
|
|
// 右键点击时的点
|
|
AcGePoint3d m_ptPick;
|
|
|
|
// 菜单ID
|
|
UINT_PTR m_idCommand;
|
|
|
|
/*
|
|
m_bUseSingleEntity 说明命令需要操作多个实体,还是单个实体
|
|
这个变量决定了发送命令的方式
|
|
如果为真,则调用命令时,清空选择集, 把实体以 RTENAME 的方式通过 acedCmd 发送
|
|
如果为假,直接将实体放入PICKFIRST,然后直接调用命令,真是命令会读取PICKFIRST来获取实体
|
|
默认是true,因为大多命令只需要操作一个实体
|
|
*/
|
|
bool m_bUseSingleEntity;
|
|
|
|
// 是否使用
|
|
bool m_bUsed;
|
|
};
|
|
|
|
class Filter_Condition: public UIMenuItem
|
|
{
|
|
public:
|
|
typedef bool (*FilterFunc)(const AcDbObjectIdArray &
|
|
, const AcGePoint3d &
|
|
, LPCTSTR
|
|
, const int&);
|
|
|
|
FilterFunc m_pFunc;
|
|
CString m_sFilter; // 将过滤字符串作为成员变量存起来!
|
|
int m_N; // 需要实体的数量
|
|
public:
|
|
Filter_Condition(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat
|
|
, FilterFunc func
|
|
, LPCTSTR pszFilter
|
|
, const int &N )
|
|
: UIMenuItem(cmd, name, id, idx, cat)
|
|
, m_pFunc(func)
|
|
, m_sFilter(pszFilter)
|
|
, m_N(N)
|
|
{
|
|
if (N < 0) // 命令需要多个实体
|
|
m_bUseSingleEntity = false;
|
|
}
|
|
|
|
virtual bool eanbleCondition(const AcDbObjectIdArray &ar, const AcGePoint3d &pt)
|
|
{
|
|
m_ptPick = pt;
|
|
if (m_pFunc) return m_pFunc(ar, pt, m_sFilter, m_N);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
class Filter_Condition_N_ENT: public Filter_Condition
|
|
{
|
|
public:
|
|
Filter_Condition_N_ENT(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat
|
|
, FilterFunc func
|
|
, LPCTSTR pszFilter
|
|
, const int &N
|
|
): Filter_Condition(cmd, name, id, idx, cat, func, pszFilter, N) { }
|
|
|
|
virtual resbuf* executeCommand() const;
|
|
};
|
|
|
|
class Filter_Condition_Sender: public Filter_Condition
|
|
{
|
|
public:
|
|
Filter_Condition_Sender(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat
|
|
, FilterFunc func
|
|
, LPCTSTR pszFilter
|
|
, const int &N
|
|
): Filter_Condition(cmd, name, id, idx, cat, func, pszFilter, N) { }
|
|
|
|
virtual resbuf* executeCommand() const;
|
|
};
|
|
|
|
// 这个类处理接口点插入
|
|
// 判断选择的实体是不是从AecMInterfaces派生类,或AecDbXEquipment类
|
|
// 且数量是1,并且pt在其接口点附近
|
|
// 如果以上条件满足,则弹出菜单
|
|
class Fitler_Condition_Interface_Ins: public Filter_Condition
|
|
{
|
|
public:
|
|
Fitler_Condition_Interface_Ins(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat
|
|
, LPCTSTR pszFilter )
|
|
: Filter_Condition(cmd, name, id, idx, cat, UIMenuItem::isFilterMacth, pszFilter, 1) { }
|
|
|
|
virtual resbuf* executeCommand() const;
|
|
virtual bool eanbleCondition(const AcDbObjectIdArray &ar, const AcGePoint3d &pt);
|
|
};
|
|
|
|
template <bool(func)(const AcDbObjectIdArray &, const AcGePoint3d &)>
|
|
class Func_Condition: public UIMenuItem
|
|
{
|
|
public:
|
|
Func_Condition(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat)
|
|
: UIMenuItem(cmd, name, id, idx, cat) { }
|
|
|
|
virtual bool eanbleCondition(const AcDbObjectIdArray &ar, const AcGePoint3d &pt)
|
|
{
|
|
m_ptPick = pt;
|
|
return func(ar, pt);
|
|
}
|
|
};
|
|
|
|
template <bool(func)(const AcDbObjectIdArray &, const AcGePoint3d &)>
|
|
class Func_Condition_Sender: public Func_Condition<func>
|
|
{
|
|
public:
|
|
Func_Condition_Sender(LPCTSTR cmd
|
|
, LPCTSTR name
|
|
, const UINT_PTR &id
|
|
, const int &idx
|
|
, const UIMenuItem::Category &cat)
|
|
: Func_Condition<func>(cmd, name, id, idx, cat) { }
|
|
|
|
virtual resbuf *executeCommand() const
|
|
{
|
|
acDocManager->sendStringToExecute(acDocManager->curDocument(), this->m_sCommand + _T(" "), false, false, false);
|
|
return NULL;
|
|
}
|
|
};
|
|
|
|
#define FC_CONDI_SENDER_SIM(cname, mname, weight, category, func)\
|
|
class cname: public Func_Condition_Sender<UIMenuItem::func>\
|
|
{\
|
|
public:\
|
|
cname():Func_Condition_Sender<UIMenuItem::func>(L#cname, mname, cmd_start_id++, weight, category) {}\
|
|
}
|
|
|
|
#define FT_CONDI_SENDER_SIM(cname, mname, weight, category, filter, n)\
|
|
class cname: public Filter_Condition_Sender\
|
|
{\
|
|
public:\
|
|
cname():Filter_Condition_Sender(L#cname, mname, cmd_start_id++, weight, category, UIMenuItem::isFilterMacth, filter, n) {}\
|
|
}
|
|
|
|
#define FT_CONDI_SIM(cname, mname, weight, category, filter, n)\
|
|
class cname: public Filter_Condition\
|
|
{\
|
|
public:\
|
|
cname():Filter_Condition(L#cname, mname, cmd_start_id++, weight, category, UIMenuItem::isFilterMacth, filter, n) {}\
|
|
}
|
|
|
|
#define FT_CONDI_FUL(classname, cmdname, mname, weight, category, filter, n)\
|
|
class classname: public Filter_Condition\
|
|
{\
|
|
public:\
|
|
classname():Filter_Condition(L#cmdname, mname, cmd_start_id++, weight, category, UIMenuItem::isFilterMacth, filter, n) {}\
|
|
}
|
|
|
|
#define FT_CONDI_N_ENT(cname, mname, weight, category, filter, n)\
|
|
class cname: public Filter_Condition_N_ENT\
|
|
{\
|
|
public:\
|
|
cname():Filter_Condition_N_ENT(L#cname, mname, cmd_start_id++, weight, category, UIMenuItem::isFilterMacth, filter, n) {}\
|
|
}
|
|
|
|
#define FT_COND_INTE_INS(cname, mname, weight, category, filter)\
|
|
class cname: public Fitler_Condition_Interface_Ins\
|
|
{\
|
|
public:\
|
|
cname():Fitler_Condition_Interface_Ins(L#cname, mname, cmd_start_id++, weight, category, filter) {}\
|
|
}
|
|
|
|
#define FT_CONDI_FUL_EXE(classname, cmdname, mname, weight, category, filter, n)\
|
|
class classname: public Filter_Condition\
|
|
{\
|
|
public:\
|
|
classname():Filter_Condition(L#cmdname, mname, cmd_start_id++, weight, category, UIMenuItem::isFilterMacth, filter, n) {}\
|
|
virtual resbuf* executeCommand() const;\
|
|
}
|
|
|
|
#define FC_CONDI_FUL(classname, cmdname, mname, weight, category, func)\
|
|
class classname: public Func_Condition<UIMenuItem::func>\
|
|
{\
|
|
public:\
|
|
classname():Func_Condition<UIMenuItem::func>(L#cmdname, mname, cmd_start_id++, weight, category) {}\
|
|
}
|
|
|
|
#define FC_CONDI_SIM(cname, mname, weight, category, func)\
|
|
class cname: public Func_Condition<UIMenuItem::func>\
|
|
{\
|
|
public:\
|
|
cname():Func_Condition<UIMenuItem::func>(L#cname, mname, cmd_start_id++, weight, category) {}\
|
|
}
|
|
|
|
#define DEF_UIITEM_FUL_EXE_COD(classname, cmdname, mname, weight, category) \
|
|
class classname: public UIMenuItem\
|
|
{\
|
|
public:\
|
|
classname():UIMenuItem(L#cmdname, mname, cmd_start_id++, weight, category) {}\
|
|
virtual bool eanbleCondition(const AcDbObjectIdArray &ar, const AcGePoint3d &pt);\
|
|
virtual resbuf* executeCommand() const;\
|
|
}
|
|
|
|
#define FC_CONDI_FUL_EXE(classname, cmdname, mname, weight, category, func) \
|
|
class classname: public Func_Condition<UIMenuItem::func>\
|
|
{\
|
|
public:\
|
|
classname():Func_Condition<UIMenuItem::func>(L#cmdname, mname, cmd_start_id++, weight, category) {}\
|
|
virtual resbuf* executeCommand() const;\
|
|
}
|
|
|
|
FT_CONDI_SIM(CO_COPY, _T("平面复制"), 0, eSys, _T("*"), -1);
|
|
FT_CONDI_SIM(CO_MOVE, _T("平面移动"), 1, eSys, _T("*"), -1);
|
|
FC_CONDI_SIM(CO_KSXZ, _T("选择同类"), 2, eSys, isOneSHEntity);
|
|
FT_CONDI_SIM(CO_KSXG, _T("统一修改"), 3, eSys, _T("AEC*"), -1);
|
|
FT_CONDI_SIM(CO_ALIGN, _T("实体对齐"), 3, eSys, _T("AEC*"), -1);
|
|
FT_CONDI_SIM(CO_EXPORT, _T("导出Revit"), 3, eExport, _T("AEC*"), -1);
|
|
FT_CONDI_SIM(PL_DTYC, _T("全部隐藏"), 0, eOpView, _T("*"), -1);
|
|
FT_CONDI_SIM(PL_YCQT, _T("隐藏其它"), 1, eOpView, _T("*"), -1);
|
|
FT_CONDI_SIM(PL_TMXS, _T("透明显示"), 2, eOpView, _T("*"), -1);
|
|
FT_CONDI_SIM(PL_GYST, _T("工艺视图"), 3, eOpView, _T("AEC_DBWALL,AEC_DBCOLMN"), -2);
|
|
FT_CONDI_SIM(PL_JGST, _T("结构视图"), 4, eOpView, _T("AEC_DBWALL,AEC_DBCOLMN"), -2);
|
|
FC_CONDI_SIM(PL_DTYG, _T("造型设计"), 0, eDsStut, isOneAndKindOf<AecDbBDPipeBase>);
|
|
FC_CONDI_SIM(PL_QMPS, _T("墙面平视"), 1, eDsStut, isOneAndKindOf<AecDbXWall>);
|
|
FT_CONDI_SIM(PL_TYQG, _T("墙柱等高"), 2, eDsStut, _T("AEC_DBWALL,AEC_DBCOLMN"), -2);
|
|
FT_CONDI_SIM(PL_QTDD, _T("墙体打断"), 3, eDsStut, _T("AEC_DBWALL,AEC_DBEXTENDENT"), 1);
|
|
FT_CONDI_SIM(PL_PLGL, _T("批量改梁"), 4, eDsStut, _T("AEC_DBBEAM"), 1);
|
|
FT_CONDI_SIM(PL_JXDQ, _T("基线对齐"), 5, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_BXDQ, _T("边线对齐"), 6, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_CBKD, _T("墙体开洞"), 7, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_CDKD, _T("平板开洞"), 8, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_YXKD, _T("异形开洞"), 9, eDsStut, _T("AEC_BDPIPE"), 1);
|
|
FT_CONDI_SIM(PL_ZLKD, _T("阵列开洞"), 10, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_YXCG, _T("穿管开洞"), 11, eDsStut, _T("AEC_EWPIPE,AEC_DBCABTRY,AEC_DBDUCT"), 1);
|
|
FT_CONDI_SIM(PL_DGKD, _T("多管开洞"), 12, eDsStut, _T("AEC_EWPIPE,AEC_DBDUCT,AEC_DBCABTRY"), -2);
|
|
FT_CONDI_SIM(PL_JFZJ, _T("添加方井"), 13, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_JFYJ, _T("加方圆井"), 14, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_JYZJ, _T("添加圆井"), 15, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_JYXJ, _T("加异形井"), 16, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_JJSK, _T("加集水坑"), 17, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_CDST, _T("添加素砼"), 18, eDsStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_QTDJ, _T("墙体倒角"), 19, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_QTDY, _T("墙体倒圆"), 21, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_JBWC, _T("加保温层"), 22, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_FFTM, _T("防腐涂面"), 23, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_WQTP, _T("外墙贴皮"), 24, eDsStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CRJZ, _T("插入角柱"), 0, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_DXCH, _T("带型窗户"), 1, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_ZJCH, _T("转角窗户"), 2, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_JLHC, _T("加老虎窗"), 3, eCrStut, _T("AEC_DBXROOF"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_FZYT, _T("放置阳台"), 4, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_FZTJ, _T("放置台阶"), 5, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_DXBQ, _T("单线变墙"), 6, eCrStut, _T("LINE,LWPOLYLINE,ARC,CIRCLE"), 1);
|
|
FT_CONDI_SIM(PL_GZZZ, _T("构造柱子"), 7, eCrStut, _T("LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_ZZDZ, _T("柱子底座"), 8, eCrStut, _T("AEC_DBCOLMN"), 1);
|
|
FC_CONDI_SIM(PL_HZDB, _T("底 板"), 9, eCrStut, isSlab);
|
|
FC_CONDI_SIM(PL_FZPB, _T("楼 板"), 10, eCrStut, isSlab);
|
|
FC_CONDI_SIM(PL_HZGB, _T("盖 板"), 11, eCrStut, isSlab);
|
|
FC_CONDI_SIM(PL_HZXB, _T("斜 底 板"), 12, eCrStut, isXSlab);
|
|
FT_CONDI_SIM(PL_DLJC, _T("板 基 础"), 13, eCrStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_QXHN, _T("曲线护栏"), 14, eCrStut, _T("LWPOLYLINE,ARC,CIRCLE,LINE"), 1);
|
|
FC_CONDI_SIM(PL_RYPD, _T("任意屋顶"), 15, eCrStut, isClosedPLine);
|
|
FC_CONDI_SIM(PL_RZPD, _T("人字屋顶"), 16, eCrStut, isClosedPLine);
|
|
FT_CONDI_SIM(PL_YHLT, _T("圆弧楼梯"), 17, eCrStut, _T("ARC"), 1);
|
|
FT_CONDI_SIM(PL_QTCC, _T("墙体插窗"), 18, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_QTCM, _T("墙体插门"), 19, eCrStut, _T("AEC_DBWALL"), 1);
|
|
FT_CONDI_SIM(PL_ZHMC, _T("组合门窗"), 20, eCrStut, _T("AEC_DBOPENING"), -2);
|
|
FT_CONDI_SIM(PL_BZZJ, _T("布置桩基"), 21, eCrStut, _T("AEC_DBSLAB"), 1);
|
|
FT_CONDI_SIM(PL_CJSY, _T("进出水堰"), 22, eCrStut, _T("LWPOLYLINE,LINE,ARC,CIRCLE"), 1);
|
|
FT_CONDI_SIM(PL_PMFY, _T("平面放样"), 23, eCrStut, _T("LINE"), 1);
|
|
FT_CONDI_SIM(PL_LJGD, _T("路径管线"), 0, eCrPipe, _T("LINE,AEC_ROADAXISLINE,LWPOLYLINE,POLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_FYGX, _T("放样管线"), 1, eCrPipe, _T("LWPOLYLINE,ARC,CIRCLE"), 1);
|
|
FC_CONDI_SIM(PL_FZFM, _T("复制阀门"), 2, eCrPipe, isOneValve);
|
|
FC_CONDI_SIM(PL_LGGJ, _T("立管固架"), 3, eCrPipe, isVertPipe);
|
|
FT_CONDI_N_ENT(PL_WTLG1, _T("弯头连管"), 0, eDsPipe, _T("AEC_EWPIPE"), 2);
|
|
FT_CONDI_N_ENT(PL_wmerge, _T("合并管线"), 1, eDsPipe, _T("AEC_EWPIPE"), 2);
|
|
FT_CONDI_SIM(PL_GXLJ, _T("管线连接"), 2, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_TJST1, _T("三通连接"), 3, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_TJST2, _T("添加四通"), 4, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_GXGM, _T("管线共面"), 5, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_ZGBQ, _T("支管补强"), 6, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_GJBG, _T("管线变更"), 7, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_UXBR, _T("U型避让"), 8, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_XGXG, _T("修改斜管"), 9, eDsPipe, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_FUL(PL_SBXZ1, PL_SBXZ, _T("阀件旋转"), 10, eDsPipe, _T("AEC_DBEWFIT"), 1);
|
|
FC_CONDI_FUL(PL_SBXZ2, PL_SBXZ, _T("阀门旋转"), 11, eDsPipe, isOneValve);
|
|
FT_COND_INTE_INS(PL_DJWT, _T("端加弯头"), 0, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_45WT, _T("45度弯头"), 2, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_BJWT, _T("变径弯头"), 3, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_GXBJ, _T("管线变径"), 4, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_DJST, _T("端加三通"), 5, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_PXST, _T("偏向三通"), 6, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_DZST, _T("定制三通"), 7, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_EFST, _T("二分三通"), 8, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_TJDT, _T("添加堵头"), 9, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_CRFL, _T("单插法兰"), 10, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_CDFL, _T("插双法兰"), 11, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_TJKG, _T("添加卡箍"), 12, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_CRMB, _T("插入盲板"), 13, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FC_CONDI_SIM(PL_BZMB, _T("八字盲板"), 14, eInsFitting, isFlange);
|
|
FC_CONDI_SIM(PL_FZCB, _T("放置插板"), 15, eInsFitting, isFlange);
|
|
FT_COND_INTE_INS(PL_TJZT, _T("插入直通"), 16, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_TJHJ, _T("插入活接"), 17, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_JSJT, _T("加伸缩节"), 18, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_WLJT, _T("外螺纹接"), 19, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FT_COND_INTE_INS(PL_NLJT, _T("内螺纹接"), 20, eInsFitting, _T("AEC_EWPIPE,AEC_DBEWFIT,AEC_DBXEQUIPMENT,AEC_DBWEQUIPMENT"));
|
|
FC_CONDI_SIM(PL_CXBG, _T("插斜板管"), 0, eCrEqui, isClosedPLine);
|
|
FT_CONDI_SIM(PL_CRBQ, _T("插曝气器"), 1, eCrEqui, _T("AEC_EWPIPE"), -1);
|
|
FC_CONDI_SIM(PL_SBLG, _T("设备连管"), 0, eDsEqui, isEquButNoValve);
|
|
FC_CONDI_SIM(PL_SBDJ, _T("设备对接"), 1, eDsEqui, isEquButNoValve);
|
|
FC_CONDI_FUL(PL_SBJC1, PL_SBJC, _T("设备基础"), 2, eDsEqui, isEquButNoValve);
|
|
FT_CONDI_FUL(PL_SBJC2, PL_SBJC, _T("设备基础"), 3, eDsEqui, _T("AEC_DBPARAEQUI,AEC_DBXEQUIPMENT"), 1);
|
|
FC_CONDI_FUL(PL_XGBG1, PL_XGBG, _T("修改标高"), 4, eDsEqui, isEquButNoValve);
|
|
FT_CONDI_FUL(PL_XGBG2, PL_XGBG, _T("修改标高"), 5, eDsEqui, _T("AEC_DBXBG,AEC_DBTERRAIN,AEC_RIVERGROOVE,AEC_DBWEIR,AEC_DBEXTENDENT,AEC_DBPARAEQUI,AEC_DBXEQUIPMENT"), 1);
|
|
FC_CONDI_SENDER_SIM(PL_SBGZ, _T("设备管嘴"), 6, eDsEqui, isEquButNoValve);
|
|
FC_CONDI_FUL(CO_SFXT1, CO_SFXT, _T("指定系统"), 7, eDsEqui, isEquButNoValve);
|
|
FT_CONDI_FUL(CO_SFXT2, CO_SFXT, _T("指定系统"), 8, eDsEqui, _T("AEC_DBXEQUIPMENT"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRZF, _T("闸 阀"), 0, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRDXZF, _T("刀型闸阀"), 1, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRJZF, _T("截 止 阀"), 2, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRQF, _T("球 阀"), 3, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRZHF, _T("止 回 阀"), 4, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRDF, _T("碟 阀"), 5, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRPQF, _T("排 气 阀"), 6, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRZSF, _T("柱 塞 阀"), 7, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRFQF, _T("浮 球 阀"), 8, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRTJF, _T("调 节 阀"), 9, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRSLKZF, _T("水力控制阀"), 10, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRJYF, _T("浆 液 阀"), 11, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRPNF, _T("排 泥 阀"), 12, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRDCF, _T("电 磁 阀"), 13, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_GDBC, _T("补 偿 器"), 14, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRSSJT, _T("伸缩接头"), 15, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRCLJT, _T("传力接头"), 16, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CLBK, _T("插喇叭口"), 17, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(P3_CRXJJT, _T("橡胶接头"), 18, eInsParamValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CRZF, _T("闸 阀"), 0, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CJZF, _T("截 止 阀"), 1, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_AQFM, _T("球 阀"), 2, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CZHF, _T("止 回 阀"), 3, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CRDF, _T("碟 阀"), 4, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CRJF, _T("角 阀"), 5, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CAQF, _T("安 全 阀"), 6, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_STFM, _T("三 通 阀"), 7, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_XTFM, _T("四 通 阀"), 8, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_TJFM, _T("调 节 阀"), 9, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_SSFM, _T("疏 水 阀"), 10, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_XSFM, _T("旋 塞 阀"), 11, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_GMFM, _T("隔 膜 阀"), 12, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_JYFM, _T("减 压 阀"), 13, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CBYF, _T("背 压 阀"), 14, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CZXF, _T("针 型 阀"), 15, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CCBF, _T("常 闭 阀"), 16, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CPQF, _T("排 气 阀"), 17, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CJYF, _T("浆 液 阀"), 18, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CPNF, _T("排 泥 阀"), 19, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CDCF, _T("电 磁 阀"), 20, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_SSJT, _T("伸缩接头"), 21, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_CLJT, _T("传力接头"), 22, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SENDER_SIM(PL_XJJT, _T("橡胶接头"), 23, eInsCustomValve, _T("AEC_EWPIPE"), 1);
|
|
FT_CONDI_SIM(PL_PFBZ, _T("梁柱标注"), 0, eDimStut, _T("AEC_DBCOLMN,AEC_DBBEAM,LINE"), 1);
|
|
FT_CONDI_SIM(PL_DKBH, _T("洞口编号"), 1, eDimStut, _T("AEC_X3DPART"), 1);
|
|
FT_CONDI_SIM(PL_DHFW, _T("洞号复位"), 2, eDimStut, _T("AEC_X3DPART"), 1);
|
|
FT_CONDI_SIM(PL_BHYX, _T("编号隐显"), 3, eDimStut, _T("AEC*"), -1);
|
|
FT_CONDI_SIM(PL_DKBZ, _T("洞口标注"), 4, eDimStut, _T("AEC_X3DPART,LINE,POINT,CIRCLE"), 1);
|
|
FT_CONDI_SIM(PL_TGBZ, _T("套管标注"), 5, eDimStut, _T("AEC_X3DPART,LINE,POINT"), 1);
|
|
FT_CONDI_SIM(PL_YHBZ, _T("翼环标注"), 6, eDimStut, _T("AEC_X3DPART,LINE"), 1);
|
|
FT_CONDI_SIM(PL_MCMM, _T("门窗命名"), 7, eDimStut, _T("AEC_DBOPENING"), 1);
|
|
FT_CONDI_SIM(PL_ZXBZ, _T("在线标注"), 0, eDimSys, _T("AEC_EWPIPE,LINE,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_XSBZ, _T("线上标注"), 1, eDimSys, _T("AEC_EWPIPE,LINE,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_XXBZ, _T("线下标注"), 2, eDimSys, _T("AEC_EWPIPE,LINE,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_YCBZ, _T("引出标注"), 3, eDimSys, _T("AEC_EWPIPE,AEC_DBEWFIT,LINE,ARC,CIRCLE,INSERT,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_YCSB, _T("引出上标"), 4, eDimSys, _T("AEC_EWPIPE,AEC_DBEWFIT,LINE,ARC,CIRCLE,INSERT,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_ZZBZ, _T("垂直标注"), 5, eDimSys, _T("AEC_EWPIPE,AEC_DBEWFIT,LINE,ARC,CIRCLE,INSERT,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_ZZCB, _T("垂直侧标"), 6, eDimSys, _T("AEC_EWPIPE,AEC_DBEWFIT,LINE,ARC,CIRCLE,INSERT,LWPOLYLINE"), 1);
|
|
FT_CONDI_SIM(PL_GJBZ, _T("管件标注"), 7, eDimSys, _T("AEC_EWPIPE,AEC_DBEWFIT,LINE,ARC,CIRCLE,INSERT,LWPOLYLINE"), 1);
|
|
FC_CONDI_FUL(PL_FMBZ1, PL_FMBZ, _T("阀门标注"), 8, eDimSys, isOneValve);
|
|
FT_CONDI_FUL(PL_FMBZ2, PL_FMBZ, _T("阀门、设备、仪表标注"), 9, eDimSys, _T("POINT,LINE,INSERT"), 1);
|
|
FC_CONDI_SIM(PL_SBBZ, _T("设备、仪表标注"), 10, eDimSys, isEquButNoValve);
|
|
FT_CONDI_SIM(HA_FBBZ, _T("风管标注"), 11, eDimSys, _T("AEC_DBDUCT"), 1);
|
|
FT_CONDI_SIM(EL_QJBZ1, _T("桥架标1"), 12, eDimSys, _T("AEC_DBCABTRY,AEC_DBECFIT,LINE"), 1);
|
|
FT_CONDI_SENDER_SIM(EL_QJBZ2, _T("桥架标2"), 13, eDimSys, _T("AEC_DBCABTRY,LINE"), 1);
|
|
FT_CONDI_SIM(EL_DLBZ, _T("电缆标注"), 14, eDimSys, _T("AEC_EWCABLE"), 1);
|
|
|
|
#pragma endregion
|
|
|
|
class AecObjectUIContext: public AcEdUIContext
|
|
{
|
|
public:
|
|
typedef std::set<UIMenuItem *, UIMenuItem::compareItemsById> UIItemSet;
|
|
typedef std::set<UIMenuItem::Category> Categories;
|
|
typedef std::vector<UIMenuItem *> UIItemVector;
|
|
public:
|
|
AecObjectUIContext();
|
|
virtual ~AecObjectUIContext();
|
|
|
|
virtual void *getMenuContext(const AcRxClass *pClass, const AcDbObjectIdArray &ids);
|
|
virtual void onCommand(Adesk::UInt32 cmdIndex);
|
|
|
|
void buildMenu(const AcDbObjectIdArray &ids, const AcGePoint3d &ptPick);
|
|
|
|
UIMenuItem* findItemById(const UINT_PTR &id);
|
|
|
|
void items2Json(LPCTSTR pszPath) const;
|
|
|
|
void initMenuItems();
|
|
|
|
void remakeMenuItems();
|
|
|
|
static void AddContext(void *pAppID);
|
|
static void DelContext();
|
|
static void output2Json();
|
|
|
|
static const CString outputFileName;
|
|
static AecObjectUIContext *g_pBaseUIContext;
|
|
|
|
private:
|
|
void analyCfgFile();
|
|
|
|
private:
|
|
HMENU m_hMenu;
|
|
|
|
// 所有菜单项的集合,没有顺序
|
|
UIItemVector m_menuItems;
|
|
|
|
// 按菜单ID顺序
|
|
UIItemSet m_UIItemSet;
|
|
|
|
// 菜单分类顺序
|
|
std::vector<UIMenuItem::Category> m_sortCategories;
|
|
};
|
|
|
|
class AecDefaultUIContext: public AcEdUIContext
|
|
{
|
|
public:
|
|
AecDefaultUIContext();
|
|
virtual ~AecDefaultUIContext();
|
|
|
|
virtual void *getMenuContext(const AcRxClass *pClass, const AcDbObjectIdArray &ids);
|
|
virtual void onCommand(Adesk::UInt32 cmdIndex);
|
|
|
|
static void AddContext(void *pAppID); // 需要 AppID
|
|
static void DelContext();
|
|
|
|
private:
|
|
static AecDefaultUIContext *g_pDefaultContext;
|
|
HMENU m_hMenu; // 纯 Win32 句柄
|
|
};
|
|
|
|
namespace AecUIContext
|
|
{
|
|
void AddContext(void *pAppID);
|
|
void DelContext();
|
|
}
|
|
|