vcSimVehicle用法
vcSimVehicle允许您将组件模拟为移动的车辆
Inherits: vcBehaviour
vcSimVehicle对象应该位于组件的根节点中。设置了速度、加减速因子后,vcSimVehicle对象将自动处理部件的运动和方向,以达到给定的目标。
作为车辆,一个部件可以被制造成原地旋转,附着或分离货车,引导或跟随其他车辆,并改变其路线。
Properties
Name | Type | Access | Description |
Acceleration | Real | RW | 定义车辆的最大加速度(mm/s^2)。也就是车辆加速的速度. |
Deceleration | Real | RW | 定义车辆的最大减速(mm/s^2)。也就是车辆减速的速度. |
DecisionTime | Real | R | 获取车辆执行一个运动并到达计算出的运动路径的决策点所需要的时间。 决策点是车辆减速到目标时的点。在某些情况下,决策点被用来评估车辆和目标位置。例如,您可能想要模拟车辆路线和交叉路口,并评估另一辆车辆是否在目标位置。 |
Interpolation | Real | W | 设置车辆到达目标的计算运动路径的张力(0 - n)。 (可选)默认值为0,这将导致从路径的每个路径点直线。值越大,车辆沿着路径点的切线行驶的时间就越长。 |
LengthIterations | Integer | W | 设置计算Bezier路径长度时每个路径段的迭代次数。 (可选)默认值为10。更多的迭代需要更长的时间来计算,但是会得到更精确的结果。 |
MaxSpeed | Real | RW | 定义车辆的最大速度(mm/s)。也就是车辆的最高速度。 |
OffsetMatrix | W | 设置车辆原点和方向的偏移量。 (可选)默认包含节点的起源。在某些情况下,当倒车或沿高架道路行驶时,您可能希望保持车辆的方向。 | |
PathLength | Real | R | 获得车辆到达目标时所使用的运动路径长度。 |
TotalTime | Real | R | 利用计算的路径得到车辆到达目标的总行驶时间。 |
Note:
最后增加的车辆控制点是目标,因此车辆只需要一个控制点就可以计算路径.
为了属于同一路径,需要依次添加控制点,例如使用while或for循环。否则,你可能需要重新规划车辆以达到最终目标。
Methods
Name | Return Type | Parameters | Description |
addControlPoint | None | vcVector point | 在车辆路径的末端增加一个指定的点 |
addOrientationPoint | None | vcVector vector | 如果插补不为零,为车辆添加一个给定的矢量,以计算车辆在最后一个控制点的方向. 在为车辆路径添加控制点后应立即调用此方法。给定的向量没有添加到path中。 |
attachWagonAtTheEnd | None | vcComponent component, [Real distance] | 将给定的组件作为货车连接到车辆上。 如果没有之前的[文]货车,则添加组[章]件作为lead[来]货车。否则,组[自]件被附加到添加[网]到车辆的最后一[淘]辆货车上。 一个可选的距离参数可以给偏移距离组件附加到车辆上。默认情况下,该方法将在调用时使用组件到车辆的距离。 |
calculateDecisionTimeToStopAt | Real | Real distance | 返回车辆在计算的运动路径中需要减速(决策点)以在给定距离停止的总模拟时间. |
calculateEnterExitBox | 2-tuple (Real entry_distance, Real exit_distance) | vcVector Center, vcVector P1, vcVector P2, Real distStartAt, Real precision | 根据计算出的路径、车辆的起始距离和给定的精度返回车辆进入和退出盒子的距离. Center、[巴]P1和P2参数[文]定义了box。[章] 返回的距离将在理论交点的精度的一半之内。 |
calculateFinishedTimeToStopAt | Real | Real distance | 根据计算出的路径,返回车辆在给定距离停车的计算出的总模拟时间。 |
calculateOffsetPathLength | Real | vcVector offset | 返回基于给定偏移量的车辆计算路径的长度。 |
calculatePositionAt | Real time, Integer isElapsedTime | 根据计算出的路径返回给定时间内车辆的位置和方向。
如果isElapsedTime参数为0(默认值),则给定的时间是车辆移动开始后经过的时间。否则,给定的时间是模拟开始后经过的时间。 | |
calculatePositionWithDistance | 1-tuple (vcVector position) | Real distance | 返回车辆在计算路径中给定距离的位置。 返回值是一个元组,其中第一个元素是位置向量. |
calculateSpeedAt | Real | Real time, Integer isElapsedTime | 返回给定时间内车辆在计算路径上的速度。 如果isElapsedTime参数为0(默认值),则给定的时间是车辆移动开始后经过的时间。否则,给定的时间是模拟开始后经过的时间。 |
calculateTravelWithTime | Real | Real time, Integer isElapsedTime | 返回给定时间内车辆在计算路径上行驶的距离。 如果isElapsedTime参数为0(默认值),则给定的时间是车辆移动开始后经过的时间。否则,给定的时间是模拟开始后经过的时间。 |
clearMove | None | None | 从车辆的计算路径中移除所有的点,从而停止车辆的移动。 该方法应在仿真开始时,在任何控制点添加到车辆之前调用。 |
clearPassedPoints | None | None | 从计算路径中移除车辆已到达的点,从而重置计算路径的原点和它的长度。 |
detachAllWagons | None | None | 将所有货车与车辆分离,并相互分离。 该方法应在模拟复位时调用;否则,组件将保持相互连接。 |
getControlPointDistance | Real | Integer controlPointIndex | 根据计算出的路径返回控制点在车辆中给定索引处的距离。 注意:如果货车附在车辆上,将有负距离的控制点。 |
offsetPath | none | vcVector offset | 参数化偏移车辆的计算路径(x轴为切线,y轴为径向,z轴为上)。 这个方法应该在给车辆添加点数后调用。 |
rePlan | None | None | 清除车辆上的所有点,除了车辆和货车之间的点,从而允许你用当前的速度,位置和方向重新规划车辆的路线。也就是说,车辆不会停下来,而是改变路线到新增加的控制点。 |
resetStopAtDistance | None | Real distance | 指示车辆在计算的路径上以给定的距离停车。 这种方法允许你停车,并重新计算路线使用相同或不同的控制点。 |
rotateInPlace | None | Real angle, Real angularSpeed, Real angularAcceleration, Real angularDeceleration | 使用给定的角速度,角加速度和角减速参数以给定的角度旋转车辆。 旋转将触发OnMovementChanged和OnMovementFinished事件。为了确保旋转完成,在添加新的控制点之前使用延迟、事件或触发器。 |
update | None | Real time | 更新车辆控制的物体的位置。 |
Events
Name | Parameters | Description |
OnDecisionPointReached | vcComponent component, Real time | 当车辆开始减速以停止在目标时触发。即车辆到达决策点。 车辆成分和发生时间传递给事件。 |
OnFinalDestinationReached | vcComponent component, Real time | 车辆到达最后一个目标时触发。即车辆到达最后一个控制点,在队列中没有其他目标的情况下停车。 车辆成分和发生时间传递给事件。 |
OnMovementChanged | vcComponent component, Real time | 当车辆路线被修改时触发,例如点被清除或添加到车辆或改变停车距离。 车辆成分和发生时间传递给事件。 |
OnMovementFinished | vcComponent component, Real time | 当车辆到达目标时触发。 车辆成分和发生时间传递给事件。 |
Examples
的例子。控制车辆速度和设置控制点
from vcScript import *
import vcVector
#在模拟开始或执行时定义车辆的属性
#像PathLength这样的属性应该在添加点或旋转对象后调用
#在OnRun事件中直接或通过调用函数或事件添加点
def OnRun():
comp = getComponent()
app = getApplication()
vehicle = comp.findBehaviour("Vehicle")
vehicle.clearMove() #clears all previously added control points
vehicle.Acceleration = 2000
vehicle.Deceleration = 2000
vehicle.MaxSpeed = 1200
vehicle.Interpolation = .35 # this affects how sharp the curve is in corners
#wagons (uncomment next 3 lines if needed)
#vehicle.detachAllWagons()
#vehicle.attachWagonAtTheEnd(wagon, 1600)
#wagon = app.findComponent('wagon')
#preferred method is to reference the positions of different components
#another way is to create a component with Frame features
v1 = vcVector.new(5000,2000,0)
v2 = vcVector.new(-2000,-2000,0)
v3 = vcVector.new(-5000,4000,0)
for vec in [v1,v2,v3]:
vehicle.addControlPoint( vec )
本文链接:https://www.wtao8.com/post/23.html 转载需授权!