Skip to content

Python package

ra.basket

Basket settings: prongs, upper and base rails.

import rhinoartisan as ra

Wraps ArtisanPlugin.Scripting.BasketApi, ArtisanPlugin.Scripting.BasketUpdateApi.

Functions

Function
all()Basket handles for every object of this kind in the active document (empty when there is no document).
by_gem_material()
by_layer()Basket handles on the layer with the given full path (empty when the layer does not exist).
count()Number of objects of this kind in the active document.
create()Builds a basket setting under an existing gem — the ArtisanBasket tool, headless.
find()The handle for id, or None when the id does not belong to an object of this kind.
for_gem()Basket handles whose mother gem is gem_id (empty for None).
selected()Baskets currently selected in the active doc.
update_legacy_baskets()The ArtisanBasketUpdate command, headless: finds every legacy basket (one object carrying “ObjectType = Basket” + parameters in its geometry dictionary, as saved by old Artisan versions, hidden or not), recomputes it against its mother gem with the current kernel and replaces it by the modern editable “Basket” group (metal material, RaObjectUserData with the parameters and the mother).

ra.basket.all()

ra.basket.all() -> List[Basket]

Basket handles for every object of this kind in the active document (empty when there is no document).

ra.basket.by_gem_material()

ra.basket.by_gem_material(material_name: str) -> List[Basket]
ParameterType
material_namestrrequired

ra.basket.by_layer()

ra.basket.by_layer(layer_name: str) -> List[Basket]

Basket handles on the layer with the given full path (empty when the layer does not exist).

ParameterType
layer_namestrrequired

ra.basket.count()

ra.basket.count() -> int

Number of objects of this kind in the active document.

ra.basket.create()

ra.basket.create(gem_ids=None, prongs=None, prong_diameter=None, prong_height=None, prong_height_over_girdle=None, gem_inside=None, upper_rail=None, base_rail=None, support=None, prong_mode=None, prong_profile=None, prong_diameter_bottom=None, prong_rotation=None, straight_prong=None, support_width=None, support_thickness=None, upper_rail_width=None, upper_rail_height=None, upper_rail_height_under_girdle=None, upper_rail_gem_size_percentage=None, upper_rail_profile=None, base_rail_width=None, base_rail_height=None, base_rail_move_in_z=None, base_rail_gem_size_percentage=None, base_rail_profile=None, element=None, prong_type=None, overlap=None, v_prongs=None, v_thickness=None, v_arm_length=None) -> List[Basket]

Builds a basket setting under an existing gem — the ArtisanBasket tool, headless. One basket (its own group) per gem; gem_ids None/empty = the currently selected gems. Millimetres; omitting keeps the tool default (or the user’s saved defaults): prong_diameter 1.5 (sets top/girdle/bottom together), prong_height 4, prong_height_over_girdle 0.3. prongs 0 keeps the default (4 rotated); positive/negative counts follow the tool (negative = rotated variant). gem_inside defaults to 0.35. Those tool defaults are sized for a 5 mm stone and scale to the first gem, as in the panel (prong sizes, rails, gem inside, supports); a saved element scales from the stone it was saved on; the user’s saved defaults are used as they are on the first gem. Every other gem gets that design scaled by its size ratio to the first, so stones of different sizes each get a basket in proportion. Explicit arguments are never scaled. upper_rail/base_rail None keep the defaults (both enabled). support is NONE (default), SINGLE or DOUBLE. prong_mode is ROUND (default), CUSTOM (the prong_profile section; a profile alone implies it, and the section starts turned 90 degrees unless prong_rotation says otherwise) or CLAW; DEFAULT and CIRCLE also mean ROUND. Claw tips are built in Render mode only; tune them through the handle’s Prong section (SetClawGemInside…). prong_type is SINGLE (default), DOUBLE (a pair side by side on every position) or TRIPLE (the pair plus a thinner prong between them): ROUND prongs take all three, CLAW SINGLE or DOUBLE (the Double Claw), CUSTOM only SINGLE. overlap (mm, default 0) is how much the prongs of a pair, and the Triple’s middle, cross: 0 = they touch, never a gap; taken literally (omit it to keep the default). v_prongs True = V prongs: every prong position on a sharp corner of the girdle gets a V that wraps the corner instead of a round prong - the four corners of a princess, the tip of a pear or a heart, the tips of a six-prong marquise (its four-prong layout holds the sides and has no corner), the corners of a trillion. Round prongs only (ROUND mode); the other positions keep their prongs. v_thickness (metal width) and v_arm_length (how far each arm runs along the girdle) in mm; 0 keeps them in proportion to the prong diameter. Returns one Basket handle per gem, in input order. element = name of a saved Basket element (ra.elements.list(“Basket”)) to start from instead of the defaults; explicit arguments override it.

