|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Подобие прямоугольников по X, Y
Регистрация: 18.12.2008
Сообщений: 23
|
||
Просмотров: 6657
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
_.move с установленной orthomode = 1
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Ок, строим полилинию по коду:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 18.12.2008
Сообщений: 23
|
Выполняю мон. пояс по арх. плану. обрисовал все проёмы прямоугольниками. Для того чтобы нанести зоны армирования поперечной арматурой с иным шагом надо увеличить мне прямоугольники на 250 в данном случае по стене в обе стороны (в направлении X для проёмов расположенных горизонтально на плане, в направлении Y для проёмов расположенных вертикально на плане.
Раньше просто офсетил все проёмы и вручную их редактировал командой растянуть. Но сейчас проёмов ОЧЕНЬ много, вот и решил написать сюда, может кто поможет. С лиспом не дружу, только юзаю), так что на вопросы программирования врядли отвечу. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
ИМХО, если Вы сами писать ничего не будете и Вам нужен готовый инструмент, то надо было писать не в эту ветку, а сюда: http://forum.dwg.ru/forumdisplay.php?f=33
ЗЫ. На самом деле Вам бы изменить подход и не отрисовывать прямоугольники, а вставлять соответствующий динамический блок, в котором в одном из видов добавить растяжение на 250 в нужные стороны... ЗЗЫ. Где то на форуме был лисп по замене прямоугольников на дин блоки... не так давно проскакивала эта тема... |
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Вот на например на VBA. Хватает первый попавшийся ортогональный прямоугольник:
Код:
Offtop: ps. Код на выполнение запускал 1 раз.. И был выполнен по методу чукчи.. что вижу то и пою.. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
SSTRESS, я бы, может, и смог помочь, написать лисп, но, во-первых, быстро не обещаю, поскольку много работы, а во-вторых, нужна более развернутая постановка задачи.
1. Каковы критерии отбора? Эти прямоугольники на отдельном слое? Или выбирать нужно мышкой по одному? 2. Я так понял, что нужно удлинять прямоугольник всегда по длинной стороне, т.е., ширина проема всегда больше толщины стены или нет? 3. Смещение в 250 - это фиксированная величина или ее лучше спросить у пользователя? А может, нужно будет укорачивать прямоугольники? 4. Нужно ли после возвращать размеры проемов к начальным значениям? В таком случае, может, стоит создавать на новом временном слое копии прямоугольников и растягивать их, а затем новый слой удалять? |
|||
![]() |
|
||||
Регистрация: 18.12.2008
Сообщений: 23
|
Цитата:
2. Так точно. 3. Лучше будет так как вы говорите, может кто-то применит этот лисп под себя. 4. Не знаю как правильно это делается, но для меня лучше было бы старые прямоугольники переносить на слой Defpoints, а новые - оставлять на текущем слое. Или же старые просто удалить(но это не желательно). Если есть возможность штриховки новых прямоугольников, то в конце спросить штриховать или нет. У меня ACad2006 sp1, WindowsXP sp3 если что. Спасибо Вам! Буду ждать. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
То есть, выбор объектов осуществляться будет до запуска команды? Например, при помощи _QSELECT или _LAYISO? И все предварительно выбранные прямоугольники удлинятся по длинной стороне? А если перед запуском команды объекты не выбраны, то будет предложено выбирать по одному? Или скопом? А полилинии-прямоугольники все замкнутые или нет? А если нет, то точно ли совпадают их крайние точки? Какой командой они были построены? Лучше бы приложить файл с примером.
Цитата:
Цитата:
Цитата:
В общем, вопросов много, лучше все сразу продумать. По пунктам расписать каждый шаг, примерно так: 1. Если объекты уже выбраны, то программа: - удлиняет каждый из подходящих под критерии объектов (прямоугольников на слое "...") - спрашивает, штриховать ли, если да, то штрихует все удлиненные.....Какой-то штриховкой.... ну и так далее. Последний раз редактировалось skkkk, 13.10.2014 в 16:12. |
|||
![]() |
|
||||
Регистрация: 18.12.2008
Сообщений: 23
|
Цитата:
Все полилинии-замкнутые прямоугольники построены командой_rectang, крайние точки совпадают. На счёт величины смещения согласен. Но при отрицательным "невозможном" значении, что делать?Ввести его заново или вылет команды?Ведь допустимое отрицательное значение будет отсчитываться от центра фигуры или середины длинной стороны до его меньшей стороны, потому как строить фигуры в отрицательном направлении будет не совсем практично, имхо. На счёт слоёв, я уже писал, как мне будет лучше, но на какой слой будут перенесены старые прямоугольники для меня не столь важно. Можно задать вопрос оставить их или нет. Если да, то на слой "0" допустим либо новый независимо, главное что б отличался. На счёт штриховки, задать в конце вопрос штриховать удлинённые или нет. "Нет" - просто отрисовывает новыё прямоугольники, "Да" штрихует некоторым образцом (если возможно реализовать выбор образца будет круто). Как то так. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Вот набросал кое-что на скорую руку. Черновой, так сказать, вариант. Программа позволяет выбрать и обрабатывает только замкнутые полилинии с четырьмя вершинами. Добавил вначале проверку на "прямоугольность" отсюда (спасибо Эдуарду), но в приложенном файле эта проверка отсеяла добрую часть прямоугольников, углы у которых почему-то оказались 89.9999999 градусов, поэтому я решил эту проверку пока снести. Программа создает в текущем слое копии указанных четырехугольников (приближенных к прямоугольникам), удлиненные по длинным сторонам. С квадратами и четырехугольниками, сильно отличающимися от прямоугольника, программа работает непредсказуемо. После программа задаст вопрос "Штриховать?", и в случае положительного ответа выдаст окно Штриховка. В этом окне нужно нажать кнопку Добавить: выбрать объекты, и программа "подсунет" в ответ на запрос только что созданные объекты. Снова само вернется окно Штриховка, далее в нем нужно выбрать нужные опции и нажать ОК. Можно тестировать, в случае необходимости позднее смогу добавить исправления и нужные проверки.
Код:
|
|||
![]() |
|
||||
Начинающий проектировщик Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
![]() |
----- добавлено через ~2 мин. -----
Цитата:
Код:
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Цитата:
![]() Mozgunov, а если понадобиться вводить не целое число? Тогда уж лучше getdist, а не getint или getreal. Так у пользователя будет возможность не только ввести значение с клавиатуры, но и указать расстояние прямо на чертеже по двум точкам. Да не просто так, а еще и с обработкой пустого ввода и выводом в подсказку значения по умолчанию или последнего введенного значения? чтобы получить его при нажатии правой кнопки или Enter. Это все можно легко добавить, главное, чтоб это было кому-нибудь нужно. |
|||
![]() |
|
||||
Начинающий проектировщик Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Речь ведь может пойти не только о проемах. Я считаю, в данном случае универсальнее вещественное число, к тому же эта универсальность не требует никаких дополнительных телодвижений от пользователя, пусть вбивает что хочет: хоть int, хоть real. Другой вопрос, когда речь идет не о расстоянии, а о количестве предметов, например. Тогда ввод real недопустим.
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Команда Подобие работает некорректно | lurkin | AutoCAD | 11 | 16.07.2013 12:47 |
LISP. Подсчет кол-ва прямоугольников, с их маркировкой и offset-ом | AndruxaZ | LISP | 8 | 13.05.2013 06:42 |
Подобие выбранных замкнутых полилиний (прямоугольников). | SSTRESS | Программирование | 5 | 29.11.2012 20:17 |
как сделать подобие (смещение) блока | Iskander111 | AutoCAD | 2 | 04.04.2012 20:01 |
Как построить за раз много прямоугольников? | anthonyS | AutoCAD | 37 | 20.05.2010 12:49 |