滑动节点与导轨

滑动节点(Slidenodes)是沿着预先定义好的导轨(rails)移动的节点。常见的应用场景包括转向齿条以及一些悬架组件,例如麦弗逊支柱。

滑动节点

滑动节点的使用前,需要已经创建好相应的节点和导轨,因为滑动节点需要同时引用这两者。请注意,节点必须与导轨精确对齐,否则在生成滑动节点时,节点可能会自动对齐导轨,从而引发相关问题。

"slidenodes": [ 
     ["id:", "railName", "attached", "fixToRail", "tolerance", "spring", "strength", "capStrength"],
 
     ["nodename", "Rail1", true, true, 0, 10000000, 100000000, 345435],
],

必要参数

string
type
要附着在导轨上的节点名称
这应该与已在节点部分定义的节点名称相匹配
string
type
该滑动节点将要附着的导轨名称
boolean
type
true
default
指定滑动节点是否初始时就附着在导轨上。
boolean
type
true
default
将滑动节点放置到导轨上(如果定义了tolerance,会将其移动到靠近导轨处)。
number
type
在节点距离导轨一定距离(米)后,导轨力才会作用于节点。
number
type
将节点吸附到导轨上的力(N/m)。
number
type
节点与导轨分离所需的力(N)。
number
type
端盖的强度(N)。
端盖是导轨的起止节点。如果 capped=false,当滑动节点到达末端时会滑出并与导轨分离。如果 capped=true,则会被 capStrength 力固定在导轨末端。

导轨(Rails)

导轨是为滑动节点提供移动路径的轨道。它们由一个或多个通过节点定义的段组成。

一个导轨可以由多个段组成,这些段不一定需要在一条直线上。

"rails": {
      "Rail1":{"links:":["node1", "node2", "node3", "node4"], "broken:":[], "looped":false, "capped":true}
},

必要参数

string
type
导轨的名称
这是第一个参数,在大括号前。它需要与滑动节点部分的 railName 保持一致。

table
type
将组成导轨的节点列表。该列表至少需要包含两个节点。
"links:":["node1", "node2"],
"links:":["node1", "node2", "node3", "node4"],
table
type
[]
default
来自 links 表格中哪些节点应被视为损坏节点。
这是过时参数,已不再使用。
boolean
type
false
default
如果你的导轨是一个完整的闭环,设置为 true,则滑动节点会不断循环移动不会停止。
boolean
type
false
default
是否在导轨末端有端盖或挡块,以防节点滑出导轨。
端盖是导轨的起始和终止节点。如果 capped=false,滑动节点到达末端时会滑出导轨并与其分离。如果 capped=true,则滑动节点会被 capStrength 力固定在导轨末端。

导轨2(Rails2)

自版本 0.38 起,rails2 部分和 rails 完全相同,拥有相同的参数,但格式不同,更加符合其他 Jbeam 部分的格式规范。

//这两种写法是完全一样的
"rails": {
      "Rail1":{"links:":["node1","node2","node3"], "broken:":[], "looped":false, "capped":true},
      "Rail2":{"links:":["node4","node5"],         "broken:":[], "looped":false, "capped":true},
},
"rails2":[
    ["id",    "links:",                  "broken:","looped","capped"],
    ["Rail1", ["node1","node2","node3"], [],        false,   true   ],
    ["Rail2", ["node4","node5"],         [],        false,   true   ],
],

/* 这两种定义 rails 的方式效果完全相同 */ //

与标准 rails 语法相比,这种语法的优点在于可以通过函数 动态生成导轨 id,这样同一个零件就可以通过不同的导轨名称多次复用(以前只有 rails 部分不支持,其他 Jbeam 部分都可以这样做)。

简易示例

导轨和滑动节点的典型用法之一就是转向齿条。

"rails": {
    "steeringrack":{
        "links:":["fh6r", "fh6l"], "broken:":[], "looped":false, "capped":true,
    },
},
"slidenodes": [
    ["id:", "railName", "attached", "fixToRail", "tolerance", "spring", "strength", "capStrength"],
    ["st1r", "steeringrack", true, true, 0.0, 18001000, "FLT_MAX", "FLT_MAX"],
    ["st1l", "steeringrack", true, true, 0.0, 18001000, "FLT_MAX", "FLT_MAX"],
],

进阶示例

使用 rails2 和函数,可以实现动态生成导轨名称。

"rails2": [
    ["id", "links:", "broken:","looped","capped"],
    ["$= $prefix .. 'r1'", ["1r", "5r"], [], false, true],
    ["$= $prefix .. 'r2'", ["3r", "7r"], [], false, true],
    ["$= $prefix .. 'l1'", ["1l", "5l"], [], false, true],
    ["$= $prefix .. 'l2'", ["3l", "7l"], [], false, true],
],
"slidenodes": [
    ["id:", "railName","attached", "fixToRail","tolerance","spring", "strength", "capStrength"],
    ["0r", "$= $prefix .. 'r1'", true, true, 0.0, 60000, 400000, 400000],
    ["0r", "$= $prefix .. 'r2'", true, true, 0.0, 60000, 400000, 400000],
    ["0l", "$= $prefix .. 'l1'", true, true, 0.0, 60000, 400000, 400000],
    ["0l", "$= $prefix .. 'l2'", true, true, 0.0, 60000, 400000, 400000],
],
上一次修订: 五月 19, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.