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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > помогите составить lisp на изменение координат большого количества текстовых объектов

помогите составить lisp на изменение координат большого количества текстовых объектов

Ответ
Поиск в этой теме
Непрочитано 05.11.2013, 16:23 #1
помогите составить lisp на изменение координат большого количества текстовых объектов
ripeinik
 
ГИПик
 
Нерезиновая
Регистрация: 21.06.2012
Сообщений: 57

Добрый день, люди добрые! Помогите кто чем может,если может...

Есть проблема:
Есть куча отметок в форме текста по сетке типа но на самом деле нет, каждый текст сдвинут на чуть-чуть,причем каждый в свою сторону....

Нужно перетащить все текстики кучей так,чтобы каждый стал своей точкой привязки на свое место в сетке.

Делать это вручную я офигею, их там мильон штук на 5 чертежах (да-да,это кто-то типа "исполнительную" делал ВРУЧНУЮ забивая текст и зачем-то его при этом сдвигая...а мне теперь надо сделать поверхность но точную, а не абы какую...)

в общем, может ли кто-нибудь ну пожалуйста написать какую-то утилитку для этого или может стандартными средствами автокада это как-то можно сделать, а я не знаю как?

помогите, а то я ослепну...

Изображения
Тип файла: jpg 444.jpg (70.7 Кб, 265 просмотров)


Последний раз редактировалось ripeinik, 05.11.2013 в 23:15.
Просмотров: 6164
 
Непрочитано 05.11.2013, 16:53
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


А м.б. текст точкой вставки надо сдвигать к пересечению сеток влево?
Нужен уточнить алгоритм задачи размещения текста.
И чем задана сетка?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 05.11.2013, 17:09
#3
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


штатной возможности вроде нету. А для лиспа могу алгоритм подсказать. Принцип - в выделении по строкам и по столбцам поочередно (благо, совершенной анархии в расположении нет, судя по картинке). Всему тексту назначить выравнивание "снизу справа". Затем выделенному столбцу назначить координату по X одну и то же. Так все столбцы. Потом построчно также координаты Y. Сам в лиспах не силен, составить не смогу.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Автор темы   Непрочитано 05.11.2013, 17:42
#4
ripeinik

ГИПик
 
Регистрация: 21.06.2012
Нерезиновая
Сообщений: 57


Цитата:
Сообщение от Alan Посмотреть сообщение
А м.б. текст точкой вставки надо сдвигать к пересечению сеток влево?
Нужен уточнить алгоритм задачи размещения текста.
И чем задана сетка?
нет, на это чертеже надо именно направо, на другом-налево... там просто вон те три верхние правые точки уже на своих местах

сетка задана полилиниями, это в общем не принципиально, она одинаковая,могу задать хоть точками, хоть отрезками,хоть чем

Цитата:
Сообщение от Bull Посмотреть сообщение
штатной возможности вроде нету. А для лиспа могу алгоритм подсказать. Принцип - в выделении по строкам и по столбцам поочередно (благо, совершенной анархии в расположении нет, судя по картинке). Всему тексту назначить выравнивание "снизу справа". Затем выделенному столбцу назначить координату по X одну и то же. Так все столбцы. Потом построчно также координаты Y. Сам в лиспах не силен, составить не смогу.
анархия есть и еще какая, ибо на картинке только маленькая часть той беды,что у меня перед глазами. они все сдвинуты примерно в одну и ту же сторону, грубо говря на СЗ или на ЮВ но на разные расстояния

а как назначить тексту всему выравнивание? имеете в виду лисп, а не в автокаде? для меня лисп это вообще где-то за пределами разума
ripeinik вне форума  
 
Непрочитано 05.11.2013, 17:50
1 | #5
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от ripeinik Посмотреть сообщение
анархия есть и еще какая,
Я имел ввиду, что такое размещение позволяет выделить рамкой отдельный столбец или строку без перемешиваний с соседними.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от ripeinik Посмотреть сообщение
для меня лисп это вообще где-то за пределами разума
Для меня тоже не сильно ближе. Но тут есть спецы, которые могут помочь в разных ситуациях. Останется только их творение внедрить в АКАД, а это несложно.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от ripeinik Посмотреть сообщение
а как назначить тексту всему выравнивание? имеете в виду лисп, а не в автокаде?
Вот тут как раз лисп-то и не нужен. Надо просто весь текст (или рамкой) выделить и через панель свойств назначить выравнивание
__________________
Век живи, век учись - ...

Последний раз редактировалось Bull, 05.11.2013 в 17:55.
Bull вне форума  
 
Автор темы   Непрочитано 05.11.2013, 20:28
#6
ripeinik

ГИПик
 
Регистрация: 21.06.2012
Нерезиновая
Сообщений: 57


