Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
vla-hittest срабатывает, насколько я помню, только для таблиц.
Да. Конечно.
2
Не покатит. При обработке данных внутри блоков / ссылок nentsel - самое то. vla-hittest срабатывает, насколько я помню, только для таблиц.
3
Вывод - (vla-HitTest) "наше всё".
4
Хорошо видно, что для shx-шрифтов при наведении на текст в таблице он подсвечивается:

а ttf-текст - нет:

Я проверял в AutoCAD 2018 со всеми обновлениями.
5
Что самое забавное - если взять shx-шрифт, не имеющий в своем составе, например, символа № (вместо него будет подставляться соответствующий символ из ttf), то выделение на части текста с shx сработает, а на ttf - нет.
6
Очень похоже на баг. Интересно, что если расчленить таблицу, то (nentsel) прекрасно работает с получившимися MTEXT'ами и для shx- и для ttf-шрифтов.
7
Если коротко, то в коде было допущено 2 ошибки:
1. опечатка - вместо pickset было вбито pikset
2. Ошибка в назначениях точек при выводе на печать.

Исправленный код (но уже без объяснений):
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2.  
  3. (setq *adoc* (vla-get-activedocument (vlax-get-acad-object)))
  4.  
  5. (defun c:poly-by-blocks (/ selset ins)
  6.   (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "INSERT"))))))))
  7.          'pickset
  8.          ) ;_ end of =
  9.     (progn
  10.       (foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))))
  11.         (if (wcmatch (strcase (vla-get-effectivename ent)) "A1,À1")
  12.           (progn (setq ins (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent))))
  13.                  (poly-plot (getfiled "Where to plot" "" "pdf" 1)
  14.                             ;;"c:\\Users\\evthi\\Desktop\\Òåñò"
  15.                             (mapcar (function (lambda (x) (mapcar '+ ins x))) '((0. 0. 0.) (841. 594. 0.)))
  16.                             ) ;_ end of poly-plot
  17.                  ) ;_ end of progn
  18.           ) ;_ end of if
  19.         ) ;_ end of foreach
  20.       ) ;_ end of progn
  21.     ) ;_ end of if
  22.   ) ;_ end of defun
  23.  
  24. (defun poly-plot (filename pt-lst / layout)
  25.   (setq layout (vla-get-activelayout *adoc*)
  26.         pt-lst (mapcar (function (lambda (x) (list (car x) (cadr x)))) pt-lst)
  27.         ) ;_ end of setq
  28.   (vla-refreshplotdeviceinfo layout)
  29.   (vla-put-configname layout "DWG to PDF.pc3")
  30.   (vla-put-canonicalmedianame layout "ISO_full_bleed_A1_(594.00_x_841.00_MM)")
  31.   (vla-put-centerplot layout :vlax-true)
  32.   (vla-put-plotrotation layout ac90degrees)
  33.   (vla-put-standardscale layout acscaletofit)
  34.   (vla-put-stylesheet layout "acad.ctb")
  35.   (vla-setwindowtoplot
  36.     layout
  37.     (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 1)) (car pt-lst))
  38.     (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 1)) (last pt-lst))
  39.     ) ;_ end of vla-setwindowtoplot
  40.   (vla-put-plottype layout acwindow)
  41.   (vla-regen *adoc* acallviewports)
  42.   (vla-plottofile (vla-get-plot *adoc*) filename)
  43.   ) ;_ end of defun
  44.  
8
Создадим в dwg текстовый стиль (например, "shx-style"), использующий shx-шрифт. Следом создаем табличный стиль, использующий в качестве текстового стиля "shx-style"(пусть будет "table-shx"). Создаем таблицу со стилем "table-shx".
В VLIDE выполняем (nentsel), указываем на текстовое содержимое любой ячейки - и получаем результат наподобие
Код - Auto/Visual Lisp [Выбрать]
  1. '(<Entity name: 7ffffb06720> (1848.48 1935.88 0.0) ((1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0) (1755.23 1951.91 0.0)) (<Entity name: 7ffffb066e0>))
Т.е. функция сработала.
Теперь создаем текстовый стиль с ttf-шрифтом ("ttf-style"), и табличный стиль ("table-ttf"), использующий "ttf-style". Опять выполняем (nentsel) - и получаем nil при попытке выбора текста любой ячейки.
Это что, ошибка? Или так и должно быть?
P.S. Во вложении - пример. Все операции по созданию стилей и объектов выполнялись вручную.
Обнаружено в AutoCAD 2016.
9
Было такое.
Как проявляется: значок внизу меняется c En на Ru и обратно. Но при любом значении в AutoCAD пишет только по-английски.
Причина: открытие разных версий AutoCAD в одном сеансе. Точную комбинацию уже не вспомню, вроде как открываем AutoCAD 2016, потом 2017 и в 2016 перестает переключаться раскладка.
Старая тема об этом на dwg.ru: https://forum.dwg.ru/showthread.php?t=44999
10
И почитай эту тему (если переключаешь через ALT+SHIFT): http://adn-cis.org/forum/index.php?topic=398.0
Страницы: [1] 2 3 ... 10