30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import sys
|
|
import bpy
|
|
|
|
def main(output):
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
legacy = bpy.data.curves.new("WebGapCurvesSeed", "CURVE")
|
|
legacy.dimensions = "3D"
|
|
spline = legacy.splines.new("BEZIER")
|
|
spline.bezier_points.add(3)
|
|
for point, co in zip(spline.bezier_points, ((-1.5, 0, 0), (-0.5, 0.3, 0.5), (0.5, 0, 0), (1.5, 0.3, 0.5))):
|
|
point.co = co
|
|
point.handle_left_type = "AUTO"
|
|
point.handle_right_type = "AUTO"
|
|
object_ = bpy.data.objects.new("WebGapCurvesObject", legacy)
|
|
bpy.context.collection.objects.link(object_)
|
|
bpy.context.view_layer.objects.active = object_
|
|
object_.select_set(True)
|
|
bpy.ops.object.convert(target="CURVES")
|
|
if legacy != object_.data: bpy.data.curves.remove(legacy, do_unlink=True)
|
|
object_.data.name = "WebGapCurves"
|
|
radius = object_.data.attributes.get("radius") or object_.data.attributes.new("radius", "FLOAT", "POINT")
|
|
for index, item in enumerate(radius.data): item.value = 0.03 + index * 0.005
|
|
bpy.ops.wm.save_as_mainfile(filepath=output, compress=True)
|
|
|
|
if __name__ == "__main__":
|
|
args = sys.argv[sys.argv.index("--") + 1:]
|
|
if len(args) != 1: raise SystemExit("usage: blender -b --python generate-curves-fixture.py -- OUTPUT")
|
|
main(args[0])
|