Is this correct?
namespace BCCDELWIPOUT { public class DraftingTools { [CommandMethod("BCC:WOUT")] public static void BCCDELETEWIPOUT() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId objId in bt) { BlockTableRecord btr = objId.GetObject(OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId btrObjId in btr) { Entity ent = btrObjId.GetObject(OpenMode.ForRead) as Entity; if (ent is Wipeout) { ent.UpgradeOpen(); { ent.Erase(); } } } } } tr.Commit(); } } }
Solved! Go to Solution.
Solved by Alexander.Rivilis. Go to Solution.
No,
Wipeout is nothing but closed lwpolyline
with number of verices more than 3 items,
with every bulged segments,
so you can check all these properties to make
sure if you select wipeout
@Hallex wrote:
Wipeout is nothing but closed lwpolylinewith number of verices more than 3 items,
with every bulged segments,
so you can check all these properties to make
sure if you select wipeout
Oleg! Are you sure??? Wipeout is Wipeout:
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Thanks Alexander. Don't think this was always exposed to the API, correct? Might be why the suggestion. I'm using 2012 Civil 3D... think it will work...
I just don't know the right way to collect the Wipeouts... as you can see in my code... I'm doing something wrong but not sure what. One thing is I don't think I have to ent.UpgradeOpen, I think I can just ent.erase but I'm crashing so there must be something else wrong.
@bcinnv wrote:
...Don't think this was always exposed to the API, correct?...
IMHO class Wipeout is exposed with AutoCAD .NET API since AutoCAD 2008.
bcinnv wrote:
I just don't know the right way to collect the Wipeouts... as you can see in my code... I'm doing something wrong but not sure what. One thing is I don't think I have to ent.UpgradeOpen, I think I can just ent.erase but I'm crashing so there must be something else wrong.
Try replace code:
using (tr) { //....... } tr.Commit();
with:
using (tr) { //....... tr.Commit(); }
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
I knew that thanks
But why this way it's not working this way?
(ssget "_X" '(( 0 . "wipeout")))
Thanks Alexander you were correct! The placement of the TR was the problem. Updated code below:
// delete wipeouts namespace BCCDELWIPOUT { public class DraftingTools { [CommandMethod("BCC:WOUT")] public static void BCCDELETEWIPOUT() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable; foreach (ObjectId objId in bt) { BlockTableRecord btr = objId.GetObject(OpenMode.ForWrite) as BlockTableRecord; foreach (ObjectId btrObjId in btr) { Entity ent = btrObjId.GetObject(OpenMode.ForWrite) as Entity; if (ent is Wipeout) { ent.Erase(); } } } tr.Commit(); } } } }
Thanks! That was the way I did it in Lisp. I have decided to convert 10 years of lisp routines I've collected / created into C#, somewhat to learn, but also because I like the better performance with .net. There is such little material about C# out there than there was .lsp it's considerably harder, but always enjoy a challenge 🙂
Thanks for the help Hallex! Always appreciated.
Can't find what you're looking for? Ask the community or share your knowledge.