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

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

создание из множества размеров одного Mtext

Ответ
Поиск в этой теме
Непрочитано 11.06.2010, 12:57 #1
создание из множества размеров одного Mtext
sasha_lif
 
Дизайнер-конструктор
 
Kiev
Регистрация: 29.05.2004
Сообщений: 1,179

Задача:
Проставлено множество размеров (линейные, наклонные, радиусы, диаметры...) в пространстве model.
"Перебитые" вручную значения- учитывать именно как перебитые, а не реальные значения размера
Необходимо:
создать Mtext, в котором через пробел или запятую, были бы перечислены ЗНАЧЕНИЯ проставленных размеров.

Размеры выбираем секущей рамкой
__________________
Kiev, Ukraine

Последний раз редактировалось sasha_lif, 11.06.2010 в 13:07.
Просмотров: 5307
 
Непрочитано 11.06.2010, 15:00
#2
Кулик Алексей aka kpblc
Moderator

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


По-моему, такое только программно можно сделать...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.06.2010, 15:23
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от sasha_lif Посмотреть сообщение
Задача:
Проставлено множество размеров (линейные, наклонные, радиусы, диаметры...) в пространстве model.
"Перебитые" вручную значения- учитывать именно как перебитые, а не реальные значения размера
Необходимо:
создать Mtext, в котором через пробел или запятую, были бы перечислены ЗНАЧЕНИЯ проставленных размеров.

Размеры выбираем секущей рамкой
допустим у вас в чертеже различные размеры (диаметр, наклонный, ортогональный) будут иметь значение "15" - причём для одних - это реальный размер, для других вбитый вручную...

Ну выведете вы в mtext значение "15" и чего? телепатией будете определять к какому примитиву это число относится?

Я бы ещё понял, если бы нужно было подсветить др. цветом "левые" размеры, или перенести на др. слой, но... Всё свалить в один mtext - это по меньшей мере странно....

имхо.

Последний раз редактировалось hwd, 11.06.2010 в 15:29.
hwd вне форума  
 
Автор темы   Непрочитано 11.06.2010, 16:42
#4
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


hwd, мне не надо определять, что к какому примитиву относится, т.к все детали одинаковые по СУТИ.
И этот мультитекст нужен для того, чтобы не печатать кучу чертежей, на которых погонажные детали (например плинтус), а дать просто перечень отдельных кусков
Кулик Алексей aka kpblc, а как программно, не поможете?

В принципе, перебитые размеры можно не учитывать, это применяю достаточно редко
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 11.06.2010, 17:00
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от sasha_lif Посмотреть сообщение
hwd, мне не надо определять, что к какому примитиву относится, т.к все детали одинаковые по СУТИ.
И этот мультитекст нужен для того, чтобы не печатать кучу чертежей, на которых погонажные детали (например плинтус), а дать просто перечень отдельных кусков
в данном случае под примитивами мною подразумевались экземпляры размерных объектов.

Т.е. в значении размера, через запятую должны стоять альтернативные значения? Если "да", то Mtext здесь ни при чём...

п.с. покажите скрин, как это должно выглядеть.
hwd вне форума  
 
Автор темы   Непрочитано 11.06.2010, 20:03
#6
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Рисунок приложил

При этом- некоторые участки не образмерены, и соответсвенно в Mtextе их нет
Т.е. в mtext должны попасть значения размеров, заданных секущей рамкой

ps/ а потом я рядом дам сечение этих деталей
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 134
Размер:	42.0 Кб
ID:	40705  
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 11.06.2010, 20:21
1 | #7
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Если правильно понял, поможет http://www.caduser.ru/forum/index.ph...D=44&TID=21894
Накопируй много строк однострочного текста, типа ХХХ, затем перещелкай размерные тексты вместо ХХХ и затем объедини в мтекст
Vova вне форума  
 
Автор темы   Непрочитано 11.06.2010, 20:43
#8
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Vova, спасибо, буду читать...
только по одному перещелкивать? Скопом не выйдет?
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 11.06.2010, 20:46
#9
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от sasha_lif Посмотреть сообщение
Рисунок приложил

При этом- некоторые участки не образмерены, и соответсвенно в Mtextе их нет
Т.е. в mtext должны попасть значения размеров, заданных секущей рамкой

