Будто-бы получилось все сделать. Единственное, нужно добавить фильтр по стадиям помещений, если они у вас различаются.
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
W = IN[0]
L = IN[1]
a = IN[2]
b = IN[3]
c = IN[4]
d = IN[5]
pointX = IN[6]
pointY = IN[7]
pointZ = IN[8]
l1,i1 = [],[]
k = []
n = []
xlev = []
kkk = []
for l,w,pX in zip(L,W,pointX):
k1 = (l-c*2)//a #узнаём количество вставляемых семейств по х
if k1>0:
k2 = k1
n1 = (l-k2*a)/2 #новый отступ от стен
xlev1 = pX - l/2 + n1 #координата по Х первого вставляемого семейства
k.append(k2)
n.append(n1)
xlev.append(xlev1)
kn = range(1,int(k2)+1)
kkk.append(kn)
else:
k2 = 0
k.append(k2)
kn = range(1,int(k2)+1)
#kkk.append(kn)
listX,listY,listZ = [],[],[]
for kk,xl,y,z in zip(kkk,xlev,pointY,pointZ):
listX1,listY1,listZ1 = [],[],[]
for ks in kk:
xx = ks*a+xl
yy = y
zz = z
listX1.append(xx)
listY1.append(yy)
listZ1.append(zz)
listX.append(listX1)
listY.append(listY1)
listZ.append(listZ1)
OUT = listX,listY,listZ