Форум Генпланистов
Civil, Autocad, GeoniCS, Credo, Lisp => По прикладным программам Autocad (Civil, GeoniCS, Credo и т.д.) => Тема начата: vargrah от 22 октября 2010, 17:02:59
программка написана знакомым.
одно время задолбало считать длины поребриков по каждому типу покрытий да и площади, когда участков подсчёта выходило от нескольких сотен до тысяч
команда _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
фактически данная штука может служить для выборки необходимой информации в любом тектовом файле