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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как получить координаты "поля" в многострочном тексте?

Как получить координаты "поля" в многострочном тексте?

Ответ
Поиск в этой теме
Непрочитано 04.02.2017, 10:11 #1
Как получить координаты "поля" в многострочном тексте?
prajdziswet
 
Регистрация: 30.03.2015
Сообщений: 152

Добрый день,
есть многострочный текст который содержит поля (ссылки на файлы или интернет адрес), например
Нажмите на изображение для увеличения
Название: Clip2net_170204094455.png
Просмотров: 34
Размер:	9.5 Кб
ID:	183073
1) Как получить на autolisp координаты "полей" в многострочном тексте(не самого многострочного теста, а полей)?
Спасибо за подсказки....

Приходит на ум идея костыля:
-сделать например entmake(или другой) многострочный текст до этого поля;
-взорвать получившийся многострочный текст
-получить координаты и размер однострочного теста textbox => и вычислить координаты поля
-вернуть изменения..
....Но не совсем нравится эта идея, я думаю может более красивое(изячное) решение есть?

Просмотров: 2497
 
Непрочитано 04.02.2017, 10:24
#2
Кулик Алексей aka kpblc
Moderator

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


См. в ActiveX вариант vla-fieldcode, а потом разбирай полученную строку.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.02.2017, 16:05
#3
prajdziswet


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


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

vla-fieldcode возврашает:
"1 Отходящие линии аварийного освещения здания ОПУ, ЗРУ-6кВ и ЗРУ-35кВ присоединить к предохранителям отходящих линий БАО.\\P2 Щитки рабочего и аварийного освещения зданий ОПУ, ЗРУ-6кВ и ЗРУ-35кВ поставляются заводом изготовителем комплектно со зданиями %<\\AcVar \\href \"..\\..\\..\\..\\Чертеж1.dwg##ссылка#0\">%\\P3 Кабели до щитков рабочего и аварийного освещения зданий учтены в компл. %<\\AcVar \\href \"H:\\film\\Самые остроумные афоризмы и цитаты.pdf##название#0\">%" "1 Отходящие линии аварийного освещения здания ОПУ, ЗРУ-6кВ и ЗРУ-35кВ присоединить к предохранителям отходящих линий БАО.\\P2 Щитки рабочего и аварийного освещения зданий ОПУ, ЗРУ-6кВ и ЗРУ-35кВ поставляются заводом изготовителем комплектно со зданиями %<\\AcVar \\href \"..\\..\\..\\..\\Чертеж1.dwg##ссылка#0\">%\\P3 Кабели до щитков рабочего и аварийного освещения зданий учтены в компл. %<\\AcVar \\href \"H:\\film\\Самые остроумные афоризмы и цитаты.pdf##название#0\">%"

Спасибо, за команду (я получал аналогичное через словарь ACAD_FIELDLIST,но так проще через vla-fieldcode), но хочется координаты полей?
prajdziswet вне форума  
 
Непрочитано 04.02.2017, 18:12
#4
Кулик Алексей aka kpblc
Moderator

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


Ок, что такое "координаты полей" в твоем понимании? И зачем оно надо?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.02.2017, 21:14
#5
prajdziswet


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


1) что такое координаты=
координаты точки, есть координаты самого текста(где располагается текст в автокаде), координаты начала и конца линии
==> то есть X, Y, Z (ну Z-не надо, потому что в 3д особо не приходится чертить)..
координаты поля ==> поля имеет прямоугольник (подсвечивается другим цветом в тексте) или проще наверное так:
Нажмите на изображение для увеличения
Название: Clip2net_170204094455.png
Просмотров: 23
Размер:	36.8 Кб
ID:	183088

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

п.с я в самом начале написал как можно высчитать, но мне не совсем нравится мое предложение == может есть более красивое решение...
prajdziswet вне форума  
 
Непрочитано 04.02.2017, 22:21
#6
Кулик Алексей aka kpblc
Moderator

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


prajdziswet, спасибо, кэп. Для справки: у объекта TEXT / MTEXT есть такие понятия, как TextAlignmentPoint, InsertionPoint, AttachmentPoint. Добавляем понятие высоты, аннотативности и нормали.
Если я правильно понимаю, то тебе хочется сделать гиперссылку на поле. Подобное нереально и я бы делал по-другому. Например, после поля ставишь текст (Подробнее) и делаешь гиперссылку на нем.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.02.2017, 23:24
#7
prajdziswet


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