ParameterType
gem_idsSequence[IdLike]optional — None = the tool default
prongsintoptional — None = the tool default
prong_diameterfloatoptional — None = the tool default
prong_heightfloatoptional — None = the tool default
prong_height_over_girdlefloatoptional — None = the tool default
gem_insidefloatoptional — None = the tool default
upper_railOptional[bool]optional — None = the tool default
base_railOptional[bool]optional — None = the tool default
supportstroptional — None = the tool default
prong_modestroptional — None = the tool default
prong_profilestroptional — None = the tool default
prong_diameter_bottomfloatoptional — None = the tool default
prong_rotationfloatoptional — None = the tool default
straight_prongOptional[bool]optional — None = the tool default
support_widthfloatoptional — None = the tool default
support_thicknessfloatoptional — None = the tool default
upper_rail_widthfloatoptional — None = the tool default
upper_rail_heightfloatoptional — None = the tool default
upper_rail_height_under_girdlefloatoptional — None = the tool default
upper_rail_gem_size_percentagefloatoptional — None = the tool default
upper_rail_profilestroptional — None = the tool default
base_rail_widthfloatoptional — None = the tool default
base_rail_heightfloatoptional — None = the tool default
base_rail_move_in_zfloatoptional — None = the tool default
base_rail_gem_size_percentagefloatoptional — None = the tool default
base_rail_profilestroptional — None = the tool default
elementstroptional — None = the tool default
prong_typestroptional — None = the tool default
overlapfloatoptional — None = the tool default
v_prongsOptional[bool]optional — None = the tool default
v_thicknessfloatoptional — None = the tool default
v_arm_lengthfloatoptional — None = the tool default

ra.basket.find()

ra.basket.find(id: IdLike) -> Basket

The handle for id, or None when the id does not belong to an object of this kind.

ParameterType
idIdLikerequired

ra.basket.for_gem()

ra.basket.for_gem(gem_id: IdLike) -> List[Basket]

Basket handles whose mother gem is gem_id (empty for None).

ParameterType
gem_idIdLikerequired

ra.basket.selected()

ra.basket.selected() -> List[Basket]

Baskets currently selected in the active doc.

ra.basket.update_legacy_baskets()

ra.basket.update_legacy_baskets() -> List[str]

The ArtisanBasketUpdate command, headless: finds every legacy basket (one object carrying “ObjectType = Basket” + parameters in its geometry dictionary, as saved by old Artisan versions, hidden or not), recomputes it against its mother gem with the current kernel and replaces it by the modern editable “Basket” group (metal material, RaObjectUserData with the parameters and the mother). Baskets whose mother gem is gone or that fail to compute are left untouched. Returns the ids of the new baskets (ra.basket.find / handles); empty when the document has no legacy baskets.

Handles

Objects returned by the functions above. Assigning a settable property regenerates the object; the change is one undo step inside ra.transaction().

Basket (handle)

