Bonjour Gile, Un grand merci pour ton aide ! La formule est magnifiquement efficacement ! Le test est positif dans un dessin contenant uniquement un seul calque a traiter. Malheureusement j'obtient des erreurs de constructions (surface mal détectées) lorsque je travail sur un dessin avec de multiples calques (objets divers). J'ai filtré le calque concerné dans la boucle "foreach (ObjectId id in curSpace)" mais apparement cela ne suffit pas. As-tu une idée du problème ? Voici le code complété : (AutoCAD 2012 +)
Try
Dim db = HostApplicationServices.WorkingDatabase
Dim curveClass = RXClass.GetClass(GetType(Curve))
Using tr = db.TransactionManager.StartTransaction()
Dim curSpace = DirectCast(tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
Dim curves = New DBObjectCollection()
For Each id As ObjectId In curSpace
If id.ObjectClass.IsDerivedFrom(curveClass) Then
Dim curve = DirectCast(tr.GetObject(id, OpenMode.ForRead), Curve)
If curve.Layer = LayerName Then curves.Add(curve)
End If
Next
If curves.Count <> 0 Then
For Each dbObj As DBObject In Region.CreateFromCurves(curves)
Dim region1 = DirectCast(dbObj, Region)
region1.SetDatabaseDefaults()
curSpace.AppendEntity(region1)
tr.AddNewlyCreatedDBObject(region1, True)
Next
End If
tr.Commit()
End Using
Catch ex As Exception
MsgBox("CreateRegionsForAll : " & ex.Message)
End Try