Цитата:
Сообщение от Bull Посмотреть сообщение
Я имел ввиду, что такое размещение позволяет выделить рамкой отдельный столбец или строку без перемешиваний с соседними.

----- добавлено через ~3 мин. -----
Для меня тоже не сильно ближе. Но тут есть спецы, которые могут помочь в разных ситуациях. Останется только их творение внедрить в АКАД, а это несложно.

----- добавлено через ~3 мин. -----
Вот тут как раз лисп-то и не нужен. Надо просто весь текст (или рамкой) выделить и через панель свойств назначить выравнивание
а. ну тогда я вас поняла.. это конечно немного сократит работу но хотелось бы еще более автоматизированно..
но на безрыбье... спасибо в общем=)
ripeinik вне форума  
 
Непрочитано 05.11.2013, 21:24
#7
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


переименуй тему "помогите составить lisp на изменение координат текстов", может, подлетят спецы
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.11.2013, 22:25
#8
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


Может смещение произошло из-за отсутствующего шрифта в системе? Выложи файл (не картинку, а именно ДВГшку)
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Непрочитано 05.11.2013, 22:26
#9
Кулик Алексей aka kpblc
Moderator

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


Напоминаю, что вопрос автором размещен в разделе "AutoCAD", а не "Программирование"...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.11.2013, 22:29
#10
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
Может смещение произошло из-за отсутствующего шрифта в системе? Выложи файл (
Да ладно, там же видно, что не в этом дело. "Съехало" бы одинаково
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Напоминаю, что вопрос автором размещен в разделе "AutoCAD", а не "Программирование"...
Советуете новую тему открыть автору?
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.11.2013, 22:32
#11
Кулик Алексей aka kpblc
Moderator

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


Я советую, если не найдено другое решение, а) переименовать тему; б) "обратить внимание" с просьбой перемещения.
Вообще-то, я думаю, задача может быть решена и вручную: выделяется, например, столбец, вызывается окно свойств, устанавливается координата Х для точки вставки текстов (уточнение: выделенных текстов). Аналогично по строкам.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.11.2013, 22:45
#12
Nordek


 
Регистрация: 11.09.2008
Сообщений: 386


А Вы бы как хотели, чтобы работала "автоматизация", опишите порядок Ваших действий и действий "Автоматизатора", например: "Мне нужно выделять кривой текст мышкой, а затем указывать точку куда ему нужно встать и текст прыгает на вновь указанное место, например на пересечение осей (как у Вас на картинке)"?
Nordek вне форума  
 
Непрочитано 05.11.2013, 22:48
#13
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вообще-то, я думаю, задача может быть решена и вручную:
...
Цитата:
Сообщение от ripeinik Посмотреть сообщение
Делать это вручную я офигею, их там мильон штук на 5 чертежах
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.11.2013, 22:53
#14
Кулик Алексей aka kpblc
Moderator

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


За автора ни переименовывать тему, ни инициировать ее перемещение не буду.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.11.2013, 23:13
#15
ripeinik

ГИПик
 
Регистрация: 21.06.2012
Нерезиновая
Сообщений: 57


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Напоминаю, что вопрос автором размещен в разделе "AutoCAD", а не "Программирование"...
автор просто не знал,куда обратиться, и что оказывается можно переименовывать темы и перемещать посты из одного раздела форума в другой
спасибо, что-нить придумаю