PropertyTypeSettable
base_railBasketRail
gem_carat_weightfloat
gem_materialstr
gem_shapestr
layer_namestr
mother_gem_idstr
object_typestr
positionPoint3d
prongBasketProngThe rest of the tool’s parameters, grouped as the panel groups them.
prong_countintyessigned: negative = the rotated layout
prong_diameter_bottomfloat
prong_diameter_girdlefloatstored for older files only: the prong’s girdle section is built from ProngDiameterTop
prong_diameter_topfloat
prong_heightfloatyes
prong_modestryes”ROUND” | “CUSTOM” | “CLAW”: the prong construction, as on every setting with prongs. The claw values live in the Prong section.
prongs_rotatedbool
upper_railBasketRail
Method
delete()
move(translation: VectorLike)
set_element(element: str)Applies a saved Basket element (ra.elements.list(“Basket”)) to this basket: its parameters replace the current ones, the mother gem stays, and the basket regenerates in place (same id).
set_prong_diameter(diameter: float)writes all three diameters

Plus what every handle has: id, delete(), update(**kwargs), parameters(), equality and hashing by id, and raw (the underlying .NET object).

BasketRail (section)

One of the basket’s two rails. The upper rail additionally carries the chamfer; the base rail carries its vertical offset. Members that do not apply to a rail throw NotSupportedException rather than silently doing nothing.

PropertyTypeSettable
chamferboolyesupper rail only
chamfer_offsetfloatyesupper rail only
enabledboolyes
gem_size_percentagefloatyesrail diameter as % of the gem
heightfloatyesmm
height_under_girdlefloatyesupper rail only
modestryesDEFAULT (elliptical section) or CUSTOM (the CLOSED_PROFILE)
move_in_zfloatyesbase rail only, signed
profile_namestrCLOSED_PROFILE asset name (used in CUSTOM mode)
rotationfloatyesdegrees, signed
widthfloatyesmm
Method
set_profile(asset_name: str)also switches the rail to CUSTOM mode, where the profile is used

BasketProng (section)

The prongs and their support posts.

PropertyTypeSettable
bottom_rail_insidefloatyes
cap_bumpfloatyesmm
claw_gem_insidefloatyesThe basket’s claw tip, CLAW mode only (built in Render mode only). mm the tip reaches in toward the gem.
claw_heightfloatyesmm added to the height over the girdle, signed
claw_on_curveintyesthe panel’s “Smoothness” (1-30): on STRAIGHT prongs, where the claw starts to bend, as a % of the girdle-to-base distance; curved prongs (the default) ignore it
claw_tensionfloatyesdegrees, the panel’s “Tip direction” (10-60)
countintyesnegative = the rotated layout
diameter_bottomfloatyesmm
diameter_topfloatyesmm
extension_for_manufacturingfloatyes
gem_insidefloatyesmm, signed
heightfloatyesmm
height_over_girdlefloatyesmm
modestryes”ROUND” | “CUSTOM” | “CLAW” (the same as Basket.ProngMode)
overlapfloatyesmm the prongs of a pair, and the Triple’s middle, cross: 0 = they touch (never a gap)
profile_namestrCLOSED_PROFILE asset name, "" when unset
rotationfloatyesdegrees, signed
straightboolyesstraight vs curved prong body
supportstryes”NONE” | “SINGLE” | “DOUBLE”
support_thicknessfloatyesmm
support_widthfloatyesmm
typestryes”SINGLE” | “DOUBLE” | “TRIPLE”: prongs per position - one, a pair side by side, or the pair plus a thinner prong between them. ROUND prongs take all three, CLAW SINGLE or DOUBLE (the Double Claw), CUSTOM SINGLE.
v_arm_lengthfloatyesmm, how far each arm of the V runs along the girdle as built: the set value, or 1.2 x DiameterTop while none is set
v_prongsboolyesV prongs: every position on a sharp corner of the girdle (princess corners, pear and heart tips, six-prong marquise tips, trillion corners) gets a V that wraps the corner. ROUND mode only; the other positions keep their prongs.
v_thicknessfloatyesmm, the V’s metal width as built: the set value, or 0.8 x DiameterTop while none is set
Method
set_profile(asset_name: str)CLOSED_PROFILE asset; also switches the prongs to CUSTOM mode, where the profile is used (from another mode, Rotation starts at 90; Type goes back to SINGLE)