ps/ а потом я рядом дам сечение этих деталей
Порядок перечисления чисел важен?
hwd вне форума  
 
Автор темы   Непрочитано 14.06.2010, 12:15
#10
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


hwd,
Цитата:
Порядок перечисления чисел важен?
НЕТ
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 14.06.2010, 12:38
#11
atollon


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


Ну и кому нужен произвольный список чисел?
Для игры - Угадай с трех раз - какое число к какому размеру?
Тоже относиться к выбору (сек)рамкой - для автокада последоватьельность будет в порядке отрисовки (а она может оказаться случайной при простановке-редактировании) а не то как видно сегмент за сегментом
__________________
Толстов Евгений
atollon вне форума  
 
Автор темы   Непрочитано 14.06.2010, 13:13
#12
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


atollon, повторяю, мне НЕ важен порядок перечисления объектов
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 14.06.2010, 13:18
#13
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от sasha_lif Посмотреть сообщение
atollon, повторяю, мне НЕ важен порядок перечисления объектов
я согласен с atollon. Ежели порядок произволен, то поскольку не известно, к какому размеру какое число относится, смысл озвученной задачи теряется.
hwd вне форума  
 
Непрочитано 14.06.2010, 13:46
1 | #14
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(vl-load-com)

(defun test (/ selset sep adoc pt)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of  vla-startundomark
  (if
    (and (= (type (setq selset (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (ssget '((0 . "DIMENSION")))
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'pickset
            ) ;_ end of =
         (= (type
              (setq
                sep (vl-catch-all-apply
                      (function
                        (lambda (/ res)
                          (if (= (setq
                                   res (getstring t
                                                  "\nРазделитель <Пробел> : "
                                                  ) ;_ end of  getstring
                                   ) ;_ end of  setq
                                 ""
                                 ) ;_ end of  =
                            " "
                            res
                            ) ;_ end of if
                          ) ;_ end of lambda
                        ) ;_ end of function
                      ) ;_ end of vl-catch-all-apply
                ) ;_ end of setq
              ) ;_ end of type
            'str
            ) ;_ end of =
         (= (type (setq pt
                         (vl-catch-all-apply
                           (function
                             (lambda ()
                               (getpoint "\nТочка вставки результата <Отмена> : ")
                               ) ;_ end of lambda
                             ) ;_ end of function
                           ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'list
            ) ;_ end of =
         ) ;_ end of and
     (progn
       (vla-put-height
         (vla-addmtext
           (vla-objectidtoobject
             adoc
             (vla-get-ownerid
               (vlax-ename->vla-object (ssname selset 0))
               ) ;_ end of vla-get-ownerid
             ) ;_ end of vla-objectidtoobject
           (vlax-3d-point pt)
           0.
           ((lambda (/ lst)
              (setq
                lst (mapcar
                      (function
                        (lambda (x /)
                          (setq x (vlax-ename->vla-object x))
                          (strcat
                            (vla-get-textprefix x)
                            (if
                              (member (vla-get-textoverride x) '("" "<>"))
                               (rtos (vla-get-measurement x)
                                     2
                                     (getvar "dimdec")
                                     ) ;_ end of  rtos
                               (vla-get-textoverride x)
                               ) ;_ end of if
                            (vla-get-textsuffix x)
                            ) ;_ end of strcat
                          ) ;_ end of lambda
                        ) ;_ end of function
                      ((lambda (/ tab item res)
                         (repeat (setq tab  nil
                                       item (sslength selset)
                                       ) ;_ end setq
                           (setq tab
                                  (cons (ssname selset (setq item (1- item)))
                                        tab
                                        ) ;_ end of  cons
                                 ) ;_ end of  setq
                           ) ;_ end of repeat
                         ) ;_ end of lambda
                       )
                      ) ;_ end of mapcar
                ) ;_ end of setq
              (strcat
                (car lst)
                (apply
                  (function strcat)
                  (mapcar
                    (function
                      (lambda (x) (strcat sep x))
                      ) ;_ end of  function
                    (cdr lst)
                    ) ;_ end of  mapcar
                  ) ;_ end of  apply
                ) ;_ end of  strcat
              ) ;_ end of lambda
            )
           ) ;_ end of vla-addmtext
         (if (equal (cdr (assoc 40 (entget (tblobjname "style" (getvar "textstyle"))))) 0.0 1e-3)
           (getvar "textsize")
           (cdr (assoc 40 (entget (tblobjname "style" (getvar "textstyle")))))
           ) ;_ end of  if
         ) ;_ end of  vla-put-Height
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 14.06.2010 в 15:54.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.06.2010, 13:48
#15
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Еще раз:
имеется много различных кусков погонажных деталей (например деревянного плинтуса), необходимо столярам изготовить эти куски необходимого размера.
(Возможно, я отсортирую по возрастанию размеров), После этого на установке установщики выбирают наиболее им подходящий кусок из имеющихся и крепят его. Все детали все равно идут с запасом.
Цель: не печатать много листов с планами, а выдать список всего погонажа.
(При необходимости я буду разделять список по этажам или комнатам)

Поэтому, в данном конкретном случае, ПОРЯДОК ПЕРЕЧИСЛЕНИЯ ОБЪЕКТОВ НЕ ВАЖЕН.
В принципе, то что VOVA предагал №7 подходит, но там необходимо на каждом размере щелкать, а сек. рамкой - нельзя выбирать размеры, ну или как вариант через предварительно сформированный filter
Код:
[Выделить все]
^C^C(sssetfirst nil (ssget '((0 . "DIMENSION,ARC_DIMENSION,LARGE_RADIAL_DIMENSION")) ))
Может отсюда проще взять все полученные значения размеров и закинуть в Mtext?


Кулик Алексей aka kpblc

Юникод потерялся в тексте. Нельзя разобрать текст приглашений (getpoint "\nТочка вставки результата <Отмена> : ")
Странно : взял с кода getpoint вижу в виде "закорючек" текст приглашения,если вставить в блокнот, а если вставить в пост, и сохранить, то текст становится читаемым !

Да, работает, но в перечне размеров добавлет к каждому размеру один знак после запятой, хотя в стиле стоят размеры = показывать только целые значения.
Т.е. размер 550 , а заносит в Mtext 550 целых 0 десятых =(550.0)можно подправить?

Большое спасибо!
__________________
Kiev, Ukraine

Последний раз редактировалось sasha_lif, 14.06.2010 в 14:17.
sasha_lif вне форума  
 
Непрочитано 14.06.2010, 14:26
#16
Кулик Алексей aka kpblc
Moderator

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


Текст кода исправил. А вот с точностью... Попробуй заменить vl-princ-to-string в коде на rtos. По идее должно сработать (хотя, как говорится, "возможны варианты"). На форуме было весьма интересное обсуждение этой задачи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.06.2010, 14:47
#17
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Кулик Алексей aka kpblc, ага , лисп берет значения реальные, с точностью поставленной в Units (в итоге получаем вместо напр. 123 --- 123,347), а не из размерного стиля.
А нельзя ли поставить точность = как в DIMDEC?

Ошибка- первый элемент списка печатает ДВА РАЗА
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 14.06.2010, 14:58
#18
Кулик Алексей aka kpblc
Moderator

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


Вроде бы ошибку исправил, точность как в dimdec поставил. Правда, код не гонял - сейчас не могу запустить AutoCAD, поэтому изменения "насухую".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.06.2010, 15:27
#19
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Кулик Алексей aka kpblc, Да, спасибо.
Все как я хотел. По Dimdec работает корректоно

Если можно, то последний штрих-сделать, чтобы высота созданного программой Mtext, равнялась высоте шрифта , заданного в "-Style"

СПАСИБО !
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 14.06.2010, 15:46
#20
Кулик Алексей aka kpblc
Moderator

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


В каком "style"? Текущем?
Добавлено: а если там выставлен 0?
Добавлено 2: #14 исправил. Если в текущем текстовом стиле выставлена высота 0, будет браться высота из textsize.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 14.06.2010 в 15:55.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > создание из множества размеров одного Mtext



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций) Red Nova LISP 666 07.06.2023 14:00
изменить стиль MTEXT Redya AutoCAD 31 20.10.2019 10:44
Требуется помощь,что бы Mleader не опускался Composter Программирование 79 04.12.2018 18:03
Как получить MTEXT но без форматирования, только текст? lexluther Программирование 14 13.09.2009 22:52
Требуется помощь с циклом в лиспе Composter LISP 28 13.05.2009 11:14