Считалка длин и площадей для AutoCAD и не только

Автор vargrah, 22 октября 2010, 17:02:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

vargrah

программка написана знакомым.
одно время задолбало считать длины поребриков по каждому типу покрытий да и площади, когда участков подсчёта выходило от нескольких сотен до тысяч


команда _list выдаёт всю нужную инфу в виде:


HATCH     Слой: "Штрих Газон"
                            Пространство: Пространство модели
Масштаб типа линий =      5000
                        Метка = 35835
                 Образец штриховки GRASS
                 Аннотативный: Нет
                 Масштаб штриховки       500
                 Угол наклона штриховки      0
                 Неассоциативная
                 Площадь      89258754
                 Исходная точка    X=        0  Y=        0  Z=        0


                  HATCH     Слой: "Штрих Газон"
                            Пространство: Пространство модели
Масштаб типа линий =      5000
                        Метка = 35830
                 Образец штриховки GRASS
                 Аннотативный: Нет
                 Масштаб штриховки       500
                 Угол наклона штриховки      0
                 Неассоциативная
                 Площадь      78527483
                 Исходная точка    X=        0  Y=        0  Z=        0

выборку вручную делать муторно и легко ошибиться.


в архиве находится несколько файлов.
нас интересуют 3 из них:
data.txt - в него копируем всю белеберду, выданную командой лист. сохраняем!!!!
dlina.bat - следующим этапом запускаем двойным кликом этот бат.
data_out.txt - тут сохраняются результаты в виде:


s=128953101

l=15497
p=89258

где
s - площадь объекта
l - длина
p - периметр


копируем. вставляем в эксель. Ctrl + H - заменить S= или P= или L= на пробел - данные готовы к обработке.
предварительно желательно отсортировать данные по имени.


особенность - данный вариант предназначен для русифицированного автокада. т.е. все параметры впри команде "лист" выдавались по русски: "дляна, площадь, периметр"
для пользования англоязычных версий открываем dlina.bat из блокнота
получаем:


@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!/perl
#line 15


open(DATI, '<data.txt') || die "Файл не найден!";
open(DATO, '>data_out.txt') || die "Файл не найден!";


@FF = <DATI>;


foreach (@FF)
    {
     $a = $_;
     if (/Длина/gi || /длина/gi)
       {
        $a =~ /(\d+)/;
        print DATO "l=".$1."\n";
       }
     if (/площадь/gi || /Площадь/gi)
       {
        $a =~ /(\d+)/;
        print DATO "s=".$1."\n";
       }
     if (/периметр/gi)
       {
        $a =~ /(\d+)/;
        print DATO "p=".$1."\n";
       }
     }


close (DATO);
close (DATI);




__END__
:endofperl

где и заменяем русские названия на английские или дописываем свои параметры, которые хотим выбрать.


ps
числовые параметры программкой выбираются до запятой или точки. т.е. округление в меньшую сторону!
поэтому желательно отмасштабировать группу объектов перед "выборкой данных"
в экселе потом всё приводится в нужный вид делением результата (суммы по столбцу) на 1000 (длины) или 1000000 (площади) в случае черчения в миллиметрах или в соответствии с проведенным масштабированием.


pps
- изменение названий фалов недопустимо.
- расположение - в одной общей папке
- место расположения папки и её название не имеет значения

Post Merge: 22 октября 2010, 17:05:54

фактически данная штука может служить для выборки необходимой информации в любом тектовом файле
Как говорила моя наставница: "Если у инженера появилось свободное время - это повод перечитать нормативы!"