|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
Спасибо всем ответившим!
Новый вопрос - как создать список, добавляя каждый элемент через while? Суть в следующем: обрабатывается набор примитивов, из каждого нужно получить определенный параметр (строка). Перебор примитивов по while и возрастанию порядкового номера примитива понятен и реализован, а вот создание списка и добавление к нему элемента - нет. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
cons, append и иже с ними.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
Доброй субботы, форумчане!
Создавать отдельную тему не рискнул, посчитал пост здесь более уместным. Так что извините, если не прав) Очередная проблема, которую, я думаю, можно решить через lisp, состоит в следующем. Есть большое количество таблиц в dwg-формате, которые не имеют границ ячеек, только внешние границы самих таблиц. В качестве границ ячеек используются разное расстояние между строками, по которым таблицами вообще можно пользоваться. Отдельные ячейки могут содержать несколько однострочных текстов, могут быть пустыми, объединенных ячеек - нет. Пример выложить не могу, конфиденциальность и все прочее... Есть ли какое-нибудь решение по экспорту подобных таблиц в Excel, которое требовало бы минимальной доработки? Поиском пользовался. Из наиболее близкого, как мне кажется, является pl_export-to-excel.LSP из https://dwg.ru/dnl/6638. Если "вручную" прорисовать границы ячеек - отрабатывает великолепно, но прорисовка границ займет много времени... Дополнительная морока - с однострочными текстами в ячейке. Их нужно объединять, а это доп. время... pl_export-to-excel.LSP подправил, под работу с MTEXT (вместо "TEXT" нужно использовать "*TEXT"), про _txt2mtxt из Express - в курсе. Если бы можно было как-то программно прорисовать внутренние границы, объединить однострочные тексты ячеек в многострочные - можно было бы пользоваться pl_export-to-excel.LSP. Был бы безмерно счастлив, если бы кто-то уже решал подобную задачу и поделился бы инструментами решения... Но, думаю, вряд ли такое случится... Потому, если у кого есть подсказки по решению проблемы - тоже буду благодарен. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,004
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Ну, чисто теоретически: с каждого объекта забрать его границы, проанализировать тексты по их границам (возможно, надо будет фасовать центры), потом сформировать массив и заполнять им создаваемый объект ACAD_TABLE.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,004
|
И чем вот это не подошло?
|
|||
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
Сергей812
Не понял про имитацию, если честно) Есть файлы dwg, в которые программно (неизвестно из чего и так) выгружены данные - однострочные тексты. Моя задача - собрать таблицы в Excel и обработать. В ручном режиме я это могу сделать - прорисовать горизонтальные/вертикальные внутренние границы, объединить строки в одной ячейке в MTEXT, применить pl_export-to-excel.LSP. И получу хорошие таблицы... Через несколько недель-месяцев)) Задача - понять, как это все можно автоматизировать и свести ручные доработки к минимуму. Кулик Алексей aka kpblc Я изначально предполагал такой алгоритм: 1) получить набор примитивов, входящих в таблицу (выбор по двум точкам противоположных углов области), это сделал; 2) создать "поднаборы" по колонкам (M штук), с сортировкой по координате вставки однострочного текста, сверху вниз - чтобы определить, какая из колонок состоит из наибольшего количества строк (N в будущем массиве); 4) создать "временный" массив (N строк / M столбцов) однострочных текстов - для пустых ячеек предполагалось создавать однострочные тексты постоянного содержания, чтобы все "поднаборы" имели одинаковое количество примитивов, в нужной последовательности; 5) по перебору элементов массива слева-направо, сверху вниз (или по одинаковым порядковым номерам "поднаборов"?) провести проверку однострочных текстов на необходимость сцепления в итоговую таблицу: - если текст ниже проверяемого - "постоянный", то строка не меняется, если отличается - произвести сцепление; - в случае сцепления однострочный текст ниже меняется на "постоянный", если вся строка состоит из таких однострочных текстов - она не обрабатывается; - результаты обработки/сцепки передавать в "итоговый массив" - таблицу (N1 строк / M столбцов), N1 <= N; 6) после получения массива итоговой таблицы - можно прорисовать горизонтальные и вертикальные отрезки; 7) применить pl_export-to-excel.LSP и последовательным выбором пройтись по всем таблицам со всеми границами. Может, что-то пропустил, неточно описал... Такой алгоритм возможно реализовать? ----- добавлено через ~6 мин. ----- Попадалось. Но это для полноценных таблиц AutoCAD, а у меня примитивы, однострочный текст. СПДС-овское "втаблицу" тоже не прокатило - нужны внутренние границы для распознавания ячеек. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,004
|
так как
то фиг знает. А почему не выгрузить в эксель содержимое однострочного текста с координатами и там уже не обрабатывать? Если есть координаты в параметрах извлечения данных, не помню навскидку.. |
|||
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
Сергей812
интересная идея обходного решения, не думал об этом) Извлечь - можно, координаты и содержимое передаются. Но потом это надо "растаскивать", судя по всему - вручную... По времени - проще "пробежаться" по ячейкам, объединить нужные строки в многострочные тексты, раскидать отрезки в качестве границ и использовать pl_export-to-excel.LSP Но это натолкнуло на другой алгоритм: - разместить все области таблиц друг над другом (1 таблица в одном файле, можно автоматом собирать все в одном, задавая смещение вставки относительно уже вставленных, программка - fast-copy, http://weisskrahe.ru/costenfree/costenfree.html); - в первой колонке есть номера строк таблицы; над ними на какой-нибудь высоте можно автоматом "раскидать" горизонтальные границы ячеек; - вертикальные границы можно "раскидать" аналогично, тут даже проще, так как нет объединенных ячеек; - внутри каждой ячейки объединить строки в MTEXT - (выбор текстов по контурам (через КОНТУР (_BOUNDARY) или КПОЛИ (_BPOLY)) и применение к ним _txt2mtxt ?) - как будет "сетка", подготовленные тексты в ячейках - можно применять pl_export-to-excel.LSP; - в Excel останется только повторяющиеся шапки убрать и отформатировать. Последний раз редактировалось superkot007, 07.09.2019 в 20:54. |
|||
|
||||
Регистрация: 06.06.2016
Сообщений: 327
|
В интернете пишуть, что ЛИСП предназначен (и создавался) ИСКЛЮЧИТЕЛЬНО для разработки систем искусственного разума.
Тогда почему на нём пишут только простенькие скриптики в автокаде и больше нигде не используют? ----- добавлено через 58 сек. ----- Хотел создать тему в "разное". Но там запрещено создавать темы. А мне вообще во всех разделах почему-то запрещено создавать темы. Поэтому спрашиваю тут ----- добавлено через ~3 мин. ----- Где можно почитать про использование ЛИСП конкретно для проектирования систем искуственного разума и где можно ознакомиться с примерами ИИ на Лиспе |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Цитата:
Примерно там же, где объясняется, что такое ИИ.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.01.2010
Сообщений: 254
|
По какому критерию можно создать набор из полилиний, замкнутых в контур, у которых из общего - длина/ширина и количество вершин (есть прямоугольники с 5 вершинами (1 и 5 совпадают)?
Можно было бы по постоянной длине, но такого параметра после Код:
|
|||
|
||||
конструктор Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,971
|
Цитата:
Цитата:
Как бы не пришлось брать список всех полилиний, а потом строить новый по критерию. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Что значит "ширина"? ContantWidth? Ну и ладно, собираем все что даст пользователь, а потом из набора убираем ненужное. ИМХО - самый простой способ.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
SetQ, ну кто ж его знает
__________________
Моя библиотека 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 |