SAPR-ART
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Lisp для текста

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 01.05.2004, 17:47 #1
Lisp для текста
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 9,785

Vova вне форума Вставить имя

Нужен лисп, который умеет делать следующее:
1. Изменять цвет атрибута щелчком по нему
2. Изменять Justificaton aтрибута щелчком по нему
3. Изменять Width aтрибута щелчком по нему
4. Изменять Height aтрибута щелчком по нему
5. Изменять стиль текста атрибута щелчком по нему
6. Все это изменять в области, выделенной рамкой
7. Все это изменять глобально
Хорошо бы этот лисп умел так-же работать и с текстом, и с мтекстом, и с размерами и с определением атрибута (бывают файлы, где есть недоделанные или взорванные блоки)
Такой был у нас на работе на 2000, но он не работает на новом и к тому-же write protected, то есть зашифрован.
Наверняка подобное уже сделано и у кого-нибудь есть
Просмотров: 3503
 
Непрочитано 05.05.2004, 00:44
#2
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Я тут подумал что инструмент для правки файлов в которых есть блоки с атрибутами достаточно полезный и "нарисовал" програмку (см. картинку). Могу выложить в Download, но хочу доработать некоторые моменты:

1) Что делаем если атрибут в "залоченом" слое? Игнорируем его, без вопросов меняем или делаем отдельную опцию "Also attributes on locked layers"

2) Что делаем с текстом в процессе выравниваия. По моему надо задать еще опцию которая задавала бы что брать за новую точку выравнивания текста. Старую точку, середину надписи или "конечные точки" надписи. Потому как если выравнивание допустим было Left a стало Center надпись серьезно сместиться влево.

3) Нужно ли вводить опцию для "многоэтажных" атрибутов при которой текст не только увеличиваеться или уменьшаеться, а делает это как при Scale с пропорциональным увеличением расстояний между стороками отдельных атрибутов.

Для многострочного и однострочного текста и размеров пока не делал, а есть ли надобность, ведь и через Properties все можно сделать? Если надо работающий уже вариант с нерешенными вышеописанными вопросами могу выслать. Или подождите пока доработаю, найдете его в Download.
[ATTACH]1083703497.gif[/ATTACH]
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 05.05.2004, 07:37
#3
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 9,785


Да, этот инструмент будет очень удобен. Я даже удивился, что никто не откликнулся, не предложил готового. Значит, Eantomas будет первым.
1. Думаю, если залочен слой, работать с атрибутом не надо. Ведь слой недаром залакнули.
2. Можно ли менять justification, оставляя текст на месте? Как это делает Express?
3. Про многоэтажный атрибут не понял. Или имеется в виду несколько отдельных атрибутов, расположенных друг под другом? Думаю, каждый из них должен изменяться по размеру сам по себе, а не в коллективе.
4. Насчет текста и прочего, кроме атрибутов. Возможно, ты прав. Описанная мной прога создавалась давно, когда не было таких пропертей, как сейчас
5. Диалоговое окно приятное. Может, добавить сюда изменение текстового стиля?
6. Опции backward & upside down могут оказаться весьма полезными. Например, если блок отзеркаленный.
7. Спасибо за полезную работу
Vova вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 05.05.2004, 10:52
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Vova

