import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReferenceToFileAndPath('C:\\Program Files\\Autodesk\\AutoCAD 2015\\Autodesk.AutoCAD.Interop')
from Autodesk.AutoCAD.Interop import *
from System import *
acadApp = AcadApplicationClass()
acadApp.Visible = True
restart = [0]
pgons = IN[1]
def dterm(vv): #Проверка компланарности векторов
return vv[0][0]*(vv[1][1]*vv[2][2] - vv[1][2]*vv[2][1]) - vv[0][1]*(vv[1][0]*vv[2][2] - vv[1][2]*vv[2][0]) +vv[0][2]*(vv[1][0]*vv[2][1] - vv[1][1]*vv[2][0])
def vctor(pts): #Построение трех векторов по четырем точкам
vv = []
for i in range(3):
vv.append([pts[1+i].X-pts[0].X, pts[1+i].Y-pts[0].Y, pts[1+i].Z-pts[0].Z])
return vv
for j in (pgons):
p = j.Points
if len(p) == 3:
p1C = Array[float]([p[0].X, p[0].Y, p[0].Z])
p2C = Array[float]([p[1].X, p[1].Y, p[1].Z])
p3C = Array[float]([p[2].X, p[2].Y, p[2].Z])
fac = acadApp.ActiveDocument.Database.ModelSpace.Add3DFace(p1C, p2C, p3C, p1C)
elif len(p) == 4 and round(dterm(vctor(p))) == 0:
p1C = Array[float]([p[0].X, p[0].Y, p[0].Z])
p2C = Array[float]([p[1].X, p[1].Y, p[1].Z])
p3C = Array[float]([p[2].X, p[2].Y, p[2].Z])
p4C = Array[float]([p[3].X, p[3].Y, p[3].Z])
fac = acadApp.ActiveDocument.Database.ModelSpace.Add3DFace(p1C, p2C, p3C, p4C)
elif len(p) == 4 and round(dterm(vctor(p))) != 0:
p1C = Array[float]([p[0].X, p[0].Y, p[0].Z])
p2C = Array[float]([p[1].X, p[1].Y, p[1].Z])
p3C = Array[float]([p[2].X, p[2].Y, p[2].Z])
p4C = Array[float]([p[3].X, p[3].Y, p[3].Z])
fac = acadApp.ActiveDocument.Database.ModelSpace.Add3DFace(p1C, p2C, p3C, p1C)
fac1 = acadApp.ActiveDocument.Database.ModelSpace.Add3DFace(p1C, p3C, p4C, p1C)
acadApp.ZoomExtents()
OUT = 0