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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как в липе получить атрибуты шрифта??

как в липе получить атрибуты шрифта??

Ответ
Поиск в этой теме
Непрочитано 22.06.2007, 15:19 #1
как в липе получить атрибуты шрифта??
sersgey_r
 
Учусь писать прогри на лиспе
 
Таганрог
Регистрация: 15.06.2007
Сообщений: 8

Уважаемые, подскажите пожалуйста, как в получитьв лисп из Акада атрибуты шрифта, в особенности интересует ширина символа, и ширина между буквами?
Просмотров: 3127
 
Непрочитано 22.06.2007, 15:25
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Читай http://cadhlp.kulichki.com/pdshx.htm , анализируй, пробуй...
Сейчас выяснится, что достаточно применения (textbox)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.06.2007, 12:48
#3
sersgey_r

Учусь писать прогри на лиспе
 
Регистрация: 15.06.2007
Таганрог
Сообщений: 8


Цитата:
Сообщение от Кулик Алексей aka kpblc
Читай http://cadhlp.kulichki.com/pdshx.htm , анализируй, пробуй...
Сейчас выяснится, что достаточно применения (textbox)
Спасибо большое! А вот можете помочь решить эту проблему

Цитата:

Вопрос такой,в коммандной строке такая команда работает

(setq ss1 (textbox ss)) и следующая за ней
(setq ss2 (car (cadr (ss1))))
а вставляю в ЛИСП и нифига пишет на это (setq ss1 (textbox ss)) nill
Подскажите что надо сделать??


(setq s (getstring (strcat "\nКЛЕММА <Выс " (rtos hg)"; Сж " (rtos scal)">:")))
(print s)
(setq ss (entget (entlast)))


(print ss)
(setq ss1 (textbox ss))
(print ss1)
(setq ss2 (car (cadr (ss1))))
(print ss2)

(setq ss3 10)
(setq deltaH (+ (/ hg 2) 1))
(setq deltaLLeft (+ (/ ss3 2) 2.5))
(setq deltaLRight (+ (/ ss3 2) 2.5))
sersgey_r вне форума  
 
Непрочитано 25.06.2007, 12:54
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Хм... А что, (entlast) обязательно текст?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.06.2007, 13:16
#5
sersgey_r

Учусь писать прогри на лиспе
 
Регистрация: 15.06.2007
Таганрог
Сообщений: 8


Цитата:
Сообщение от Кулик Алексей aka kpblc
Хм... А что, (entlast) обязательно текст?
данная программа должна напечатать текст в 2.5 мм от линии
вот фрагмент кода расчитыывает координаты блока текста и передает данные для печатания введенного текста
А по поводу обязательно, просто пример в хелпе для textbox дает такую строку с entlast <(setq e (entget (entlast))) >
и если использовать ее в командной строке то работает.
Если есть какой то простой способ, то скажите, буду очень РАД!
sersgey_r вне форума  
 
Непрочитано 25.06.2007, 13:46
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Спробуй, я особо не тестировал:
Код:
[Выделить все]
(defun _kpblc-get-textbox (string lst / style height rot width obliq base)
                          ;|
*    Функция-аналог textbox'a. Возвращает координаты однострочного (!) текста
* в текущей системе координат.
*    Параметры вызова:
*	string	строка, для которой надо получить textbox
*	lst	список дополнительных параметров:
      '(("style" . <Имя стиля текста>)	; nil либо отсутствующий - используется текущий
	("base" . <Базовая точка, от которой вычислять координаты>) ; nil -> 0. 0. 0.
	("height" . <Высота текста>)	; nil -> берется из style либо, если в
		; style высота = 0, (getvar "textsize")
	("rotate" . <Угол поворота, радиан>)	; nil -> 0.
	("width" . <Коэффициент сужения>)	; nil -> 1.
	("angle" . <Угол наклона от вертикали>)	; nil -> 0.
	)
|;
  (if (or (not (cdr (assoc "style" lst)))
          (not (tblobjname "style" (cdr (assoc "style" lst))))
          ) ;_ end of or
    (setq style (getvar "textstyle"))
    (setq style (cdr (assoc "style" lst)))
    ) ;_ end of if
  (setq height (cond
                 ((and (cdr (assoc "height" lst))
                       (>= (cdr (assoc "height" lst)))
                       ) ;_ end of and
                  (cdr (assoc "height" lst))
                  )
                 ((/= 0. (cdr (assoc 40 (entget (tblobjname "style" style)))))
                  (cdr (assoc 40 (entget (tblobjname "style" style))))
                  )
                 (t (getvar "textsize"))
                 ) ;_ end of cond
        rot    (cond ((cdr (assoc "rotate" lst)))
                     (t 0.)
                     ) ;_ end of cond
        width  (cond ((cdr (assoc "width" lst)))
                     (t 1.)
                     ) ;_ end of cond
        obliq  (cond ((cdr (assoc "angle" lst)))
                     (t 0.)
                     ) ;_ end of cond
        base   (cond ((cdr (assoc "base" lst)))
                     (t '(0. 0. 0.))
                     ) ;_ end of cond
        ) ;_ end of setq
  (mapcar '(lambda (x)
             (polar base rot (distance x base))
             ) ;_ end of LAMBDA
          (textbox (list (cons 0 "TEXT")
                         '(100 . "AcDbEntity")
                         '(100 . "AcDbText")
                         (cons 10 base)
                         (cons 40 height)
                         (cons 1 string)
                         (cons 50 0.)
                         (cons 41 width)
                         (cons 51 obliq)
                         (cons 7 style)
                         ) ;_ end of list
                   ) ;_ end of textbox
          ) ;_ end of mapcar
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.06.2007, 10:11
#7
sersgey_r

Учусь писать прогри на лиспе
 
Регистрация: 15.06.2007
Таганрог
Сообщений: 8


спасибо, тестирую
а подскажи как после вывода строки ее удалить как графический объект???
чтобы от нее ничего не осталось???
Цитата:
(setq sp (list 10.0 10.0))
(setq ss3 s) ; здесь s - введенная строка
(command "TEXT" "_J" "_M" sp 3.0 0 ss3)
Заранее спасибо )
sersgey_r вне форума  
 
Непрочитано 26.06.2007, 10:36
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Не очень понял на фига его вообще создавать - в моем коде строка (Добавлено: Поправка - не строка, конечно, а однострочный текст) не создается. Но тем не менее, как вариант, с неполной проверкой на ошибки (слой-то может быть заблокирован, поэтому объект может быть создан, но не удален):
Код:
[Выделить все]
  (setq command_executing_result ; сюда засовываем результат выполнения команды
         (if
           (= (cdr (assoc 40 (entget (tblobjname "style" (getvar "textstyle"))))) 0.)
            (vl-cmdf "_.text" "_j" "_m" base_point 3.0 0.0 string)
            (vl-cmdf "_.text" "_j" "_m" base_point 0. string)
            ) ;_ end of if
        ) ;_ end of setq
  (if command_executing_result ; если t, то есть объект был создан
    (progn
      (entdel (entlast))
      (princ
        "\nОбъект однострочного текста был успешно создан и впоследствии удален"
        ) ;_ end of princ
      ) ;_ end of progn
    (princ "\n*** Ошибка! Объект невозможно создать!")
    ) ;_ end of if
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как в липе получить атрибуты шрифта??

Опции темы Поиск в этой теме
Поиск в этой теме:

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