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

Вернуться   Форум 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. Причина: добавление
Просмотров: 11492
 
Непрочитано 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,834
<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,701
Отправить сообщение для 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,839


Цитата:
Сообщение от Малявка Посмотреть сообщение
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
С.-Петербург
Сообщений: 40,450


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


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


Кулик Алексей aka kpblc, А в такой градиентной заливке теоретически только одна тоню-ю-сенькая линия белая, а соседние - уже не белые, а бледно-цветные, да-с! Вывод: во внимание не принимаем, считаем полностью. Что там у нас дальше? Фоновая заливка текста? Ой, а это что такое (извините)? А, поняла, это когда текст в стиле "arial" или подобных стилях. Мда, тупик. Но с другой стороны, таких текстов не так уж и много на чертеже. Хотя, чертеж чертежу рознь. Буду думать. А если придумаю, возьметесь за макрос?

p.s. Придумала! Офисный текст с плотностью 5 процентов - это шрифт "Times new roman"! Так что этот шрифт и "arial" можно считать пятипроцентными, а гостовские - трехпроцентными, вот!
Малявка вне форума  
 
Непрочитано 01.04.2011, 20:05
#22
Кулик Алексей aka kpblc
Moderator

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


Наш ответ Чемберлену - во вложении
Вложения
Тип файла: dwg
DWG 2007
Hatch_2007.dwg (83.2 Кб, 905 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.04.2011, 20:20
#23
Малявка


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


Кулик Алексей aka kpblc, ой, а как это делается? Первый раз вижу такое... Я про голубенькое. Ну так помогите, подумайте, как это обыграть! Я знаю, вы мастера вопросики подкидывать.

А градиентную заливку считать полностью! Ну, которое розовенькое.
Малявка вне форума  
 
Непрочитано 01.04.2011, 20:26
#24
Кулик Алексей aka kpblc
Moderator

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


Да очень просто - делается BackgroundMask на многострочник - и всех делов
Да, кстати, расширение предыдущего варианта Как считать будем?
P.S. Я ж не просто так шуткую, я сурьезно говорю (c). Когда народ "доходит" до принудительного форматирования многострочников, можно и не такое встретить!
Вложения
Тип файла: dwg
DWG 2007
Hatch_2007.dwg (82.7 Кб, 904 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.04.2011, 20:40
#25
Малявка


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


Кулик Алексей aka kpblc, Бог ты мой! Неужели попадаются дауны, делающие подобные извращения на серьезных чертежах! Честно - не встречала. А можно подобные извращения игнорировать в макросе? Или, наоборот, считать весь голубой прямоугольник закрашенным. (А чтоб заказчику впредь неповадно было такое вытворять!)

Последний раз редактировалось Малявка, 01.04.2011 в 20:52. Причина: добавление
Малявка вне форума  
 
Непрочитано 01.04.2011, 21:08
#26
Кулик Алексей aka kpblc
Moderator

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


Попадаются, попадаются... А если туда же еще добавить аннотативность, становится совсем некисло
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.04.2011, 21:37
#27
Малявка


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


Кулик Алексей aka kpblc, Я вижу, что, несмотря на массу других макросов, написанных по моей просьбе, Мастера ЛИСПа на этот раз упираются руками и ногами, как та устрица во вранцузском ресторане. Значит, действительно серьезная задача. Ладно. Спокойной ночи. Всем - снов разноцветных.
Малявка вне форума  
 
Непрочитано 02.04.2011, 01:49
#28
Vov.Ka


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


http://avpsoft.com/products/apfill/
Vov.Ka вне форума  
 
Непрочитано 02.04.2011, 02:32
#29
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
А что по вашему получится, после расчленения .... и текстов c гостовскими шрифтами?
Обращаю Малявкино и всей общественности внимание на эту ключевую фразу. Вы знаете меня как ярого борца с буквами по гост. Так вот, вам в конторе придется забыть о существовании государственного стандарта на буквы. И всем другим конторам, которые встанут перед трудным выбором между подсчетом краски и буквами по госту.
Напоминаю, несколько лет назад я предлагал типа конкурса по заполняемости чертежей. Поскольку надеялся победить, даже методику подсчета предлагал. Но увы, сейчас напрочь ее забыл.
Поскольку у нас еще 1 апреля смайлик не ставлю, и вообще не шучу
Vova вне форума  
 
Непрочитано 02.04.2011, 03:26
#30
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от Vova Посмотреть сообщение
Вы знаете меня как ярого борца с буквами по гост
Кстати, а в чем причина твоей ярости?
forMA вне форума  
 
Автор темы   Непрочитано 02.04.2011, 08:19
#31
Малявка


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


Vov.Ka, Программа интересная, жаль, не считает dwg. А при переводе dwg в pdf говорит, типа, библиотека "GPL..." не найдена. А выделение экрана считает по-разному, в зависимости от увеличения изображения на мониторе.
Малявка вне форума  
 
Непрочитано 02.04.2011, 11:53
#32
Vov.Ka


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


Цитата:
Сообщение от Малявка Посмотреть сообщение
Vov.Kaбиблиотека "GPL..." не найдена.
http://sourceforge.net/projects/ghos...0/gs900w32.exe
Vov.Ka вне форума  
 
Автор темы   Непрочитано 04.04.2011, 14:21
#33
Малявка


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


Vov.Ka, спасибо! Работает!
Малявка вне форума  
Ответ
Вернуться   Форум 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