.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to remove entity from BlockTableRecord ?

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
AubelecBE
2166 Views, 2 Replies

How to remove entity from BlockTableRecord ?

....
'Gestion Bloc en mémoire
            Dim BlocSpace As BlockTable         'Coll des BlockDef en ModelSpace
            Dim BlocDef As BlockTableRecord     'Def du bloc
            Try
                tr = db.TransactionManager.StartTransaction()

                BlocSpace = tr.GetObject(db.BlockTableId, OpenMode.ForRead)
                If BlocSpace.Has(Tableau.NomBlocDessin) = False Then
                    'création d'un nouveau Def
                    BlocDef = New BlockTableRecord
                    BlocDef.Name = Tableau.NomBlocDessin
                    'Open.ForWrite
                    BlocSpace.UpgradeOpen()
                    'Ajout à la base et mémorisation de l'ID pour l'add sur le dessin
                    ' blocref = new blockreference(point3d,id)
                    Dim BlocDefId As ObjectId = BlocSpace.Add(BlocDef)
                    'Ajout au dessin
                    tr.AddNewlyCreatedDBObject(BlocDef, True)
                Else
                    'récupération de la def.
                    BlocDef = tr.GetObject(BlocSpace.Item(Tableau.NomBlocDessin), OpenMode.ForWrite)
                    'suppression de tous les élements dans la def.
                End If
            Catch ex As Exception
                MsgBox(ex.ToString, vbOKOnly, "Erreur système dans ClassFichier.CréationTableau")

            Finally
                tr.Commit()
                tr.Dispose()
            End Try
....

 

now i have a BlockTableRecord in car BlocDef.

How i can delete all entity in this ?

I want to create a new order in the blocdef but i dont want delete the Blockreference. so i dont 'purge'

 

Thx.

2 REPLIES 2
Message 2 of 3
_gile
in reply to: AubelecBE

Hi,

You can iterate the BlockTableRecord, open each entity and erase it.

 

Salut,

Tu peux parcourir le BloctTableRecord ouvrir chaque entité et l'effacer.

 

foreach (ObjectId id in BlocDef)

{

    Entity ent = (Entity)tr.GetObject(id, OpenMode.ForWrite);

    ent.erase();

}



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 of 3
AubelecBE
in reply to: _gile

ah ok Thanks i have to try it tomorrow.

 

If i delete all BlockReference and purge the DefBloc: it is much fast no ?

 

 

 

 

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost