Nie ufajcie Visual Studio! (AutoCAD .NET API)

maj 25th, 2011. Brak komentarzy.
Kategorie: AutoCAD, C#, Zabawy z kodem.

Visual Studio to genialne narzędzie. Serio, bez sarkazmu. Interfejs jest przyjemny, działa w miarę szybko, a IntelliSense to cud świata informatyki. Wszędzie podpowiadanie, podkreślanie błędów, wszystko czego trzeba!

Czasem aż za dużo :)

Tak wyszło, że zabrałem się za programowanie AutoCADa w C#. Po przerobieniu tutoriala przeniosłem rozrywkę na inny poziom. W pewnym momencie, korzystając z dostępnych źródeł, bawiłem się wstawianiem tabelki do rysunku. Bardziej – próbowałem wstawić tabelkę.

Kean Walmsley na swoim blogu podaje parę przepisów tabelkowych. Zacznijmy od tego, że utworzenie nowej tabelki wstawia ją z jednym wierszem i jedną kolumną. W związku z tym próba wpisania coś do nieistniejącej komórki (w dalszej kolumnie/wierszu) zaowocuje rzuceniem wyjątku.

Postępując więc zgodnie z radami Keana, postanowiłem nadać tabelce ilość kolumn i wierszy:

Table tb = new Table();
tb.NumRows = Y;
tb.NumColumns = X;

Ledwo napisałem ten kod, VS podpowiedziało mi, że nie powinienem tego robić, szybkim warningiem:

‘Autodesk.AutoCAD.DatabaseServices.Table.NumRows’ is obsolete: ‘”Use Table.Rows.Count instead.”‘
‘Autodesk.AutoCAD.DatabaseServices.Table.NumColumns’ is obsolete: ‘”Use Table.Columns.Count instead.”‘

Co tu robić, zmieniamy:

tb.Rows.Count = Y;
tb.Columns.Count = X;

Dobrze? ŹLE! Teraz VS już nie ostrzega – teraz rzuca błędem:

Property or indexer ‘Autodesk.AutoCAD.DatabaseServices.RowsCollection.Count’ cannot be assigned to — it is read only
Property or indexer ‘Autodesk.AutoCAD.DatabaseServices.ColumnsCollection.Count’ cannot be assigned to — it is read only

Może i sprawa nie zasługuje na osobny wpis, ale nie mam zamiaru się zrażać. Morał z tego taki, że nie należy ślepo ufać, że VS rozwiąże za nas wszystkie problemy. Chociaż rozwiąże wiele.
A na dokładkę powiem, że ten pierwszy, “przestarzały” kod działa absolutnie prawidłowo :)

Skomentuj: