CAD系统用户界面的决策表示例

时间:2013-02-05 15:22:14

标签: c++ coding-style

我想将简单CAD系统的用户界面放在决策表中。但我很担心 如何将这些东西放在桌子上。

首先,有一个当前模式(CurMode)可以是: 移动,旋转,删除

接下来,有这样的鼠标操作:

OnLButtonDown中 OnLButtonUp OnRButtonDown OnRButtonUp OnMButtonDown OnMButtonUp 的OnMouseMove

也许对当前鼠标光标下的对象进行了加法测试 ObjectUnderMouse(true / False)

使用这些和其他参数,我想决定遵循以下规则:

如果Mode为Delete并且对象位于鼠标下并按下OnLButtonDown,则删除Object。

如果按下了MButtonUp(MouseWheel),请缩放+ 如果按下MButtonDown(MouseWheel),则缩放 -

如果Mode为Move且对象位于鼠标下并按下OnLButtonDown,则将对象放入缓冲区。 如果Mode是Move并且OnLButtonDown和Buffer和OnMouseMove中的对象动作,则移动对象

......等等。

你得到这个场景吗?

我google了很多,看到了非常简单的DT,但是这对于一个拥有数百个的可行大CAD系统来说是一个良好的开端 参数,状态,模式和UI-操作。

决策表最适合这种CAD系统的设计是什么?

提前致谢

3 个答案:

答案 0 :(得分:1)

Statestep(http://statestep.com)可能正是您所寻找的。网站上给出的示例是针对用户界面的,并且描述了其用于非常大的系统(具有涵盖数百万种可能性的规则的决策表)。 C代码生成。

答案 1 :(得分:0)

感谢您的回复。我将仔细研究一下statestep(我们不使用QT)。但总的来说,我有一些问题需要决定我的CAD系统的哪一部分是一个条件,一个动作,一个条件备选方案等来定义像wiki这样的决策表。 Wiki Decision Table

答案 2 :(得分:0)

我有一个类似的决策过程要实施,这就是我想出的。大概可以改写更美,不过那是另外一个话题了!

并且您还可以将 if 语句中的布尔值对齐以始终位于相同的列上,使其看起来更像一个表格。

Public Sub FileSave1()
    Dim xDlg As Dialog
    Dim xTitle As String
    On Error Resume Next
    xTitle = ActiveDocument.BuiltInDocumentProperties("Title").Value
    xTitle = xTitle & "" & Format((Year(Now() + 1) Mod 100), "20##") & "." & _
        Format((Month(Now() + 1) Mod 100), "0#") & "." & _
        Format((Day(Now()) Mod 100), "0#") & " Report - Firealarm - Building A"
    Set xDlg = Dialogs(wdDialogFileSaveAs)
    xDlg.Name = xTitle
    xDlg.Show
End Sub