Assuming it’s a single file without separator…
["a0",1.0,-1.0,-1.0],
["a1",1.0,-1.0,1.0],
["a2",-1.0,-1.0,-1.0],
["a3",-1.0,-1.0,1.0],
["a4",1.0,1.0,-1.0],
["a5",1.0,1.0,1.0],
["a6",-1.0,1.0,-1.0],
["a7",-1.0,1.0,1.0],
["a4","a0"],
["a4","a6"],
["a4","a5"],
["a0","a2"],
["a0","a1"],
["a2","a6"],
["a2","a3"],
["a6","a7"],
["a5","a1"],
["a5","a7"],
["a1","a3"],
["a3","a7"],
… here’s a script based on the Import templates found in Text editor:
import bpy
def read_some_data(context, filepath):
verts = []
edges = []
with open(filepath, 'r') as file:
for line in file:
s = line.strip("[],
").split(",")
if len(s) == 4:
verts.append(map(float, s[1:]))
else:
edges.append((int(s[0][2:-1]), int(s[1][2:-1])))
me = bpy.data.meshes.new("Imported")
me.from_pydata(verts, edges, [])
me.validate()
me.update()
ob = bpy.data.objects.new("Imported", me)
context.scene.objects.link(ob)
context.scene.update()
return {'FINISHED'}
# ImportHelper is a helper class, defines filename and
# invoke() function which calls the file selector.
from bpy_extras.io_utils import ImportHelper
from bpy.props import StringProperty, BoolProperty, EnumProperty
from bpy.types import Operator
class ImportSomeData(Operator, ImportHelper):
"""This appears in the tooltip of the operator and in the generated docs"""
bl_idname = "import_test.some_data" # important since its how bpy.ops.import_test.some_data is constructed
bl_label = "Import Some Data"
# ImportHelper mixin class uses this
filename_ext = ".txt"
filter_glob = StringProperty(
default="*.txt",
options={'HIDDEN'},
)
def execute(self, context):
return read_some_data(context, self.filepath)
# Only needed if you want to add into a dynamic menu
def menu_func_import(self, context):
self.layout.operator(ImportSomeData.bl_idname, text="Text Import Operator")
def register():
bpy.utils.register_class(ImportSomeData)
bpy.types.INFO_MT_file_import.append(menu_func_import)
def unregister():
bpy.utils.unregister_class(ImportSomeData)
bpy.types.INFO_MT_file_import.remove(menu_func_import)
if __name__ == "__main__":
register()