LISP. Чтение величины выделенного параллельного размера и запись в его текстовую строку (свойства этого размера).
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Чтение величины выделенного параллельного размера и запись в его текстовую строку (свойства этого размера).

LISP. Чтение величины выделенного параллельного размера и запись в его текстовую строку (свойства этого размера).

Ответ
Поиск в этой теме
Непрочитано 18.08.2012, 23:48 #1
LISP. Чтение величины выделенного параллельного размера и запись в его текстовую строку (свойства этого размера).
Джаз
 
Регистрация: 16.06.2009
Сообщений: 39

Прошу помощи в следующем.
Тошнит от следующей рутины:
Выделяю параллельный размер, захожу в его свойства. Руками в поле "Текстовая строка" ввожу округлённую до см величину размера. И переношу этот размер из слоя "Привязки" в слой "Привязки_Редакт".



Поле ввода обвёл красным. Подскажите, какой функцией считать величину размера и какой отредактировать его текстовую строку.

Миниатюры
Нажмите на изображение для увеличения
Название: sv.jpg
Просмотров: 234
Размер:	31.9 Кб
ID:	85648  

Просмотров: 2501
 
Непрочитано 18.08.2012, 23:58
#2
Кулик Алексей aka kpblc
Moderator

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


А настроить размерный стиль не катит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2012, 00:06
#3
Джаз


 
Регистрация: 16.06.2009
Сообщений: 39


Размерный стиль настроен. С округлением до см.
Но некоторые привязки приходится разносить и двигать. А величина размера должна оставаться первоначальная. Отсюда и вписываем в текстовую строку.
P.S.Некоторые взрывают размер и располагают кусочки, как нужно.
Джаз вне форума  
 
Непрочитано 19.08.2012, 00:21
#4
Кулик Алексей aka kpblc
Moderator

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


А потом начинается "неправильные подсчеты", "несходимость габаритов" и т.п. Меняй подход. ИМХО это будет более правильным решением.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2012, 01:32
#5
Джаз


 
Регистрация: 16.06.2009
Сообщений: 39


Этот подход мне тоже не нравится, но это компромисс.
Чертежи испoлнительные, результат на бумаге и в .dwf
Поэтому подсчёты и несходимость не про это.
Текущий пример.



Зеленые привязки не редактированные. А вот жёлтые - редактированные вышеописанным способом. Плюс к размеру приставлена дуга.
Привязки в разных слоях, с разным цветом. Чтобы отличать.
P.S. Пытался делать динамический блок на криволинейные привязки, писал лисп. Но всё не то.
Миниатюры
Нажмите на изображение для увеличения
Название: priv.jpg
Просмотров: 241
Размер:	58.4 Кб
ID:	85650  
Джаз вне форума  
 
Непрочитано 19.08.2012, 03:33
1 | #6
Reka

просто конструктор
 
Регистрация: 12.02.2008
Космос
Сообщений: 358


В Дауне имеются DimDen.lsp и LD.lsp. Спасибо Денису Флюстикову и Lee McDonnell, соответственно! Давно с успехом пользуюсь.
Думаю в Вашем случае решат проблему.
__________________
Чистая совесть только у людей с короткой памятью.
Reka вне форума  
 
Автор темы   Непрочитано 19.08.2012, 12:23
#7
Джаз


 
Регистрация: 16.06.2009
Сообщений: 39


Спасибо, буду пробовать.
Джаз вне форума  
 
Непрочитано 20.08.2012, 09:19
1 | #8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Джаз Посмотреть сообщение
Но некоторые привязки приходится разносить и двигать. А величина размера должна оставаться первоначальная. Отсюда и вписываем в текстовую строку.
P.S.Некоторые взрывают размер и располагают кусочки, как нужно.
Перед тем как разносить, обработай размеры командой DIMTXT. Она запишет значение размера в Textoverride

Код:
[Выделить все]
(vl-load-com)
(defun c:dimtxt (/ adoc ss dim-get-text-string)
  (defun dim-get-text-string ( dim / str)
 (if (= (type dim) 'VLA-OBJECT)(setq dim (vlax-vla-object->ename dim)))
 (setq str "")
   (vlax-for item (vla-item (vla-get-blocks
                         (vla-get-activedocument (vlax-get-acad-object))
                       ) ;_ end of vla-get-Blocks
                       (cdr (assoc 2 (entget dim)))
             ) ;_ end of vla-item
     (if (vlax-property-available-p item 'Textstring)
          (setq str (vla-get-textstring item))
       )
     )
  str
  )
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq ss (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget "_:L"
                                         '((0 . "DIMENSION")
                                           (-4 . "<OR")
                                           (1 . "")
                                           (1 . "<>")
                                           (-4 . "OR>")
                                           )
                                         ) ;_ end of ssget
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'pickset
         ) ;_ end of =
    (foreach ent (mapcar (function vlax-ename->vla-object)
                         (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
                         ) ;_ end of mapcar
;;;      (vl-catch-all-apply(function(lambda ()(vla-put-color ent 62)))) ;;;Цвет размера
      (vl-catch-all-apply
        (function
          (lambda ()
            (vla-put-textoverride ent (dim-get-text-string ent))
            ) ;_ end of lambda
          ) ;_ end of function
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of foreach
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 20.08.2012, 23:42
#9
Джаз


 
Регистрация: 16.06.2009
Сообщений: 39


VVA, выручили!
То, что доктор прописал.
Уже использую по назначению.
Джаз вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Чтение величины выделенного параллельного размера и запись в его текстовую строку (свойства этого размера).