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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отрисовка множественных штриховок разных типов и форм

Отрисовка множественных штриховок разных типов и форм

Ответ
Поиск в этой теме
Непрочитано 05.11.2017, 02:31 #1
Отрисовка множественных штриховок разных типов и форм
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 10,288

Этот текст предназначен как для программистов, так и для пользователей.
Мы вместе с SKKKK взялись решить такую задачу: необходимо нанести на чертеж много различных контуров штриховок. В качестве примера взят чертеж от архитекторов со штриховками различных видов, предназначенный для показа подвесных потолков. Разная высота потолков у них показана различными типами штриховок. На файле штриховки сделаны иногда небрежно, иногда состоят из фрагментов и не имеют контура.
Наша задача: скопировать штриховки на на свою подоснову и заменить их своими штриховками типа Dot и чтобы они получились бледными как на экране автокада (черном) так и на распечатке (обеспечивается стилем печати, за пределами решаемой задачи).
Файл будет использоваться как подоснова для электрического чертежа, на которую затем нанесут море разных электрических девайсов и паутину проводов.
Расширенная задача состоит в том чтобы можно было использовать параллельно несколько видов штриховок, для разных типов чертежей.

Описание работы программы:
Контур штриховки для полигональных помещений выполняется полилинией, причем на
предпоследней точке обхода контура она замыкается автоматом при нажатии Enter (или ПК).
Контур штриховки для прямоугольных помещений выполняется командой Rectangle, всего за два клика. Переход от полилинии к четырехугольнику происходит нажатием ПК при запросе первой точки полилинии. При завершении контура последний автоматически покрывается штриховкой.
В опциях для типа штриховки уже заданы две наиболее популярные, общего назначения, Solid и ANSI37. Для штриховки другого типа заложена опция SH (SHow dialog box). Выходит стандартное диалоговое окно где можно выбрать и настроить штриховку. Последняя используемая штриховка остается по умолчанию. По мере вызова других типов штриховок они добавляются в строке выбора.

В конце вызывается команда Erase, позволяющая удалить наложенную временно штриховку от архитектора, но это для моего частного случая, очевидно не нужная для общего пользования.

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

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

То есть, нет некоей чистоты работы этого фрагмента программы…

2. Хотелось бы запоминать и другой вариант уже используемой штриховки, например, с другим масштабом или углом наклона. К сожалению, сейчас проходится настраивать штриховку заново и первый ее вариант пропадает.

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

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

В приложении сам лисп и два файла чертежей. Первый - оригинальный от архитектора. На втором бОльшая часть цветных штриховок уже переложена на тип “DOT” при помощи этого лиспа, остальное оставлено для тех кто будет опробовать программу.

Vova и Skkkk

Вложения
Тип файла: lsp PL_HTCH v.3.0.lsp (6.0 Кб, 24 просмотров)
Тип файла: dwg
DWG 2010
A-855NS-2010.dwg (1.54 Мб, 20 просмотров)
Тип файла: dwg
DWG 2010
XA-255NS-2010.dwg (1.23 Мб, 17 просмотров)

Просмотров: 2335
 
Непрочитано 05.11.2017, 09:43
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Vova Посмотреть сообщение
сейчас проходится настраивать штриховку заново и первый ее вариант пропадает.
По моему, настройки хранятся в переменных HP*
Цитата:
Команда: _SETVAR
Имя переменной или [?]: ?

Список переменных для вывода <*>: hp*

HPANG 0
HPANNOTATIVE 0
HPASSOC 1
HPBOUND 1
HPBOUNDRETAIN 0
HPDOUBLE 0
HPDRAWORDER 3
HPGAPTOL 0.0000
HPINHERIT 0
HPISLANDDETECTION 1
HPISLANDDETECTIONMODE 1
HPMAXLINES 1000000
HPNAME "ANGLE"
HPOBJWARNING 10000
HPORIGIN 0.0000,0.0000
HPORIGINMODE 0
HPORIGINSTOREASDEFAULT 0
HPQUICKPREVTIMEOUT 2
HPSCALE 1.0000
HPSEPARATE 1
HPSPACE 1.0000
HPBACKGROUNDCOLOR "Нет"
HPCOLOR "работать с текущим"
HPDLGMODE 2
HPLASTPATTERN "ANGLE" (только чтение)
HPLAYER "работать с текущим"
HPMAXAREAS 100
HPQUICKPREVIEW Откл
HPRELATIVEPS Откл (только чтение)
HPTRANSPARENCY "работать с текущим"

