[solved] How test and manipulate family instance by id?

partial auto-reply :
for change the position of an instance, must make subtraction, add lot of stuff at the begin of code, an be careful of #%@µ! conversion feet/meter :

import clr
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
from Revit.Elements import *
clr.AddReference('System')
from System.Collections.Generic import *
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
# Les entrées effectuées dans ce noeud sont stockées sous forme de liste dans les variables IN.
dataEnteringNode = IN

# Placer votre code au-dessous de cette ligne

destination = XYZ(0, 0, 0)
ret= []
for element in IN[0] :
	id=element.Id
	position=element.Location
	posx=element.Location.X
	posy=element.Location.Y
	desx=destination.X - posx
	desy=destination.Y - posy
	dest= XYZ(desx/304.8, desy/304.8, 0)
	az=element.FacingOrientation
	ret.append([id , position ,desx,desy, az])
	TransactionManager.Instance.EnsureInTransaction(doc)
	moveditems = ElementTransformUtils.MoveElement(doc, ElementId(id), dest)
	TransactionManager.Instance.TransactionTaskDone()

# Affectez la sortie à la variable OUT.
OUT = ret
1 Like