| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
автоматизация и организация черчения Регистрация: 17.11.2009
Sterlitamak
Сообщений: 135
|
AlexSheep спасибо!
Смотрел ее, вводил с маленькой буквы и не работало (initget "привет") Надо с заглавной, всем спасибо! Пример Код:
__________________
слесарь САПР |
|||
|
||||
ГИП Регистрация: 07.06.2015
Сообщений: 1,254
|
Немного наивный вопрос. А кто-нибудь вообще слышал/видел в работе такую функцию, чтобы автоматически искала свободное место на чертеже для размещения текста/объектов?
Например, есть густо разрисованный чертёж. Нужно в конкретное место поставить точку/мультивыноску/блок и тп., чтобы программа автоматически прошерстила "окрестность" и поставила текст в ту часть чертежа, где он не будет перекрывать другие объекты. Причём, на максимально близком от конкретного места расстоянии. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Уже было подобное обсуждение в какой то ветке относительно выносок для кабельного журнала. Здесь задача гораздо сложнее. Например, ту же мультивыноску бывает порою проще вынести подальше от объекта, на который она указывает - чтобы при этом наклон и пересечки выносной линии с другими элементами чертежа обеспечивали однозначную визуальную связь выноски и объекта. Так что нахождение свободного "пятна" на чертежа - это лишь часть задачи.
|
|||
|
||||
ГИП Регистрация: 07.06.2015
Сообщений: 1,254
|
Цитата:
Цитата:
Цитата:
Мне в голову только одна мысль приходит. 1. Задаём размер "окрестности", в пределах которой нужно разместить выноску. 2. Из dxf кодов элементов в этой окрестности выделяем нужные данные. 3. Создаём виртуальное координатное поле в пределах окрестности: - задаём размер ячейки координатного поля. Допустим, 0.1х0.1 единицы чертежа. - циклически проходим все ячейки координатного поля. Если в пределах ячейки оказывается объект, ячейке присваивается свойство " 1". Если нет, то свойство "0". 4. Определяем размеры выноски, которую хотим разместить, в количестве ячеек координатного поля. 5. Ну а дальше методом концентрических окружностей программа, оперируя данными координатного поля и размерами выноски, ищет пустое место. Как это происходит. Циклично. Сначала задаётся небольшой радиус, просматриваются все точки на окружности от 0 до 2π с некоторым шагом углов. Если места нет, то выбираются всё большие и большие радиусы, и так же проходятся окружности от 0 до 2π. И так до тех пор, пока радиус поиска не станет равен изначально заданному радиусу окрестности. И если пустого места нет, то вылетает ошибка: "извини, братан, местов нема". Если делать без виртуального координатного поля, то, боюсь, тут даже суперкомпьютер повиснет. Но это всё догадки. Честно говоря, я даже такой науки не знаю, где бы такие алгоритмы и задачи рассматривались. ----- добавлено через ~6 мин. ----- Ну или просто секрамкой по размерам выноски проходить окрестность методом концентрических окружностей... Это проще, но тогда будут возникать ошибки и слипания выноски с объектами. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Enik, думаю, что если хотите раскрыть эту тематику - надо попросить админа/модераторов вынести в отдельную ветку)
А решения то есть математические 100%, например, те же самые задачи оптимального раскроя материалов на станке. Учитывайте, что еще должна быть типа "дефрагментации" - т.е. если места не хватает для установки элемента, то должна быть сначала анализ возможности перетасовки уже существующих элементов, а потом уж сообщать - "Упс". А если это все путем простого перебора делать... |
|||
|
||||
ГИП Регистрация: 07.06.2015
Сообщений: 1,254
|
Цитата:
Алексей, прошу рассмотреть эту возможность... Offtop: Попробую ещё LeeMac'у написать. Такими темпами можно и до умного проектирования дойти. Например, связать воедино кадастровый план, топосъёмку с домами, дорогами и коммуникациями. Наложить сюда ЗОУИТ. И вуаля: трассировка объекта готова. Вкалывают роботы - счастлив человек. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Offtop: это и является целью любой автоматизации проектирования - от рисования палочками и кружочками перейти к комплексной обработке информации. Уровень обработки информации разный просто - в зависимости от уровня кустарей-самоучек типа нас или сколько готова затратить фирма средств на внедрение.
|
|||
|
||||
ГИП Регистрация: 07.06.2015
Сообщений: 1,254
|
|
|||
|
||||
ГИП Регистрация: 07.06.2015
Сообщений: 1,254
|
Offtop: Пришёл ответ от ЛееМака
Hi Vladimir, Thank you for your message. I'm afraid I haven't previously encountered programs such as you have described which would allow the automatic placement of annotation in a crowded drawing such that the annotation remains visible & readable. As you've identified from the algorithm described by your image set, such a task is relatively complex and would be quite a challenge to automate. Kind Regards, Lee Offtop: В общем, придётся поднимать целину. Не похоже, чтобы этим кто-то занимался раньше. |
|||
|
||||
инженер Регистрация: 09.05.2017
Красноярск
Сообщений: 3
|
Добрый день! Координаты примитива функциями lisp извлекаются в экспоненциальной форме (вроде: (2.08014e+008 4.11118e+008)), что в десятичной записи дает точность до 1000. Вопрос номер один - как повысить точность извлечения координат (хотя бы до значения точности в настройках чертежа autocad). И вопрос два - как в visual lisp переводить числа из одного формата в другой. Тыкаю редактор буквально третий день, ни разу не программист, а дудл предлагает функцию format, которая не читается интерпретатором и в справочнике инфы не углядел. Оби Ван, ты последняя надежда.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Я не оби Ван, поэтому не надейся
Данные извлекаются с максимальной точностью. Просто отображаются не совсем корректно. Можешь ради приколу проверить через (rtos value 2 16)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
инженер Регистрация: 09.05.2017
Красноярск
Сообщений: 3
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Нннуууу... Если неохота сильно разбираться, попробуй поиграться с luprec, lunits - кажется, именно они отвечают за отображение значений.
P.S. Код не смотрел, не разбирался. Увы, некогда
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Если так уж надо, то используй функции vl-bb-set и vl-bb-ref
Хотя я бы подумывал об использовании реестра или внешних настроечных файлов. Нечасто надо делать внедокументные переменные.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |