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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > помогите разобраться с изменением свойств текста пожалуйсто

помогите разобраться с изменением свойств текста пожалуйсто

Ответ
Поиск в этой теме
Непрочитано 16.07.2004, 16:03 #1
помогите разобраться с изменением свойств текста пожалуйсто
Вадим
 
Сообщений: n/a

В свойствах текста (непосредственно - "выравнивание"), по умолчанию стоит (в русифицированом 2002) - "оставленный"
Когда производишь замену "выравнивания" с "оставленного" на "центр" текст перемещаеться в координаты 0,0,0
Подскажите пожалуйсто как сделать так чтоб текст не перемещался, или изначально задать данное свойство текста
Просмотров: 3058
 
Непрочитано 16.07.2004, 16:51
#2
{Smirnoff}

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


Это наверное КАД у вас "кривой". Сужу об этом потому что подобный эффект возникает при програмном изменении выравнивания средствами ActiveX. Приходится сохранять в переменной старую точку вставки текста для того чтобы вернуть его из точки 0,0,0 после изменения выравнивания.

К сожалению не силен в макросах, но вы можете изменить стандартный макрос ^C^C_dtext на небольшое ЛИСП выражение (command "_.dtext" "_j" "_c"). А лучше стандартную кнопку не трогать, а сделать новую. При желании можно сразу задавать любые новые параметры текста, включая высоту, принадлежность к слою, а также создавать текстовые стили.
{Smirnoff} вне форума  
 
Непрочитано 16.07.2004, 17:46
#3
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
подобный эффект возникает при програмном изменении выравнивания средствами ActiveX
При entmod тоже ерунда получится, если мер не принять специальных... Нужно обязательно определить 11 группу DXF (можно не вычислять, а тупо скопировать значение из 10 группы). Может быть и при использовании ActiveX нечто подобное (вторая точка выравнивания)?
vk вне форума  
 
Непрочитано 16.07.2004, 18:03
#4
Вадим


 
Сообщений: n/a


Спасибо, бум разбираться
 
 
Непрочитано 16.07.2004, 18:11
#5
{Smirnoff}

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


>VK
При ActiveX эта ерунда 100% вылезает. Так что:

Код:
[Выделить все]
(setq oldInsPt (vla-get-InsertionPoint x))
(vla-put-Alignment x acAlignmentXXXXXX)
.................................................................
(vla-move x (vla-get-InsertionPoint x) oldInsPt)
{Smirnoff} вне форума  
 
Непрочитано 16.07.2004, 19:27
#6
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Fantomas
Причина этого достаточно подробно объясняется в хелпе
Цитата:
Remarks

Text aligned to acAlignmentLeft uses the InsertionPoint property to position the text.

Text aligned to acAlignmentAligned, or acAlignmentFit uses both the InsertionPoint and TextAlignmentPoint properties to position the text.

Text aligned to any other position uses the TextAlignmentPoint property to position the text.
Так что, надо либо две точки, либо, переопределять вторую... Как в случае с entmod
vk вне форума  
 
Непрочитано 16.07.2004, 19:42
#7
{Smirnoff}

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


Знаем, читали... Только про "вылет" в 0,0,0 там ничего не написано Ведь в случае с ActiveX речь не идет о "перерисовке" как с ENTMOD, а просто дается команда "изменить выравнивание". А "оно" улетает в 0,0,0... 100% баг!
{Smirnoff} вне форума  
 
Непрочитано 16.07.2004, 21:44
#8
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Нифига не баг! Как написано - так и есть...

Примерчик? Извольте...
Создаем текст, по умолчанию выравнивание - "Left".
Давим Ctrl+1 и смотрим "чиво и скока" (на картинке слева) Точка выравнивания изначально недоступна и равна (0,0,0).
После изменения выравнивания во многих случаях, точка вставки уже не будет действовать, а за дело возмется точка выравнивания. Только есть маленькая разница между ручным изменением выравнивания из панели свойств и программным. Поменяйте выравнивание вручную из панели... Точка вставки будет недоступна для редактирования, но там есть ненулевое (и не старое!!!) значение (картинка справа). А "рулить" положением текста будет уже точка выравнивания! Потому, если редактировать программно, то код должен предусматривать корректировку этих "недоступных" значений. В принципе, нет разницы, подвинуть через MOVE или подвинуть через vla-put-alignment (упрощенный код ниже). Результат похожий.
Код:
[Выделить все]
(defun talign (/ vla:text pt)
  (setq vla:text (vlax-ename->vla-object (car (entsel))))
  
  (setq pt (vla-get-insertionpoint vla:text))
  (vla-put-alignment vla:text acalignmentmiddlecenter)
  (vla-put-textalignmentpoint vla:text pt)
  (vlax-release-object vla:text)
) ;_  defun

(talign)
[ATTACH]1089999857.gif[/ATTACH]
vk вне форума  
 
Непрочитано 16.07.2004, 22:19
#9
{Smirnoff}

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


По моему разумению (vla-put-alignment vla:text acalignmentmiddlecenter) в идеале должен просто изменить выравнивание текста. А "разборка" между наличием точки вставки и точки выравнивания должена происходить "внутри". Ведь если делать это "обычным" способом в окне Properties (за исключением "кривизны" описанной в первом постинге) ничего подобного не происходит. Т. е. это мягко говоря недоработка... Мы ведь не разбираем наличие точек, а просто даем команду на изменение выравнивания.

Конечно надо пользоваться тем что есть, но некоторая "неправильность" во всем этом присутствует. Метод или свойство применение которых вызывает побочные эффекты, которые исправляются нескольками постоянными строчками кода, можно оценивать от недоработки до бага... Конечно мое личное мнение.
{Smirnoff} вне форума  
 
Непрочитано 16.07.2004, 23:34
#10
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
По моему разумению (vla-put-alignment vla:text acalignmentmiddlecenter) в идеале должен просто изменить выравнивание текста.
Может оно так, но в Autodesk решили, что "ТАК" - слишком просто Потому и намудрили с разными точками... Однако, не забыв об этом честно предупредить [sm2004] в хелпе. Может быть, не сильно заострив на этом внимание... Впрочем, некоторая логика в этом "навороте" есть.
Цитата:
А "разборка" между наличием точки вставки и точки выравнивания должена происходить "внутри".
Именно, внутри функции, которая творит это изменение. Кстати,
Цитата:
если делать это "обычным" способом в окне Properties
сколько и каких функций при этом реально выполняет АКАД? Сие нам, увы, не известно.... :cry:
vk вне форума  
 
Непрочитано 17.07.2004, 00:59
#11
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Обственно, по теме: русификатор "кривой" - однозначно. Делали явно не профессионалы, не зная куда и как можно лазить. Лучче переустановить АКАД заново. И оставить аглицкой интерфейс.

ИМХО, лучшая русификация - не более чем перевод текстов меню и подсказок к кнопкам.
vk вне форума  
 
Непрочитано 17.07.2004, 01:00
#12
{Smirnoff}

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


>VK
Возможно вы правы в том что изменение выравнивания выполняет не ядро КАДа а "навесная" функция. Это кстати очень логично объясняет ситуацию описанную в первом постинге. Т. е. после команд _J _C Автокад отправляет текст в 0,0,0 а потом вышеупомянутая "функция возврата" не срабатывает, возможно по причине "кривой" русификации.

>Вадим
Мужик! Поставь англоязычный AutoCAD! Впрочем говорят "AutoDesk возвращяется в Россию"
{Smirnoff} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > помогите разобраться с изменением свойств текста пожалуйсто