Текстовый стиль кстати есть (Style. Доработаю чтобы текст всегда оставался на месте, добавлю еще русский вариант диалога, напишу инструкцию и выложу. Думаю это завтра, послезавтра будет.
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.05.2004, 18:55
#5
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Наконец то закинул в Download англоязычную версию. Много работы...
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.05.2004, 11:32
#6
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


С учетом высказанных пожеланий, понял что нужно тиап этого (см. картинку). Атрибуты можно будет выбирать по одному. При следующем вызове окна все чеки разрешений будут сбрасываться, восстановить старые значения можно нажатием кнопки Restore previous и ли выставить чек Always previous settings. Добавится выбор всех атрибутов с одинаковым названием и считывание всех параметров с образцового атрибута (кнопка Get from sample).
[ATTACH]1084260720.gif[/ATTACH]
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.05.2004, 15:52
#7
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,093
Отправить сообщение для Apelsinov с помощью ICQ


>Fantomas,
я не совсем понял, как работает Ваша программка, потому как не смотрел ее еще, но посмотрю обязательно, а пока интересно несколько другое - можно ли указав на атрибут блока получить его значение?
Apelsinov вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.05.2004, 16:27
#8
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Можно. Сейчас получился довольно сложный вариант, разбираьсь можно ли проще. К сожалению сейчас нет времени "вычленить" в удобоваримом виде из проги, но в кратце алгоритм такой:

1) Используя обычный (entsel) щелкаем на атрибуте входящем в блок и получает точку и сам блок.
2)Проверяем что это блок и преобразуем в ActiveX
3)Проверяем есть ли у него атрибуты с помощью (vla-HasAttributes ...
4)Если есть то получаем их список:
Код:
[Выделить все]
	(setq attList(vlax-safearray->list
		       (vlax-variant-value
			 (vla-getattributes curBlock))))
5) далее в с помощью (mapcar запускаем функцию которая применяет к каждому атрибуту метод (get-boundingbox и проверяет внутрои какого бокса находится точка полученная при выборе блока.
6) При нахождении этого атрибута с ним можно делать уже что угодно. Например менять стилевые установки (цвет, стиль, высоту шрифта и т. д., как делается в моей проге. Или получить значение атрибута с помощью (vla-get-string .

Интересно можно ли выбрать нужный атрибут входящий в состав блока более простым способом? Потом преобразовав его в ActiveX c ним что хошь делай, а вот с выбором хотелось бы попроше. SSGETом что то не получаеться выбрать именно атрибут.
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 11.05.2004, 22:54
#9
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Apelsinov
Все оказалось намного проще. Есть ведь функция NENTSEL которая при указании на атрибут возвращает список из метки атрибута и точки указания. А там уже хоть через DXF, хоть через ActiveX...
Код:
[Выделить все]
(defun c:attv (/ maybeAtt attValue)
(vl-load-com)
(setq maybeAtt(vlax-ename->vla-object(car(nentsel "*** Select attribute "))))
      (if(= "AcDbAttribute"(vla-get-ObjectName maybeAtt))
(setq attValue(vla-get-TextString maybeAtt))
);end attv
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 12.05.2004, 04:33
#10
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 9,785


Штатные средства могут легко поменять свойства чего угодно, но не атрибутов. Команда Match property на них не действует. Есть команды Eattedit и -Attedit для индивидуальных изменений и Battman для глобальных, но скольких щелчков это стоит!
Программа Fantomas'a позволит менять свойства атрибута с легкостью той метлы, которая нарисована на кнопке Matchprop. Примеры применения:
1. Имеется ярлык с атрибутом, расчитанным по недомыслию на 3 буквы, а понадобились 4, и они не вмещаются. Щелчок по атрибуту-и ширина текста уменьшилась, все буквы на месте.
2. Готовый чертеж на столе у шефа, все ему нравится, кроме размера атрибутов кое-где. Вы ноете, что это очень многодельная работа, надо делать поштучно. Получаете овертайм, во время которого щелчком по проге Фантомаса исправляете чертеж и идете пить пиво.
Fantomas, надо бы проверить работу на отзеркаленном блоке, где Mirrtext позволяет читать правильно. Не перевернет ли программа атрибут?
Призываю опробовать программу в коллективном режиме для выявления слабостей.
Vova вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 12.05.2004, 08:49
#11
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Завтра загружу доработанную версию 1.1, тогда есть смысл пробовать. В версии 1.0 есть явные недостатки.
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 13.05.2004, 17:39
#12
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Vova

Выполнил все ваши пожелания, насчет выбора отдельного атрибута, архитектрурных единиц и сброса отмеченных параметров при следующем старте. Лежит в Download.
[ATTACH]1084455542.gif[/ATTACH]
{Smirnoff} вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp для текста

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

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

Быстрый переход

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||