Цитата:
Сообщение от Bull Посмотреть сообщение
Сообщение от Сергей Богатов
Может смещение произошло из-за отсутствующего шрифта в системе? Выложи файл (
Да ладно, там же видно, что не в этом дело. "Съехало" бы одинаково
именно, шрифты присутствуют

в принципе проблема уже решилась автокадовскими методами, спасибо Bull, однако, чую придут вскоре еще стотыщпицот чертежей и мне опять придется исправлять Х и Y, а столбцов там ойойойой 3 км через 20 метров сетка.. так что все еще надеюсь на помощь "спецов"

----- добавлено через ~14 мин. -----
Цитата:
Сообщение от Nordek Посмотреть сообщение
А Вы бы как хотели, чтобы работала "автоматизация", опишите порядок Ваших действий и действий "Автоматизатора", например: "Мне нужно выделять кривой текст мышкой, а затем указывать точку куда ему нужно встать и текст прыгает на вновь указанное место, например на пересечение осей (как у Вас на картинке)"?
ну, сначала я брала текст с привязкой за точку вставки и перетаскивала его на свое место в сетке прямо на перекрестье с привязкой, и так каждый, ибо смещены они на чуть-чуть, но каждый по-своему, как я уже и говорила

потом о чудо мне тут подсказали,и я создала ПСК с началом координат в сетке, потом выровняла весь текст, потом выделяла 1 строку-задавала одинаковый y1 для всего текста в этой строке, потом вторую строку - у2, и т.д. и так же со столбцами и координатой х, только вот строк всего, 3 а столбцов 150, а чертежей 5, а сколько их завтра придет-неизвестно, так что такой способ хоть и быстрее в разы, все равно как-то не очень
ripeinik вне форума  
 
Непрочитано 06.11.2013, 09:02
#16
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от ripeinik Посмотреть сообщение
а столбцов там ойойойой 3 км через 20 метров сетка..
сетка равномерная (размер "ячеек" одинаковый)?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 06.11.2013, 09:37
#17
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


если у нас есть равномерная сетка, и мы знаем максимальное смещение текста от узлов этой сетки, то можно наваять достаточно простую программу:
1. проверяем является ли остаток от деления координат текста на координаты ближайших узлов (если они жёстко заданы по какой-либо формуле) меньше максимального отдаления текста от узла
2. если 1=true то двигаем текст в узел. иначе выдаём лог, что такие-то тексты находятся вне поля сетки

P.S.
Будет работать только если максимальное смещение явно меньше 1/2 размера между узлами сетки... И ещё нет смещения некоторых текстов в одну сторону - тексты будут "слипаться"
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 06.11.2013, 11:11
#18
ripeinik

ГИПик
 
Регистрация: 21.06.2012
Нерезиновая
Сообщений: 57


Цитата:
Сообщение от Дима_ Посмотреть сообщение
сетка равномерная (размер "ячеек" одинаковый)?
ну, скажем так, между столбцами одинаково (20метров) а между строками благо их всего три можно сделать, так что считаем что да, равномерная, 20х20


Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
P.S.
Будет работать только если максимальное смещение явно меньше 1/2 размера между узлами сетки... И ещё нет смещения некоторых текстов в одну сторону - тексты будут "слипаться"
логично
нет, тексты не смещены так далеко, на чуть-чуть, до половины сетки им ума хватило их не двигать
а там где подвинули сильно-можно все кучей перетащить поближе к узлам сетки, так что тоже не проблема

Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
то можно наваять достаточно простую программу:
тааааааааа
__________________
Нормально делай - нормально будет. И всегда бери аванс =)
ripeinik вне форума  
 
Непрочитано 06.11.2013, 11:12
1 | #19
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от ripeinik Посмотреть сообщение
а мне теперь надо сделать поверхность но точную, а не абы какую
А зачем текст двигать? Можно назначить точке координату Z ближайшего текста
Программа для установки Z-координаты точки текста рядом с ней
Различные вариации на эту тему
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.11.2013, 11:21
#20
ripeinik

ГИПик
 
Регистрация: 21.06.2012
Нерезиновая
Сообщений: 57


Цитата:
Сообщение от VVA Посмотреть сообщение
А зачем текст двигать? Можно назначить точке координату Z ближайшего текста
Программа для установки Z-координаты точки текста рядом с ней
Различные вариации на эту тему
а кто ж знал, что так можно было? =)

спасибо! попробую
__________________
Нормально делай - нормально будет. И всегда бери аванс =)
ripeinik вне форума  
 
Непрочитано 06.11.2013, 12:39
1 | #21
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от ripeinik Посмотреть сообщение
ну, скажем так, между столбцами одинаково (20метров) а между строками благо их всего три можно сделать
на скорую руку как-то так, запускать командой test
Код:
[Выделить все]
  (vl-load-com)
(defun round(x)
  ((lambda (fx)
     (if (< (abs (- x fx)) 0.5) fx (if (< x 0) (1- fx) (1+ fx))))
   (fix x)))
(defun c:test()
  ((lambda (pt w h ent-lst doc)
     (vla-startundomark doc)
     (mapcar '(lambda (lst)
                ((lambda (x y)
                   (entmod (subst (list 10 x y (last (assoc 10 lst))) (assoc 10 lst) lst)))
                 (+ (* (round (/ (- (cadr (assoc 10 lst)) (car pt)) w)) w) (car pt))
                 (+ (* (round (/ (- (caddr (assoc 10 lst)) (cadr pt)) h)) h) (cadr pt))))
             ent-lst)
     (vla-endundomark doc))
   (getpoint "\nНачало сетки: ")
   (getdist "\nШаг по X: ")
   (getdist "\nШаг по Y: ")
   (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*text")))))))
   (vla-get-activedocument (vlax-get-acad-object))))
p.s. - исправил округление...
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 06.11.2013 в 23:46.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > помогите составить lisp на изменение координат большого количества текстовых объектов



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное создание размерных стилей Кулик Алексей aka kpblc Программирование 96 21.02.2025 13:53
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
MS Word Нужен скрипт для копирования с одновременной заменой части текста Солидворкер Прочее. Программное обеспечение 27 27.11.2012 15:52
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Курсор в конец редактируемого текста? zlobandr AutoCAD 15 13.05.2008 16:41