Алексей не совсем понял твое предложение(если можно поясни подробнее=> заранее благодарю )...
1) Да ты все понял правильно про гиперссылку, только не на него, а с него:
т.е на листе чертежа бывает указание "см. лист такой-то"(в своем же комплекте), у пдф есть понятие области с которой ссылаются и куда(номер листа и масштаб)
как я думал => создаю поле с относительным путем, пишу типа "смотри лист 5" => высчитываю координаты относительно печатаемой рамки,
а куда оно будет уже в самом сообщении (или относительная ссылка или лист указан в самом этом поле;
переводимой в пдф, самой рамки понятное дело есть)
2) насчет TextAlignmentPoint, InsertionPoint, AttachmentPoint понятие какое-то есть, точнее неоднократно встречал в жизни при черчении (когда изменяешь то же выравнивание в свойствах и текст уезжает) => но этот вопрос отложил на отладку, подумал замечу какой еще параметр в dxf (я так понимаю там указывается точка вставки?)
3) как я думал
-- достаю текст до поля vla-fieldcode (спасибо что подсказал, я его получал из словаря , но как говорят "век живи-век учись и все ровно дурнем помрешь" )
-- создаю например entmake с темиже параметрами (как правило шрифт 2,5 и стиль гостовский, отступление, как правило, это человеческий фактор, но не важно создаем с теми же параметрами, но до поля)
-- взрываем получаем кучу однострочного текста, наше поле или сверху или снизу (как правило, куда направление было понятно если там "типа столбцов" было может оказаться и слева и справа)
-- вычисляем координаты этой строчки (по содержимому, ну и оно будет крайним (сверху - снизу - сбоку)
-- вычисляем через активХ или textbox ширину строки
=> ну и в результате координаты этого поля
-- возвращаем все наши извращения (убираем этот текст, что создавали и взрывали)

==> ну наверное понял почему мне не совсем нравится мой вариант "3"

Последний раз редактировалось prajdziswet, 04.02.2017 в 23:30.
prajdziswet вне форума  
 
Непрочитано 05.02.2017, 00:02
| 1 #8
Кулик Алексей aka kpblc
Moderator

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


Я бы делал не так. В неграфический словарь (или вообще в сторонний файл) загнал бы исходную строку, а перед печатью ее бы поменял на вариант с гиперссылками. А потом обратно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2017, 07:55
#9
prajdziswet


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


Спасибо огромное, может так и сделаю...
Пока такой вариант не очень устраивает:
сам думал про сторонний файл,
- но не устраивает что строку надо постоянно корректировать (если добавил тех. требования, например перед строкой(изменилось положение)),
- во-вторых сторонний файл могут удалить (не только я работаю, другие сотрудники по отделу тоже...)
А поле всегда перед глазами в чертеже (да и выделяется в многострочном тексте)+содержит информацию (куда, на какой лист, содержит описание "см. лист" или подобное)...

Короче надо пробовать....

п.с
а) хоть словарь ACAD_FIELDLIST, наверное придется использовать (чтобы выбирать только текст с полями, а не делать набор всех текстов и пробегать по этому набору)
б) Алексей вроде как то я видел, что ты возвращал строку многострочного текста без символов форматирования?
(т.е без "\P"(параграфа), без выделения жирным и т.д ==без символов форматирования, а просто текст == если знаешь, подскажи плиз...

Огромное спасибо, благодарю...
prajdziswet вне форума  
 
Непрочитано 05.02.2017, 10:57
1 | 1 #10
VVA

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


Цитата:
Сообщение от prajdziswet Посмотреть сообщение
Алексей вроде как то я видел, что ты возвращал строку многострочного текста без символов форматирования?
LISP. Замена текстового стиля - команда UNF-MTEXT для удаления форматирования MTEXTa
UnFormat String - This subfunction utilises the RegularExpression (RegExp) Object to remove all MText formatting codes from a supplied string
kpblc-string-mtext-unformat
Цитата:
Сообщение от prajdziswet Посмотреть сообщение
достаю текст до поля vla-fieldcode
А вот с этим поаккуратнее. Функции получения значения текста, поля, имени блока через vla-* некорректно возвращают строки, содержащие unicod символы. Подробнее см. здесь
Можешь воспользоваться функциями из этой сборки
bg:FieldCode
BG:GET-TEXTSTRING
bg:block-get-name
Цитата:
2.13 - Добавлена функция BG:GET-TEXTSTRING (как замена vla-get-textstring. Т.к. неверно возвращает строку при наличии юникод символов)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.02.2017, 11:01
#11
prajdziswet


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


Огромное спасибо(все посмотрю) ....
prajdziswet вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как получить координаты "поля" в многострочном тексте?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ручки в многострочном тексте Яблоко AutoCAD 12 20.02.2015 11:55
Lisp. Получить координаты точек 3D тела. Golem-iq LISP 9 06.09.2013 13:38
Как в многострочном тексте при копировании с другого приложения заставить не менять стиль текста 128500 AutoCAD 2 21.08.2012 12:21
Как получить координаты точек отображенных на четеже в виде таблици?? nix-- AutoCAD 10 22.05.2009 13:41
Координаты области выделения Тим Боль Программирование 6 04.11.2007 16:52