| 930 | |
| 931 | |
| 932 | def _set_reference_prim_position(stage: Any, prim_path: str, position: Any) -> None: |
| 933 | from pxr import Gf, UsdGeom |
| 934 | |
| 935 | prim = stage.GetPrimAtPath(prim_path) |
| 936 | if prim is None or (hasattr(prim, "IsValid") and not prim.IsValid()): |
| 937 | raise RuntimeError(f"Robot reference prim is missing after USD reference: {prim_path}") |
| 938 | |
| 939 | xformable = UsdGeom.Xformable(prim) |
| 940 | translate = Gf.Vec3d(*(float(value) for value in position)) |
| 941 | for op in xformable.GetOrderedXformOps(): |
| 942 | if op.GetOpType() == UsdGeom.XformOp.TypeTranslate: |
| 943 | op.Set(translate) |
| 944 | return |
| 945 | xformable.AddTranslateOp().Set(translate) |
| 946 | |
| 947 | |
| 948 | def _np_array(values: Any): |