Skip to content

FBD: System Sketch

mkraska edited this page Nov 26, 2024 · 10 revisions

FBD Example Question

We start with an empty new STACK question.

  • Make sure to use a simple text editor, e.g. Marklar
  • Set the Question text to Markdown format
  • Set the feedback text fields always to HTML format

Let us create a system sketch like this:

image

Question Variables

You create the list of objects for the system sketch. You can use jsfiddle for rapid prototyping and then copy the list of objects to STACK.

initdata: [
  [ "grid", "","",-2, 5,-4,4, 40],
  [ "bar", "1", [0, 0], [1, -2], "show" ],
  [ "beam","white", "gray80",[0, 0],[3,0],0.15, "show"],
  [ "crosshair","", [3, -1], [0,0], [1,1], [1,1], "grid" ],
  [ "dim", "a", [3, 2], [4,2], 0 ],
  [ "fix12", "C", [1, -2], 0 , "show"],
  [ "fix13", "B", [3, 0], 180, "show"],
  [ "node", "A", [0,0] ],
  [ "q", "","q_0", [0, 0.2], [3,0.2], 0 , 1, 0, "show"],
  [ "forceGen", "F_1", [-1, 3]],
  [ "momentGen", "M_1", [1, 3]]
];
init: stackjson_stringify(initdata);

Question Text

You add the generic block for the sketch.

<p hidden>[[input:objects]] [[validation:objects]]</p>
<p hidden>[[input:names]] [[validation:names]] </p>
<div style="float:right">
[[jsxgraph width='500px' height='400px' input-ref-objects="stateRef" input-ref-names="fbd_names" ]]
var mode  = "STACK";
const initstring = {#init#};
const centeredLabelStyle = {size:0, showInfobox:false, label:{offset:[-6,0], 
  anchorX:'left', anchorY:'middle'}};
// End of STACK header
[[include src="https://raw.githubusercontent.com/mkraska/meclib/main/meclib.js"/]]
[[/jsxgraph]]</div>

You might also want to add instructions and hints on how to edit the sketch.

**Freischnitt**

Schneiden Sie den Balken frei. Ersetzen Sie die Lager durch Reaktionen und ersetzen Sie die Streckenlast durch eine resultierende Kraft. 

Geben Sie als Name der resultierenden Kraft deren Wert als Formel an.

Gegeben: Gitterweite \\(a\\), Streckenlast \\(q_0\\).

[[lang code="de"]]
<details><summary><strong>Bedienungshinweise</strong></summary>
<ul>
 <li>Objekte (de-)aktivieren: Doppelklick
 <li>Kraft/Moment 
 <ul>
   <li>erzeugen: Name (oder Ausdruck für Wert) eintragen und grauen Pfeil auf die Skizze ziehen
  <li>löschen: Doppelklicken
  <li>Name ändern: Löschen und neu erzeugen. Sorry, etwas unbequem :(
  <li>Position und Richtung ändern: Rote Kontrollpunkte ziehen
 </ul>
<li> Resultierende von Streckenlasten: Mindestens ein Kontrollpunkt muss auf der Streckenlast liegen
<li> Reaktionskräfte: Anfangs- oder Endpunkt müssen auf dem Lagerpunkt liegen
<li> Reaktionsmomente: Mittelpunkt muss auf dem Lager liegen
</ul>
</details>
[[/lang]]
[[lang code="other"]]
<details><summary><strong>Hints for interactive input</strong></summary>
<ul>
<li>Activate/de-activate objects: double click 
<li>Force/moment 
  <ul>
  <li>Create: Enter name (or expression indicating the value) in the text field and then drag the gray arrow onto the sketch. 
  <li>Delete: Double click on the arrow
  <li>Change name: Delete and create new with correct name. Sorry, somewhat inconvenient :(
  <li>Change position and direction: Drag red control points 
  </ul>
<li>Resultants of line loads: At least one control point is on the line load area
<li>Force reactions: Either of the two control points must be on the support point
<li>Moment reactions: Center point must coincide with the support point.
</ul>
</details>

[[/lang]]

Specific Feedback

  • Remove everything here.

Configure the Input fields

  • Verify the question text and update the form

Specify properties of the input fields:

  • objects

    Field Value
    Input type String (Zeichenkette)
    Model answer []
    Students must verify no
    Show validation no
  • names

    Field Value
    Input type algebraic
    Model answer []
    Forbid floats no
    Students must verify no
    Show validation no

Set the Default mark to 0, otherwise you can't save the question without PRTs.

Tryout Space

In order to try code snippets in jsfiddle,

  1. copy the code from the wiki page to the clipboard
  2. follow the link for the JSXGraph version you want to try
  3. Replace the code in the HTML section (contents of <p hidden id="init">) with the content of the clipboard
Clone this wiki locally