Тема: Выравнивание текста

Возможно в каде, текст разместиь непосредственно по середине.
Допустим прямоугольник - мне нужно чтобы текст распологался на одинаковом растоянии от вертикальных и горизонтальных линиях.
Или это возможно только делать на глазок.

Re: Выравнивание текста

Ответьте возможно или нет.
Или вопрос задан не очень точно.

Re: Выравнивание текста

Может это поможет???

;Текст любой ориентации в рамке с заданным отступом
(DEFUN C:TBOX ( / cltype ccolor clayer ent type step ofset width a b
                   ltxt ang sinrot cosrot box t1 t2 p0 p1 p2 p3 p4)

   (_MODES '("CMDECHO" "OSMODE" "ORTHOMODE" "PLINEWID"))
   (SETQ olderr *ERROR*)           ; Сохранение обработки ошибок программы
   (SETQ *ERROR* PGT_ERR)          ; Заменить на наш обработчик ошибок
   (SETVAR "CMDECHO" 0)
   (SETVAR "OSMODE" 0)
   (SETVAR "ORTHOMODE" 0)
   (SETQ cltype (GETVAR "CELTYPE"))    ; Текущий тип линии
   (SETQ ccolor (GETVAR "CECOLOR"))    ; Текущий цвет
   (SETQ clayer (GETVAR "CLAYER"))     ; Текущий слой
   (COMMAND "_COLOR" "_BYLAYER")
   (COMMAND "_-LINETYPE" "_S" "CONTINUOUS" "")

   (WHILE (OR (= ent NIL) (/= type "TEXT"))
     (SETQ ent (CAR (ENTSEL "\nВыбери текст:")))
     (IF (= ent NIL)
       (PRINC "\ ЭТО НЕ ТЕКСТ")
       (IF (/= "TEXT" (CDR (ASSOC 0 (ENTGET ent))))
         (PRINC "\ ЭТО НЕ ТЕКСТ")
         (SETQ type "TEXT" entdat (ENTGET ent))
       )
     )
   )

   (SETQ step  (ATOF (GETSTRING "\nОтступ рамки от текста: ")))
   (SETQ step (* (GETVAR "DIMSCALE") step))
   (SETQ width (ATOF (GETSTRING "\nТолщина линии рамки: ")))
   (SETQ width (* (GETVAR "DIMSCALE") width))
   (SETQ p0  (CDR (ASSOC 10 entdat))   ;Начало текста
         ang (CDR (ASSOC 50 entdat))   ;Угол поворота
         ltxt (CDR (ASSOC 8 entdat))   ;Слой
         sinrot (SIN ang)
         cosrot (COS ang)
         t1 (CAR  (TEXTBOX entdat))
         t2 (CADR (TEXTBOX entdat))
         ofset (LIST step step 0.0)
         t1 (MAPCAR '(LAMBDA (a b) (- a b)) t1 ofset)
         t2 (MAPCAR '(LAMBDA (a b) (+ a b)) t2 ofset)
         p1 (LIST (+ (CAR p0)  (- (* (CAR t1) cosrot) (* (CADR t1) sinrot)))
                  (+ (CADR p0) (+ (* (CAR t1) sinrot) (* (CADR t1) cosrot))))
         p2 (LIST (+ (CAR p0)  (- (* (CAR t2) cosrot) (* (CADR t1) sinrot)))
                  (+ (CADR p0) (+ (* (CAR t2) sinrot) (* (CADR t1) cosrot))))
         p3 (LIST (+ (CAR p0)  (- (* (CAR t2) cosrot) (* (CADR t2) sinrot)))
                  (+ (CADR p0) (+ (* (CAR t2) sinrot) (* (CADR t2) cosrot))))
         p4 (LIST (+ (CAR p0)  (- (* (CAR t1) cosrot) (* (CADR t2) sinrot)))
                  (+ (CADR p0) (+ (* (CAR t1) sinrot) (* (CADR t2) cosrot))))
   )

   (COMMAND "_-LAYER" "_S" ltxt "")
   (COMMAND "_PLINE" p1 "_W" width "" p2 p3 p4 "_C")

   (COMMAND "_COLOR" ccolor)
   (COMMAND "_-LINETYPE" "_S" cltype "")
   (COMMAND "_-LAYER" "_S" clayer "")
   (SETQ *ERROR* olderr)  ;Восстановить старый обработчик *ERROR*
   (_MODER)
   (SETVAR "CMDECHO" 1)
   (PRIN1)
)

Re: Выравнивание текста

Спасибо огромное но я в програмировании пока слаб.
Но все равно попробую.

Re: Выравнивание текста

А без програмирования можно обойтись.

Re: Выравнивание текста

а что у вас:
mtext  или  dtext ?

Re: Выравнивание текста

(command "_.MTEXT" '(0 0) "_J" "MC" '(100 100) "This is my text" "")

В центре прямоугольника с координатами углов '(0 0) и '(100 100) будет отбражен текст "This is my text".

"_J" "MC"  -- выравнивание по центру прямоугольника

Re: Выравнивание текста

А можно ещё удобнее изменив сойства кнопульки:

^C^C(command "Mtext" pause "_justify" "_MC" pause (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)) "")

Выражение под (substr...) замените на любое своё, можно вообще создать несколько кнопок с разными задачами.

Re: Выравнивание текста

У меня dtext.

Re: Выравнивание текста

c dtext-ом, естессно возни больше, но можно попробовать след.(при условии, что вам нужна одна строка):
1. проведите диагонали на своем прямоугольнике
2. командуйте _dtext
3. в коммандлайне будет:
Specify start point of text or [Justify/Style]
4. выбираете: J
5. на след. запрос MC
6. старт пойнт в перекресток диагоналей