def lock() -> Lock: """Creates lock with initialized scene and project.""" test = "test" lock = Lock({}) scene = UpdateableCachedScene(cmn.Scene(test, description=test)) lock.scene = scene project = UpdateableCachedProject(cmn.Project(test, lock.scene.id, description=test, has_logic=True)) lock.project = project assert lock.scene == scene assert lock.scene_or_exception() == scene assert lock.project == project assert lock.project_or_exception() == project # add some scene and project objects test_object = cmn.SceneObject(test, "TestType") lock.scene.upsert_object(test_object) ap = lock.project.upsert_action_point(cmn.BareActionPoint.uid(), "ap", cmn.Position(0, 0, 0)) ap_ap = lock.project.upsert_action_point(cmn.BareActionPoint.uid(), "ap_ap", cmn.Position(0, 0, 1), ap.id) ap_ap_ap = lock.project.upsert_action_point(cmn.BareActionPoint.uid(), "ap_ap_ap", cmn.Position(0, 0, 2), ap_ap.id) lock.project.upsert_action_point(cmn.BareActionPoint.uid(), "ap2", cmn.Position(0, 1, 0)) ori = cmn.NamedOrientation("ori", cmn.Orientation()) lock.project.upsert_orientation(ap_ap_ap.id, ori) action = cmn.Action("action", "test/type", parameters=[], flows=[]) lock.project.upsert_action(ap_ap_ap.id, action) return lock
async def add_action_point_orientation_using_robot_cb( req: rpc.project.AddActionPointOrientationUsingRobotRequest, ui: WsClient) -> None: """ Adds orientation and joints to the action point. :param req: :return: """ assert glob.SCENE and glob.PROJECT ap = glob.PROJECT.action_point(req.args.action_point_id) unique_name(req.args.name, ap.orientation_names()) if req.dry_run: return None new_pose = await get_end_effector_pose(req.args.robot.robot_id, req.args.robot.end_effector) if ap.parent: new_pose = tr.make_pose_rel_to_parent(glob.SCENE, glob.PROJECT, new_pose, ap.parent) orientation = common.NamedOrientation(common.uid(), req.args.name, new_pose.orientation) ap.orientations.append(orientation) glob.PROJECT.update_modified() asyncio.ensure_future( notif.broadcast_event( events.OrientationChanged(events.EventType.ADD, ap.id, data=orientation))) return None
async def add_action_point_orientation_cb( req: rpc.project.AddActionPointOrientationRequest, ui: WsClient) -> None: """ Adds orientation and joints to the action point. :param req: :return: """ assert glob.SCENE and glob.PROJECT ap = glob.PROJECT.action_point(req.args.action_point_id) unique_name(req.args.name, ap.orientation_names()) if req.dry_run: return None orientation = common.NamedOrientation(common.uid(), req.args.name, req.args.orientation) ap.orientations.append(orientation) glob.PROJECT.update_modified() asyncio.ensure_future( notif.broadcast_event( events.OrientationChanged(events.EventType.ADD, ap.id, data=orientation))) return None
async def add_action_point_orientation_cb( req: srpc.p.AddActionPointOrientation.Request, ui: WsClient) -> None: """Adds orientation and joints to the action point. :param req: :return: """ assert glob.SCENE assert glob.PROJECT ap = glob.PROJECT.bare_action_point(req.args.action_point_id) hlp.is_valid_identifier(req.args.name) unique_name(req.args.name, glob.PROJECT.ap_orientation_names(ap.id)) if req.dry_run: return None orientation = common.NamedOrientation(req.args.name, req.args.orientation) glob.PROJECT.upsert_orientation(ap.id, orientation) evt = sevts.p.OrientationChanged(orientation) evt.change_type = Event.Type.ADD evt.parent_id = ap.id asyncio.ensure_future(notif.broadcast_event(evt)) return None
async def add_action_point_orientation_using_robot_cb( req: srpc.p.AddActionPointOrientationUsingRobot.Request, ui: WsClient) -> None: """Adds orientation and joints to the action point. :param req: :return: """ ensure_scene_started() assert glob.SCENE assert glob.PROJECT ap = glob.PROJECT.bare_action_point(req.args.action_point_id) hlp.is_valid_identifier(req.args.name) unique_name(req.args.name, glob.PROJECT.ap_orientation_names(ap.id)) if req.dry_run: return None new_pose = await get_end_effector_pose(req.args.robot.robot_id, req.args.robot.end_effector) if ap.parent: new_pose = tr.make_pose_rel_to_parent(glob.SCENE, glob.PROJECT, new_pose, ap.parent) orientation = common.NamedOrientation(req.args.name, new_pose.orientation) glob.PROJECT.upsert_orientation(ap.id, orientation) evt = sevts.p.OrientationChanged(orientation) evt.change_type = Event.Type.ADD evt.parent_id = ap.id asyncio.ensure_future(notif.broadcast_event(evt)) return None