123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- import bpy
- import os
- blendpath = bpy.data.filepath
- folder = blendpath[:blendpath.rfind("/")]
- pf = folder[:folder.rfind("/rnd/")]
- print("BLENDPATH : ", blendpath)
- print("FOLDER : ", folder)
- print("PROJECT FOLDER : ", pf)
- if os.path.exists(folder+"/extra/autolink.data"):
- print("FOUND AUTOLINK.DATA YEY :)")
-
-
-
-
- df = open(folder+"/extra/autolink.data" , "r")
- df = df.read()
-
-
-
-
-
- movey = 0
- movex = 0
-
-
-
- mode = "link"
- for num, line in enumerate(df.split("\n")):
- if line.startswith("Mode : "):
- mode = line[7:]
-
-
-
-
- for num, line in enumerate(df.split("\n")):
- if line.startswith("Link : "):
-
-
-
-
-
- item = line[7:]
- print("\nLINKING ITEM : "+item)
-
-
-
-
-
- itemsdf = pf+item+"/autolink.data"
- if os.path.exists(itemsdf):
- print("FOUND "+item+"'S AUTOLINK.DATA :)")
-
-
-
- idf = open(itemsdf, "r")
- idf = idf.read()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- linkdata = []
- proxydata = []
-
- for iline in idf.split("\n"):
- if iline.startswith("Link : "):
- linkdata.append(iline[7:])
- elif iline.startswith("Proxy : "):
- proxydata.append(iline[8:])
-
- print("LINKDATA ", linkdata)
- print("PROXYDATA ", proxydata)
-
-
-
-
-
- astblend = pf+"/ast/"+item[5:]+".blend"
- print("AST BLEND : "+astblend)
-
-
- if os.path.exists(astblend):
- print("YAY FOUND THE BLENDFILE :)")
-
-
-
-
- for collection in linkdata:
-
-
-
- print("ATTEMPTING TO LINK : "+collection)
-
-
-
- try:
- with bpy.data.libraries.load(astblend, link=True) as (data_from, data_to):
- data_to.collections = [c for c in data_from.collections if c == collection]
-
- for num2, new_coll in enumerate(data_to.collections):
-
- print("TRYING LINKING ", new_coll.name)
-
- try:
- if new_coll.name:
- instance = bpy.data.objects.new(new_coll.name, None)
- instance.instance_type = 'COLLECTION'
- instance.instance_collection = new_coll
- bpy.context.scene.collection.objects.link(instance)
- if not item[5:].startswith("loc"):
- bpy.data.objects[collection].location[1] = movey
- bpy.data.objects[collection].location[0] = movex
-
-
-
- if proxydata and mode == "override":
-
-
-
-
-
- bpy.data.objects[collection].select_set(True)
- bpy.context.view_layer.objects.active = bpy.data.objects[collection]
- bpy.ops.object.make_override_library()
-
-
-
-
-
- if not item[5:].startswith("loc"):
- bpy.data.objects[proxydata[0]].location[1] = movey
- bpy.data.objects[proxydata[0]].location[0] = movex
-
-
-
-
-
-
-
- bpy.data.objects[proxydata[0]].hide_viewport = False
-
-
-
-
-
-
-
- movey = movey + bpy.data.objects[proxydata[0]].dimensions.y+1
- if movey > 25:
- movey = 0
- movex = movex + 5
-
- elif proxydata and mode == "proxy":
-
-
-
- for proxymake in proxydata:
- print("TRYING PROXING ", proxymake)
-
- try:
-
- ob = bpy.context.scene.objects[new_coll.name]
- ob.select_set(True)
- bpy.context.view_layer.objects.active = ob
- bpy.ops.object.proxy_make(object=proxymake)
- except Exception as e:
- print("PROXY FAILED ", proxymake)
- print(e, "ERROR IN PROXY")
-
- movey = movey + 5
- if movey > 25:
- movey = 0
- movex = movex + 5
-
- else:
-
-
-
-
-
-
- movey = movey + 5
- if movey > 25:
- movey = 0
- movex = movex + 5
-
-
-
-
-
-
- bpy.ops.file.make_paths_relative()
- bpy.ops.wm.save_mainfile()
-
-
-
-
-
-
-
- print("FRACTION:", (num+1)/len(df.split("\n")))
-
- except Exception as e:
- print(e, "ERROR IN LINING")
- except Exception as e:
- print(e, "ERROR IN GENERAL")
-
-
- else:
- print("NO BLENDFILE DOEN'T EXIST :(")
-
-
- else:
- print("NO "+item+"'S AUTOLINK.DATA :(")
-
-
- else:
- print("NO AUTOLINK.DATA SORRY :(")
- print("FINISHED")
|