| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен ЛИСП на расчет процентного заполнения чертежа краской

Нужен ЛИСП на расчет процентного заполнения чертежа краской

Ответ
Поиск в этой теме
Непрочитано 19.03.2011, 21:22 #1
Нужен ЛИСП на расчет процентного заполнения чертежа краской
Малявка
 
Егорьевск Моск.обл.
Регистрация: 28.02.2007
Сообщений: 206

Здравствуйте, уважаемые мастера ЛИСПа!

У нас в конторе зашел разговор о процентном заполнении краской чертежа. Как считать? Имеется ввиду совсем не это: (http://forum.dwg.ru/showthread.php?t=3544).
Нужно посчитать площадь, залитую краской, к площади всего листа (или, если в модели - к площади, ограниченной рамкой).

Обращаюсь к вам с просьбой: сочините макрос, пожалуйста, чтобы он запросил у пользователя указать ограничительную рамку (любой формы, не обязательно прямоугольник, возможно круг, эллипс, замкнутая полилиния и даже "облачко"), а затем внутри этой рамки перебрал бы все линии, штриховки, вставленные изображения, тексты, размерные линии, то есть всё, изображенное внутри выделенной рамки, у каждого высчитал бы его площадь и выдал бы результат в форме, о которой - в конце поста.

Я думаю, что возможно высчитать ЛИСПом, например, площадь отрезка, зная его длину и вес линии. Так же можно высчитать и площадь любой линии, даже площадь каждой линии в штриховке, зная стиль и масштаб штриховки.

Теперь о выдаче результата: хотелось бы, чтобы макрос выдавал результат в такой примерно форме:

Процент заполнения общий: 12,6
Процент заполнения цветом black: 10,4
Процент заполнения цветом magenta: 5,3
Процент заполнения цветом yellow: 1,4
Процент заполнения цветом blue: 6,8

Если, например, чертеж монохромный, то результат будет такой:

Процент заполнения общий: 12,6
Процент заполнения цветом black: 12,6
Процент заполнения цветом magenta: 0,0
Процент заполнения цветом yellow: 0,0
Процент заполнения цветом blue: 0,0

(Вижу трудность в подсчете площади составных цветов, где основные цвета представлены частично, например разные градации серого цвета, да любые градации любых цветов! Хотя здесь можно ориентироваться на числовые значения RGB.)

Спросите: зачем все это надо?
Для расчета стоимости конкретного чертежа при печати. Возникает много споров между заказчиком и исполнителем при определении стоимости за распечатку чертежей.

Спасибо.

p.s. работаю в основном в AutoCAD 2008, иногда в 2011

Последний раз редактировалось Малявка, 19.03.2011 в 21:57. Причина: добавление
Просмотров: 10893
 
Непрочитано 19.03.2011, 21:30
#2
Евгений Д.

PROrab
 
Регистрация: 11.10.2009
Stavropol
Сообщений: 360
<phrase 1=


есть на принтерах некоторых такая опция
(мне в универе стоимость распечатки расчитывают так)
А без лиспа есть какая нибудь прога??? А то в лиспах ваще не шарю!
Евгений Д. вне форума  
 
Непрочитано 19.03.2011, 21:33
#3
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Надо дождаться появления в теме Евгения Елпанова.
Думаю, что эта задача - частный случай его реализованного проекта.
http://elpanov.com/index.php?id=38#top
Ну или сами обратитесь к нему...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 20.03.2011, 10:26
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Задача непростая в общем случае. Как я понял, чертежи приносят на печать разные люди, значит, в этих чертежах возможно все - нужно будет предусмотреть массу возможных вариантов, программу нужно будет неоднократно дорабатывать.
Сложностей мне видится масса! Например: объекты внутри блоков, внешних ссылок, тексты и мультитексты в зависимости от шрифта и его настроек, мультивыноски, таблицы, нестандартные штриховки... В общем каждый тип примитива автокада нужно рассматривать отдельно и тщательно.
В общем - то еще удовольствие
Наглядное представление о процессе написания и отладки программы подобного типа можно получить, посмотрев тему "Поиск и замена русских букв на чертеже".
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 20.03.2011, 13:19
#5
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


пиши в растр и считай пиксели
Vov.Ka вне форума  
 
Непрочитано 22.03.2011, 14:05
#6
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


задача, как я вижу, чисто полиграфическая...
Решается, она так же просто, без дополнительной автоматизации.
1. берем любой растр
2. открываем его в фотошопе или другом редакторе поддерживающем нужные функции
3. уменьшаем изображение до одного пиксела
4. смотрим цветовую составляющую этого пиксела в нужном цветовом профиле, обычно полиграфисты смотрят в смик


там будет как раз то, что вы просите...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 23.03.2011, 15:06
#7
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Цитата:
1. берем любой растр
Нет, речь идет не о растрах, а о векторе, о чертежах dwg.
Надо подсчитать, какая площадь будет закрашена плоттером от всей площади выделенной рамки. Ну, процент то есть. Ладно, пусть не по цветам, а общая закраска.
Малявка вне форума  
 
Непрочитано 23.03.2011, 15:24
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


попробую объяснить еще раз - для начала нужно растеризовать чертеж, т.е нужно вычислить площадь каждой линии, каждого текста, штриховок итд, относительно фона. Можно проделать такую задачу и без использования растровых файлов, но именно растровые файлы дадут максимально точное значение и можно использовать уже готовые программы для получения информации. Если бы вопрос стоял о простых примитивах, то можно было бы и заняться, а если решать в общем случае, т.е делать расчеты отношений фон - краска для любых типов шрифтов, для вставленных в чертеж картинок, для тонированных объектов или градиентных штриховок, то я не рекомендую это делать самим, тем более, что эта часть задачи решается стандартными методами...


> Нет, речь идет не о растрах, а о векторе, о чертежах dwg.
так тебе и говорят, что можно создавать растровые файлы из чертежей, т.е печатать в растровый файл...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 25.03.2011, 10:04
#9
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Поняла, большое спасибо!
Порылась в интернете - там море разных программ под мою проблему. Буду разбираться на форумах Photoshop, CorelDraw и других.

p.s. И все равно досадно, что нет такого лиспика, чтобы без лишних телодвижений узнать хотя бы просто процент заполнения без указания цвета.
Малявка вне форума  
 
Непрочитано 25.03.2011, 10:18
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Малявка Посмотреть сообщение
p.s. И все равно досадно, что нет такого лиспика, чтобы без лишних телодвижений узнать хотя бы просто процент заполнения без указания цвета.
"Лиспик" - по данному методу будет считать точки "адски" долго, но вполне можно сделать не Net, либо если не хотите привязыватся к версии связку из lisp и внешнего com/exe модуля (лисп печатает - в растр - внешнея "прожка" считает пиксели с учетом их "закрашенности").
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.03.2011, 11:08
#11
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


По теме:
Проверил, в акаде возможно добавить растровый принтер с размером бумаги 1х1 пиксел, жаль только, что цвет полученного пиксела, автокад не верно вычисляет...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 30.03.2011, 21:06
#12
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


"Объекты в блоках, тексты, штриховки... тот еще геморрой" .
ОК, а нельзя тупо взорвать (расчленить) все блоки и штриховки на чертеже, оставив примитивы в неприкосновенности, а потом ЛИСПом тупо перебрать все элементы? Я имею ввиду, пересчитать их площадь, исходя из длины и веса каждого элемента.
И - можно без учета цвета, можно все считать черным.
Малявка вне форума  
 
Непрочитано 30.03.2011, 21:24
#13
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


ну как бы тебе объяснить на пальцах, что у отрезка нет площади, а когда он печатается на принтере краска на отрезок тратится, значит площадь все таки есть, такая вот хитрая штука этот автокад, площади нет а она на самом деле есть
Sleekka вне форума  
 
Непрочитано 30.03.2011, 22:41
#14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Offtop: Как посчитать количество кликов на создание чертежа?
gomer вне форума  
 
Автор темы   Непрочитано 30.03.2011, 22:49
#15
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Sleekka, Да, у отрезка площади нет, но ведь можно ЛИСПом задать ширину отрезка, исходя из его веса? Например, задать, что отрезок весом от 0 до 0,15мм имеет ширину 1 пиксель, от 0,16, до 0,25мм - 2 пикселя и т.д. Ту же ботву применить к полилинии, исходя из ее глобальной ширины.

gomer, интересная мысль! Существуют программы, подсчитывающие пробег курсора. Надо полазить по инету насчет кликов. Может пригодиться при оценке мастерства чертежников, рисующих одинаковые чертежи, как дополнительный критерий ко времени, затраченному на чертеж. А может и ЛИСПом можно состряпать.

Последний раз редактировалось Малявка, 30.03.2011 в 23:19. Причина: добавление
Малявка вне форума  
 
Автор темы   Непрочитано 01.04.2011, 16:27
#16
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Придумала!
Значит, алгоритм такой:
Сперва цикл по условию - пока остаются блоки, ищем все блоки, взрываем их. Так как вложениями блоков тоже могут быть блоки. Причем получившиеся примитивы уже не трогаем.

Потом взрываем все штриховки и тексты.

А потом, когда остались одни примитивы - считаем их площадь.
Кстати, вес примитива уже задан в мм. А ширину полилиний берем из глобальной ширины.
Мастера, миленькие, кто поможет? По цветам разделять не надо, считаем всё стадом, как будто чертеж монохромный.

p.s. если есть проблемы с анализом внешних ссылок, тоже не трогайте их, они у нас редко бывают. В крайнем случае я их тупо скопирую в основной чертеж и делов-то!
Малявка вне форума  
 
Непрочитано 01.04.2011, 17:27
#17
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Малявка Посмотреть сообщение
Потом взрываем все штриховки и тексты.
А что по вашему получится, после расчленения градиентных штриховок и текстов гостовскими шрифтами?
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 01.04.2011, 17:52
#18
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


С первым апреля!
gomer вне форума  
 
Автор темы   Непрочитано 01.04.2011, 19:20
#19
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Елпанов Евгений, штриховки "градиент" и "solid" не трогаем, считаем всю площадь таких штриховок, ведь они закрашивают лист на все сто. Я не имею ввиду количество чернил на светлую и темную градиентную заливку, я имею ввиду, что градиентная заливка не имеет чистого пространства, белого листа. Поэтому и считаем полностью.
А тексты - ну, можно, наверно не расчленять, а вычислять сразу всю площадь прямоугольника с текстом (словом, фразой), и считать, например, эту площадь закрашенной на пять процентов, как обычный офисный документ.
По-моему, это выход.
Ну, как оцениваете "женскую логику" блондинки от автокада?
Малявка вне форума  
 
Непрочитано 01.04.2011, 19:31
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Цитата:
Сообщение от Малявка Посмотреть сообщение
градиентная заливка не имеет чистого пространства, белого листа
Да ну??? А я вот возьму да сделаю градиентную заливку, один из цветов которой будет чисто белый - и чего тогда получается?
Цитата:
Сообщение от Малявка Посмотреть сообщение
<...>вычислять сразу всю площадь прямоугольника с текстом (словом, фразой), и считать, например, эту площадь закрашенной на пять процентов, как обычный офисный документ.
А как бы еще по ходу дела учесть фоновую заливку текста?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен ЛИСП на расчет процентного заполнения чертежа краской

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каких случаях нужен нелинейный расчет? dlyareg Конструкции зданий и сооружений 6 13.02.2021 18:03
Нужен лисп: открытие всех файлов в данной директории Torino LISP 30 28.11.2020 15:51
Коэффициент заполнения чертежа Stronger Прочее. Архитектура и строительство 7 29.06.2005 11:57
Нужен ЛИСП для назначения определенных параметров Александер LISP 3 20.06.2005 10:37
Нужен лисп: минимальное расстояние до объекта по перпендикул Torino LISP 1 13.05.2005 15:51