Loading TechIDaily…
Loading TechIDaily…
Sandflow / Industrial
Hosted on Hugging Face · Runtime not tested

Categories aid discovery; they are not runtime certifications.
Download the complete package with its dependencies.
Browse package on HF ↗Parametric Python program with 2 kinematic joints (UsdPhysics). Constructed for autonomous simulation and LLM synthesis.
import sand3d as s3d
import math
def compact_ground_dish():
pedestal = pedestal_part()
plate = top_plate_part()
bracket = elevation_bracket_part()
fb = s3d.local(plate, 0, 0, 54)
bracket = s3d.at(bracket, on=fb)
class="tok-comment"># The fixed bracket is carried by the azimuth joint; keep its geometry grouped with the plate.
moving = s3d.group(class="tok-string">"top_plate_to_bracket", plate, bracket)
fa = s3d.local(pedestal, 0, 0, 335)
moving = s3d.at(moving, on=fa)
s3d.joint(class="tok-string">"azimuth_axis", moving, fa, kind=class="tok-string">"continuous", axis=class="tok-string">"+Z")
fr = s3d.local(moving, 0, 0, 254)
reflector = s3d.at(reflector_part(), on=fr)
s3d.joint(
class="tok-string">"elevation_axis",
reflector,
fr,
kind=class="tok-string">"revolute",
axis=class="tok-string">"-Y",
range=(-0.20 * 180 / math.pi, 1.10 * 180 / math.pi),
)
return s3d.assembly(class="tok-string">"compact_ground_dish", pedestal, moving, reflector)
def pedestal_part():
return s3d.group(
class="tok-string">"pedestal",
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"base_plinth", s3d.rect(300, 260), 25, both=True), z=12.5),
class="tok-string">"plastic",
color=class="tok-string">"class="tok-comment">#6e737a",
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"pedestal_box", s3d.rect(240, 200), 280, both=True), z=165),
class="tok-string">"plastic",
color=class="tok-string">"class="tok-comment">#6e737a",
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"pedestal_collar", s3d.circle(180), 30, both=True), z=320),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#4d5259",
),
)
def top_plate_part():
return s3d.group(
class="tok-string">"top_plate",
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"bearing_drum", s3d.circle(170), 30, both=True), z=16),
class="tok-string">"rubber",
color=class="tok-string">"class="tok-comment">#141719",
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"rotating_plate", s3d.circle(220), 14, both=True), z=39),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#4d5259",
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"center_cap", s3d.circle(84), 16, both=True), z=47),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#242629",
),
)
def elevation_bracket_part():
dark = class="tok-string">"class="tok-comment">#4d5259"
return s3d.group(
class="tok-string">"elevation_bracket",
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"bracket_base", s3d.rect(130, 120), 50, both=True), x=-80, z=25),
class="tok-string">"steel",
color=dark,
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"center_mast", s3d.rect(55, 110), 180, both=True), x=-125, z=140),
class="tok-string">"steel",
color=dark,
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"rear_crosshead", s3d.rect(55, 560), 35, both=True), x=-125, z=200),
class="tok-string">"steel",
color=dark,
),
s3d.material(
s3d.at(
s3d.extrude(class="tok-string">"left_yoke_arm", s3d.rect(160, 50), 80, both=True), x=-60, y=287, z=200
),
class="tok-string">"steel",
color=dark,
),
s3d.material(
s3d.at(
s3d.extrude(class="tok-string">"right_yoke_arm", s3d.rect(160, 50), 80, both=True),
x=-60,
y=-287,
z=200,
),
class="tok-string">"steel",
color=dark,
),
beam(class="tok-string">"left_brace", (-95, 0, 50), (-100, 245, 160), 30),
beam(class="tok-string">"right_brace", (-95, 0, 50), (-100, -245, 160), 30),
)
def beam(name, a, b, t):
dx = b[0] - a[0]
dy = b[1] - a[1]
dz = b[2] - a[2]
length = math.sqrt(dx * dx + dy * dy + dz * dz)
mid = ((a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2)
yaw = math.degrees(math.atan2(dy, dx))
pitch = math.degrees(math.atan2(-dz, math.hypot(dx, dy)))
return s3d.material(
s3d.at(
s3d.extrude(name, s3d.rect(length, t), t, both=True),
x=mid[0],
y=mid[1],
z=mid[2],
ry=pitch,
rz=yaw,
),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#242629",
)
def reflector_part():
shell = s3d.revolve(
class="tok-string">"reflector_shell",
s3d.poly(
[
(28, -140),
(70, -126),
(165, -88),
(235, -38),
(260, 0),
(248, -10),
(218, -36),
(145, -82),
(50, -116),
(10, -124),
]
),
)
return s3d.group(
class="tok-string">"reflector",
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"trunnion_shaft", s3d.circle(28), 524, both=True), rx=90),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#242629",
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"hub_barrel", s3d.circle(110), 120, both=True), x=-10, ry=90),
class="tok-string">"steel",
color=class="tok-string">"class="tok-comment">#4d5259",
),
s3d.material(s3d.at(shell, x=170, ry=90), class="tok-string">"plastic", color=class="tok-string">"class="tok-comment">#e0e6eb"),
s3d.material(
beam(class="tok-string">"feed_support_arm", (10, 0, -30), (300, 0, 0), 16), class="tok-string">"steel", color=class="tok-string">"class="tok-comment">#242629"
),
s3d.material(
s3d.at(s3d.extrude(class="tok-string">"feed_horn", s3d.circle(44), 60, both=True), x=330, ry=90),
class="tok-string">"rubber",
color=class="tok-string">"class="tok-comment">#141719",
),
)🚀 Sand3D Modeling Engine: Open Interactive Sand3D Explorer Space ↗
Sandflow Sand3D Library; CC-BY-4.0
Hosted on Hugging Face: SZFSPC/techidaily-resourcesba1baf9d89ddf57433d7c47cb461f6d8883067a1
Revision: ba1baf9d89ddf57433d7c47cb461f6d8883067a1
licenseSHA-256:
commercialPermittedSHA-256:
notesSHA-256: