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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как вставить поле с источником из атрибута блока

Как вставить поле с источником из атрибута блока

Ответ
Поиск в этой теме
Непрочитано 17.08.2015, 17:11 #1
Как вставить поле с источником из атрибута блока
Сет
 
Регистрация: 19.11.2014
Сообщений: 2,435

Есть блок (штамп чертежа) с атрибутами. На скриншоте сверху как раз часть этого блока с надписью Узлы 5, 6. А снизу поле с источником из этого атрибута. Как видно в поле перед надписью содержится префикс \W0.8000;. Атрибут - это текст с несколькими строками, вписанный в рамку. Степень сжатия этого текста - 0.8. Если установить степень сжатия 1, то в поле никакого префикса нет и содержится только значение атрибута. Как сделать, чтобы и при степени сжатия 0.8 в поле содержалось только значение атрибута?

Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 48
Размер:	10.4 Кб
ID:	155200  


Последний раз редактировалось Сет, 17.08.2015 в 18:20.
Просмотров: 2660
 
Непрочитано 17.08.2015, 17:19
#2
Кулик Алексей aka kpblc
Moderator

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


А поискать? http://forum.dwg.ru/showthread.php?t=92143 или http://forum.dwg.ru/showthread.php?t=111806
http://www.google.ru/cse?cx=partner-...%82&gsc.page=1
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.08.2015, 20:27
#3
Сет


 
Регистрация: 19.11.2014
Сообщений: 2,435


Попробовал лисп отсюда. Команда unf-mtext выдает ошибку:
Цитата:
no function definition: _KPBLC-CLEAR-MTEXTОшибка Automation. Неверный слой
Автокад 2016.
Сет вне форума  
 
Непрочитано 18.08.2015, 19:43
#4
AnatolyCB

Проектирование
 
Регистрация: 08.12.2006
Сообщений: 18


Алексей, здравствуйте!
Не могли бы Вы посмотреть lisp файл для вставки поля из любого источника.
Он раньше работал , на 2010 автокаде, по крайней мере, а потом перестал.
Думаю, многим было бы интересно.
Вложения
Тип файла: lsp field.lsp (1.3 Кб, 29 просмотров)
AnatolyCB вне форума  
 
Непрочитано 19.08.2015, 00:03
1 | #5
Кулик Алексей aka kpblc
Moderator

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


Проблема в функции преобразования в десятичное значение указателя на объект. Сейчас переделываю...
Код:
[Выделить все]
           ;*********текст в поле в ***********
(vl-load-com)

(defun c:ttf (/ _kpblc-conv-string-hex-to-dec source dest err adoc)

  (defun _kpblc-conv-string-hex-to-dec (hexstr / n i a s fun_conv-string-to-value)
                                       ;|
*    Функция преобразования шестнадцатиричной строки в десятичное число. Автор: А.Ривилис
* http://www.autocad.ru/cgi-bin/f1/board.cgi?t=29431LT
* Возвращает число.
|;

    (setq n 0.0
          i 0
          ) ;_ end of setq
    (setq hexstr (strcase hexstr))
    (while (> (strlen hexstr) 0)
      (setq s (substr hexstr (strlen hexstr) 1)
            a (ascii s)
            ) ;_ end of setq
      (cond
        ((<= (ascii "0") a (ascii "9")) (setq a (- a (ascii "0"))))
        ((<= (ascii "A") a (ascii "F")) (setq a (+ 10. (- a (ascii "A")))))
        ) ;_ end of cond
      (setq n (+ n (* a (expt 16. i)))
            i (1+ i)
            ) ;_ end of setq
      (setq hexstr (substr hexstr 1 (1- (strlen hexstr))))
      ) ;_ end of while
    n
    ) ;_ end of defun

  (if
    (and (= (type (setq source (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (car (nentsel "\nВыберите текст-источник <Отмена> : "))
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'ename
            ) ;_ end of =
         (vlax-property-available-p (vlax-ename->vla-object source) 'textstring t)
         (= (type
              (setq
                dest (vl-catch-all-apply (function (lambda () (car (nentsel "\nВыберите текст-приемник <Отмена> : ")))))
                ) ;_ end of setq
              ) ;_ end of type
            'ename
            ) ;_ end of =
         (vlax-property-available-p (vlax-ename->vla-object dest) 'textstring t)
         ) ;_ end of and
     (progn
       (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
       (if (vl-catch-all-error-p (setq err
                                        (vl-catch-all-apply
                                          (function
                                            (lambda ()
                                              (entmod
                                                (subst
                                                  (cons
                                                    1
                                                    (strcat
                                                      "%<\\AcObjProp Object(%<\\_ObjId "
                                                      (rtos
                                                        (_kpblc-conv-string-hex-to-dec
                                                          (vl-string-trim
                                                            " <>"
                                                            (substr
                                                              (vl-princ-to-string (cdr (assoc -1 (entget source))))
                                                              (+ 2
                                                                 (vl-string-position (ascii ":")
                                                                                     (vl-princ-to-string (cdr (assoc -1 (entget source))))
                                                                                     ) ;_ end of vl-string-position
                                                                 ) ;_ end of +
                                                              ) ;_ end of substr
                                                            ) ;_ end of vl-string-trim
                                                          ) ;_ end of _kpblc-conv-string-hex-to-dec
                                                        2
                                                        0
                                                        ) ;_ end of rtos
                                                      ">%).TextString>%"
                                                      ) ;_ end of strcat
                                                    ) ;_ end of cons
                                                  (assoc 1 (entget dest))
                                                  (entget dest)
                                                  ) ;_ end of subst
                                                ) ;_ end of entmod
                                              (entupd dest)
                                              (vla-regen adoc acactiveviewport)
                                              ) ;_ end of lambda
                                            ) ;_ end of function
                                          ) ;_ end of vl-catch-all-apply
                                       ) ;_ end of setq
                                 ) ;_ end of vl-catch-all-error-p
         (princ (strcat "\n** error ** : Ошибка обновления приемника : " (vl-catch-all-error-message err)))
         ) ;_ end of if
       (vla-endundomark adoc)
       ) ;_ end of progn
     ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.08.2015, 06:46
#6
AnatolyCB

Проектирование
 
Регистрация: 08.12.2006
Сообщений: 18


Мощно...
Все вставляется и обновляется...
Спасибо, Алексей!
AnatolyCB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как вставить поле с источником из атрибута блока

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка значения атрибута блока в поле в блоке Prying AutoCAD 28 08.09.2020 17:51
Lisp. авто-нумерация атрибута блока. DonJad LISP 10 26.10.2014 02:04
Присвоение атрибуту блока значения атрибута другого блока. shartal Программирование 4 14.11.2013 14:02
Вставка в таблицу поля, ссылающегося на атрибут блока. shartal Программирование 7 23.01.2013 15:26