CAD系统用户界面的决策表示例
Decision Table example for a CAD system user interface
我想把一个简单CAD系统的用户界面放在决策表中。但我很担心如何把这些东西放在桌子上。
首先,有一个当前模式(CurMode),它可以是:移动、旋转、删除
接下来,鼠标操作如下:
OnLButtonDownOnLButtonUpOnR按钮向下OnRButtonUpOnMButtonDownOnMButtonUpOnMouseMove
也许在当前鼠标光标下有一个对象的添加测试,如下所示ObjectUnderMouse(真/假)
有了这些和其他参数,我想决定以下规则:
如果"模式"为"删除",并且鼠标下有一个对象,并且按下了OnLButtonDown,则删除该对象。
如果按下MButtonUp(鼠标滚轮),则缩放+如果按下MButtonDown(鼠标滚轮),则缩放-
如果"模式"为"移动",并且对象位于鼠标下方,并且按下了OnLButtonDown,则将对象放入缓冲区。如果模式为移动和OnLButtonDown,缓冲区中的对象和OnMouseMove动作,则移动对象
等等
你明白这个场景吗?
我在谷歌上搜索了很多,看到了非常简单的DT,但对于一个拥有数百个参数、状态、模式和UI操作。
在这样的CAD系统中,决策表的最佳设计是什么?
提前感谢
Statestep(http://statestep.com)可能就是你想要的。网站上给出的例子是针对用户界面的,并描述了它在一个非常大的系统中的使用(包含数百万种可能性的规则的决策表)。有C.的代码生成
感谢您的回复。我将仔细研究statestep(我们不使用QT)。但总的来说,我很难决定我的cad系统的哪一部分是条件、动作、条件替代品等来定义像wiki这样的决策表。Wiki决策表
我有一个类似的决策过程需要实现,下面是我的想法。也许可以重写得更漂亮,但那是另一个话题!
您还可以将if语句中的布尔值对齐,使其始终位于同一列上,使其看起来更像一个表。
////////////////////////////////////////////////////////////////////////////////
EditToolMode *EditTool::decideToolMode()
{
bool const isLongPress = (m_lastReleaseTime - m_lastPressTime) > sm_longPressThreshold;
bool const isMouseMoved = (m_startCoords.get() - m_currentCoords.get()).norm() > sm_movedMouseThreshold;
bool const isOnPoint = m_closestPoint.is_initialized() && (m_closestPointDistance2d < sm_onPointThreshold);
bool const isOnEdge = m_selectedPolyline.is_initialized();
bool const isOngoingSelection = !m_ongoingSelection.empty();
bool const isEndEdit = m_editChronology == END_EDIT;
bool const isOnOngoingSelection = isPointOnOngoingSelection(m_ongoingSelection, m_closestPoint);
if (isOngoingSelection && isOnPoint && isOnOngoingSelection)
{
return new ...;
}
if (isOngoingSelection && !isMouseMoved && !isOnEdge)
{
return new ...;
}
if (!isMouseMoved && !isOnEdge && isEndEdit)
{
return new ...;
}
if (!isMouseMoved && isOnPoint && isLongPress)
{
return new ...;
}
if (!isMouseMoved && isOnEdge && isLongPress)
{
return new ...;
}
if (isMouseMoved)
{
return new ...;
}
return nullptr;
}
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 表示"accepting anything for this template argument" C++概念的通配符
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 如何使用Luacneneneba API正确读取字符串和表参数
- 如何将ampl中的集合表示为c++中的向量
- 架构决策:返回std::future还是提供回调
- std::is_base_of表示ctor编译错误
- DB表的内存表示形式的容器
- 使用向量<对<字符串,int > >表示哈希表
- C++ 中最合适的表表示形式
- 奇数链表表示形式
- 使用 C++ 中的数组创建哈希表表示形式
- C++:链表表示
- 指向单链表中没有变量表示每个元素的内存地址的指针
- 在c++中使用STL通过邻接表表示图形
- C++使用 .或 -> 表示链表
- CAD系统用户界面的决策表示例
- 实现了一个邻接表图表示