Тема: Как выровнять однострочный текст по вертикали?

Мож кто знает, как выровнять однострочный текст по вертикали ?

Re: Как выровнять однострочный текст по вертикали?

Имеется в виду Fit - Middle Left / Right / Center? Так это в свойствах объекта либо при вызове dtext использовать опцию _Justify и устанавливать ml mr либо mc по необходимости

Re: Как выровнять однострочный текст по вертикали?

(princ "Type DALI to Run")
(defun c:dali (/ tHeight insPoint dtSet oldDisMode errFlag
         sStr tAlignPt tAlignment disDelta dtList
           oldStrDis)
  (vl-load-com)
  (defun texAlign (item /)
          (setq disDelta(- disDelta dali:strDis)); end setq
      (vla-put-Alignment (car str) tAlignment)
      (cond
    ((= tAlignment 0)
       (vla-put-InsertionPoint (car str)
         (vlax-3D-Point(car insPoint)
           (+ disDelta(cadr insPoint))(nth 2 insPoint)))
     )
    ((member tAlignment '(1 2 4 6 7 8 9 10 11 12 13 14))
       (vla-put-TextAlignmentPoint (car str)
         (vlax-3D-Point(car tAlignPt)
           (+ disDelta(cadr tAlignPt))(nth 2 tAlignPt)))
     )
    ((member tAlignment '(3 5))
     (princ "\nCan't align string with Aligned or Fit alignment ")
     )
    ); end cond
    ); end of texAlign
  (if(not dali:disMode)(setq dali:disMode "S"))
  (setq oldDisMode dali:disMode)
  (if(not dali:strDis)(setq dali:strDis 4.167))
  (setq oldStrDis dali:strDis)
  (initget "S C")
  (setq dali:disMode
    (getkword
      (strcat "\nSpecify distance between strings [Standard/Custom] <" dali:disMode ">: ")))
  (if(null dali:disMode)(setq dali:disMode oldDisMode))
  (if(= dali:disMode "C")
    (progn
    (setq dali:strDis(getdist(strcat "\nSpecify Custom distance <"(rtos dali:strDis) ">: ")))
    (if(null dali:strDis)(setq dali:strDis oldStrDis))
    (princ(strcat "\nCustom distance is "(rtos dali:strDis)))
      ); end progn
    ); end if
  (princ "\n*** Select DText and press Enter *** ")
   (if
     (setq dtSet(ssget '((0 . "TEXT"))))
    (progn
      (setq dtList(vl-sort(mapcar
             '(lambda (x)(list x
            (+(cadr(vlax-safearray->list
                 (vlax-variant-value
                   (vla-get-InsertionPoint x))))
                    (cadr(vlax-safearray->list
                 (vlax-variant-value
                   (vla-get-TextAlignmentPoint x)))))))
         (mapcar 'vlax-ename->vla-object
                  (vl-remove-if 'listp
                     (mapcar 'cadr(ssnamex dtSet)))))
             (function(lambda(a b)(>(cadr a)(cadr b)))))
           tHeight(vla-get-Height (caar dtList))
       insPoint(vlax-safearray->list
            (vlax-variant-value
              (vla-get-InsertionPoint (caar dtList))))
       tAlignPt(vlax-safearray->list
            (vlax-variant-value
              (vla-get-TextAlignmentPoint (caar dtList))))
       tAlignment(vla-get-Alignment (caar dtList))
        dtList(cdr dtList)
        disDelta 0.0
      ); end setq
    (if(= dali:disMode "S")(setq dali:strDis(* 1.6668 tHeight)))
      (foreach str dtList
     (if
    (not
        (vl-catch-all-error-p
             (vl-catch-all-apply 'texAlign (list str))))
       (princ)
       (setq errFlag T)
       ); end if
    ); end foreach
      (if errFlag(princ "\n*** Some objects on Locked Layer ***"))
  ); end progn
    (princ "\nString isn't selected. ")
    ); end if
    (princ)
    ); end of dalign