Blender Game, line by coordinated file does not appear in the execution

Good afternoon people. I’m new to Blender and I have a problem, which I think is a simple solution, but I can not solve. Sorry if my question is too amateur for the group, but I really need help.

I have a quote by BlenderGame, I have an object that moves the read from a CSV coordinates. Until then all Ok.
This object has the data coordinate Desirable, and coordinate it performs by a PID control.
I would like to create a line or cylinder with coordinated that the object should perform. A reference line. I do this with Python code at runtime.
When I click on “P” and the Blender Game run the application, the line is created, but does not appear in the world. But when I give “ESC” to end execution, the line is there. But still it does not appear when I run.
It seems that it is not in the correct context.
From what I saw, I need to create the BGE API, but do not know the right way.

The code that creates the line via Python is this:


import os
import bpy

filename = 'posRef.csv'
directory = '/home/scholl/Dropbox/'  # <-- if you have linux or osx

fullpath = os.path.join(directory, filename)

with open(fullpath, 'r', newline='') as csvfile:

    # split every row at the comma,, 
    rows = (r.split(',') for r in csvfile if r)
    
    # then take the first 3 values and cast them as float
    #verts = [[print(type(float(i))) for i in r[:3]] for r in rows]
    verts = [[0,0,1],[1,0,1],[2,0,1],[3,0,1],[4,0,1],[5,0,1]]

if verts:

    out2 = []
    [out2.extend(list(i)+[0.0]) for i in verts] 

    # first coordinate is present by default, we add the (number of total verts) - 1
    num_points_to_add = len(verts) - 1
    curve = bpy.data.curves.new("TubesCurve", type='CURVE')
    curve.dimensions = '3D'
    curve.fill_mode = 'FULL'
    curve.bevel_depth = 0.1
    curve.bevel_resolution = 3
    
    polyline = curve.splines.new(type='POLY')
    polyline.points.add(num_points_to_add)
    
    # a flatterened list of [x1, y1, z1, x2, y2 .... y20, z20]
    print(out2)
    polyline.points.foreach_set('co', out2)

    obj = bpy.data.objects.new("mesh", curve)
    scene = bpy.context.scene
    scene.objects.link(obj)

I thank anyone who can guide me.
Hug.

Bpy does not work in BGE, you need to use the bge module.
and built your script around that.

so from ‘curve=’ nothing works.

#edit
here is an example of how to add an object into a scene and scale it from 1 point to another:
scale plane.blend (521 KB)

Hi Contax, Thanks for your time and your help.
I can create sphere objects with python, when early Blender Game?
Because I would create several sphere in the some coordinates and then trace the ray between them.
you can help-me?
Thank you very much.

https://pythonapi.upbge.fr/bge.render.html#bge.render.drawLine

You can draw lines in BGE with this. To draw a curve just draw several short lines. You could of course implement the same function using cylinders and addObject but that would be horribly slow and a lot of work.