Задать текущий образец "ANSI38"
Код:
[Выделить все]
(setvar "HPNAME" "ANSI38")
Задать текущий угол 30 градусов
Код:
[Выделить все]
(setvar "HPANG" (dtr 30))
dtr - degree to radian
Код:
[Выделить все]
(defun dtr (a)(* pi (/ a 180.0)))
Запоминать штриховки можно в словарях текущего чертежа, в ini или xml файле, в реестре

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от Vova Посмотреть сообщение
При вызове диалогового окна штриховок, хотя контур
штриховки выбран заранее, требуется его повторить нажатием на соответствующую кнопку в стандартном диалоговом окне. И только затем зажигается кнопка ОК. К тому-же остается активной и кнопка выбора контура путем клика внутри него что провоцирует её нажать. Это останавливает работу программы.
Если известны предварительные установки штриховок, то, на мой взгляд, лучше вызывать не hatch/bhatch, а версию командной строки _-bhatch и опциями задать нужные параметры
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 05.11.2017 в 09:51.
VVA вне форума  
 
Непрочитано 05.11.2017, 10:12
#3
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Vova, ты же знаешь, что точечная штриховка делает чертеж грязным и утяжеляет файл. Почему бы тебе не использовать сплошную заливку на прозрачных слоях? Или у тебя не только файлы, но и AutoCAD 2010?
Setvar вне форума  
 
Автор темы   Непрочитано 05.11.2017, 14:09
#4
Vova

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


Цитата:
Сообщение от Setvar Посмотреть сообщение
Vova, ты же знаешь, что точечная штриховка делает чертеж грязным и утяжеляет файл. Почему бы тебе не использовать сплошную заливку на прозрачных слоях? Или у тебя не только файлы, но и AutoCAD 2010?
Я тоже не люблю DOT, но в данной конкретной работе её ведущий инженер предпочитает точки. Что касается Solid то он опасен тем что может несанкционированно вылезти наверх и прикрыть собой нарисованное поверх. Поэтому, когда я веду похожую работу то предпочитаю ANSI37 с мелким масштабом. Обычно мы используем бледный (для черного экрана) цвет #250 который в наших стилях печати настроен всего на 7% интенсивности. Но для точек #250 слабоват и поэтому здесь применен #15, который поярче, 30% интенсивности. Чертеж не выглядет грязным.
Но для лиспа выбор штриховки не важен, можно настроить любую
Кстати, файлы чертежей настроены на английскую систему единиц...
Vova вне форума  
 
Непрочитано 05.11.2017, 15:00
#5
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Vova Посмотреть сообщение
Что касается Solid то он опасен тем что может несанкционированно вылезти наверх и прикрыть собой нарисованное поверх.
В случае использования прозрачности слоя это не является проблемой. Зато появляется возможность задания слоев в соответствии с отметками потолка и другие удобства, например, независимость интенсивности закраски от масштаба отображения на экране (зуммирования). Или отсутствие необходимости подбирать масштаб штриховки (занятие очень муторное). Но дело, как говорится, хозяйское, вернее, дело ведущего инженера.
Setvar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отрисовка множественных штриховок разных типов и форм

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение знака продольного усилия по длине колонны andrejjerdna Лира / Лира-САПР 18 06.06.2014 14:45
Количество учитываемых форм собственных колебаний. Сумма эффективных модальных масс, где посмотреть? SkyFly SCAD 4 03.06.2014 20:52
LISP: возможно ли выбрать через ssget рамкой объекты разных типов? cj_lex LISP 5 20.04.2012 10:54
Соединение 2 однопролётных плит через пилон в разных уровнях an247 Прочее. Архитектура и строительство 7 13.10.2005 15:43
подскажите как программно начертить линии разных типов Александер Программирование 4 30.06.2005 07:17