Подравняване на текст спрямо линия

Иван Цукев

autocad-podravni-text-kum-linia-logoЧитател на блога във Facebook попита как може да се подравни текст към съществуваща линия. Проблемът идва когато имаме такъв чертеж, при който съществуват много текстове, които трябва да са успоредни на определени линии. Ако линиите са хоризонтални и вертикални няма проблем, но когато те са с произволен ъгъл нещата стават по-сложни. Трябва да си играем да избираме всеки текст и да го въртим по няколко пъти докато горе-долу изглежда успореден, защото никога не можем „на око“ да го нацелим да е точно успореден.

Ако ви се случва да чертаете такива чертежи, ви предлагам един начин за улеснение с кратка autolisp програма, която се пуска в три стъпки:

1. Копирате лисп кода по-долу и го поставяте в един празен текстов файл, който записване някъде на диска си. Препоръчително е описателно име с разширение lsp като Align-Text.lsp

2. Стартирате командата appload и избирате файла, който сте създали на диска (малко по-подробно как се зарежда лисп програма може да прочетете тук)

3. Изписвате командата Atxt (от Align Text – подравни текст) и избирате последователно една линия и след това един или повече текста, който искате да подравните към нея. Линията не може да бъде полилиния, ако искате да подравните към полилиния, трябва да я превърнете в линия с explode.


(defun c:ATxt (/ VlaObjLine LinAngle VlaObjText )
(vl-load-com )
(setq VlaObjLine (vlax-ename->vla-object (car (entsel "\nИзберете линия: " ))) )
(setq LinAngle (vla-get-Angle VlaObjLine ) )
(while (setq VlaObjText (vlax-ename->vla-object (car (entsel "\nИзберете текст : " ))))
(vla-put-Rotation VlaObjText LinAngle )
(vlax-release-object VlaObjText )
)
(vlax-release-object VlaObjLine )
(princ)
)

 

 

 

Абонирай се да получаваш AutoCAD Уроци по Емейл

 

Чертане , ,

  1. Христо
    | #1

    Мерси, много полезен лисп! А как могат да се подравнят няколко отделни текста по X или по Y?

  2. | #2

    @Христо
    Избират се обектите и в свойствата им (properties) се задава на ъгъла на завъртане да е 0 или 90 градуса.

  3. Христо
    | #3

    Имах предвид текстовете да се преместят по общо Х или Y.

  4. | #4

    ОК 🙂 Ако правилно съм разбрал сега. Задачата е примерно няколко текста един под друг, но леко разместени, а не подредени спрямо една вертикална линия.

    Ако това е случаят, може да се направи много бърз lisp, но аз ползвам друг трик. Избирам обекта, към който искам да бъдат подравнени другите обекти и копирам X координатата му от properties. След това избирам всички обекти и на мястото на X координатата правя paste. Така за няколко секунди всички текстове са абсолютно подравнени по X. Аналогично е и за Y.

  5. georgi
    | #5

    Здравейте,
    В Аутокад има команда за въртене на текст към дадена линия.Командата се казва „rotate text“ от менютата или пък пишете в командния ред „torient“ , маркирате текста и след това кликате върху 2 точки от линията и текста се завърта успоредно на линията.

  6. | #6

    @georgi

    Решението е с един клик повече, но пък няма необходимост от допълнителни лиспове. Така че, това може би е по-доброто решение за много хора.

  7. Теодор
    | #7

    Лиспа действа, но в някои случаи обръща текста надолу с главата. Подскажете как мога да го избегна това. 🙂

  8. Асен
    | #8

    Това е удобно но не може ли да се направи по разширен вариант за да е по пълно. Примерно да се подравнява и по полилиния и към окръжност или извивка.

КОМЕНТИРАЙТЕ:
  1. Bisher keine Trackbacks

 

Този сайт използва "бисквитки". Научи повече тук.

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close