Bonjour,
Je cherche à récupérer les coordonnées(X,Y,Z) de chaque point d'un nuage de points.
J'ai tenté de réaliser un programme qui fait cette commande mais en vain. Le compte de point nuageinst.count est toujours égal à 0.
J'ai trouvé ce "filtre" sur le guide de l'API de Revit.
Code:
Déclaration de l'éxécute Dim nuage As PointCloudType
Dim nuageinst As PointCloudInstance
Dim nuagecollec As PointCollection
Dim points As CloudPoint
Const nbpoints As Integer = 999999
Const distmoy As Double = 0.001
Dim count As Integer
nuage = PointCloudType.Create(doc, "rcs", "C:\nuage.rcs")
nuageinst = PointCloudInstance.Create(doc, nuage.Id, Transform.Identity)
t.Commit()
'Filtre
Dim app As Application = uidoc.Application.Application
Dim currentSel As Selection = uidoc.Selection
Dim pickedBox As PickedBox = currentSel.PickBox(PickBoxStyle.Enclosing, "Selectionne le nuage.")
Dim min As XYZ = pickedBox.Min
Dim max As XYZ = pickedBox.Max
Dim view As View = uidoc.ActiveView
Dim right As XYZ = view.RightDirection
Dim up As XYZ = view.UpDirection
Dim planes As List(Of Plane) = New List(Of Plane)
Dim directionCorrect As Boolean = IsPointAbovePlane(right, min, max)
planes.Add(app.Create.NewPlane(right, If(directionCorrect, min, max)))
planes.Add(app.Create.NewPlane((right * -1), If(directionCorrect, min, max)))
directionCorrect = IsPointAbovePlane(up, min, max)
planes.Add(app.Create.NewPlane(up, If(directionCorrect, min, max)))
planes.Add(app.Create.NewPlane((up * -1), If(directionCorrect, min, max)))
Dim filter As PointCloudFilter = PointCloudFilterFactory.CreateMultiPlaneFilter(planes)
Dim tr As Transaction = New Transaction(uidoc.Document, "Highlight")
tr.Start()
nuageinst.SetSelectionFilter(filter)
nuageinst.FilterAction = SelectionFilterAction.Highlight
tr.Commit()
uidoc.RefreshActiveView()
nuagecollec = nuageinst.GetPoints(filter, distmoy, nbpoints)
count = nuagecollec.Count
Est-ce que vous pouvez m'éclairer sur l'erreur que je peux faire ?
En vous remerciant,