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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перенос размеров, в которых заполнено поле "text override", на отдельный слой

Перенос размеров, в которых заполнено поле "text override", на отдельный слой

Ответ
Поиск в этой теме
Непрочитано 18.11.2008, 12:44 #1
Перенос размеров, в которых заполнено поле "text override", на отдельный слой
Witalij
 
AL-остекление, фасадка, оконка
 
Москва
Регистрация: 25.07.2007
Сообщений: 113

Собственно, сабж!
Я очень не люблю перебивать текст в размерах - это сильно увеличивает вероятность косяка по ним в будущем.

Можно ли?:
- выделить квикселектом на листе все размеры с перебитыми величинами
- либо перенести все их на отдельный слой.
Какой лисп для этого нужен?
__________________
Фасадку черчу...
Просмотров: 5797
 
Непрочитано 18.11.2008, 13:09
#2
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


можно.
можно после выделения qselect.
можно и штатными средствами обойтись см. выше.

Последний раз редактировалось Donhuan, 18.11.2008 в 13:17.
Donhuan вне форума  
 
Непрочитано 18.11.2008, 13:25
#3
VVA

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


Лиспы есть здесь Там перебитые размеры выделяются цветом, но в принципе можно и на слой.
Цитата:
Можно ли?:
- выделить квикселектом на листе все размеры с перебитыми величинами
Можно, но отдельно линейные, параллельные и т.д. размеры (см. картинку)
Попробуй эту кнопку
Код:
[Выделить все]
 (SSSETFIRST nil (ssget"_X"'((0 . "*DIMENSION")(1 . "?*"))))
Миниатюры
Нажмите на изображение для увеличения
Название: QS.jpg
Просмотров: 358
Размер:	45.7 Кб
ID:	12341  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.11.2008, 13:52
#4
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Небольшой dvb на ту же тему...
Вложения
Тип файла: dvb DimLay.dvb (48.0 Кб, 138 просмотров)
AlexV вне форума  
 
Автор темы   Непрочитано 18.11.2008, 14:43
#5
Witalij

AL-остекление, фасадка, оконка
 
Регистрация: 25.07.2007
Москва
Сообщений: 113
<phrase 1=


Цитата:
Сообщение от AlexV Посмотреть сообщение
Небольшой dvb на ту же тему...
А как им пользоваться? Я его загрузил - и что?
__________________
Фасадку черчу...
Witalij вне форума  
 
Непрочитано 18.11.2008, 14:54
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Witalij Посмотреть сообщение
А как им пользоваться? Я его загрузил - и что?
После запуска макроса появляется форма. В комбобоксе "Слой" выбираем нужный слой, на который хотим перенести правленные размеры. Во втором комбобоксе выбираем тип поиска размерных объектов- по всему чертежу или выделением рамкой. Ну и при нажатии на кнопку размеры с исправленным текстом должны перенестись на нужный слой. (проверки на заблокированность и т.д. слоя не делал. Нужно будет - могу дописать.)
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 158
Размер:	11.7 Кб
ID:	12351  
AlexV вне форума  
 
Автор темы   Непрочитано 18.11.2008, 16:49
#7
Witalij

AL-остекление, фасадка, оконка
 
Регистрация: 25.07.2007
Москва
Сообщений: 113
<phrase 1=


Цитата:
Сообщение от AlexV Посмотреть сообщение
После запуска макроса
Так как запустить-то его - я его только загрузил!
__________________
Фасадку черчу...
Witalij вне форума  
 
Автор темы   Непрочитано 18.11.2008, 17:24
#8
Witalij

AL-остекление, фасадка, оконка
 
Регистрация: 25.07.2007
Москва
Сообщений: 113
<phrase 1=


Воспользовавшись разными лиспами выбрал в итоге:
Код:
[Выделить все]
;|=============================================================================
*    проверка размеров на правильность проставления. Вручную проставленные
* размеры меняют цвет на 1, вес линии на 2.11 мм. Переназначения текста не
* выполняется
=============================================================================|;
(defun c:kpblc-dimcheck (/ *kpblc-activedoc* selset item temp_text)
  (vl-load-com)
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *kpblc-activedoc*)
  (setq selset (ssget "_X" '((0 . "DIMENSION"))))
  (while (and selset
       (> (sslength selset) 0)
       (setq item (ssname selset 0))
       (ssdel item selset)
       ) ;_ end of and
    (setq item (vlax-ename->vla-object item))
    (if (and (/= (vla-get-textoverride item) "")
      (not (wcmatch (vla-get-textoverride item) "*<>*"))
      ) ;_ end of and
      (progn
 (vla-put-color item 1)  ; цвет - красный
 (vla-put-lineweight item 015) ; вес линии - 2.11
 (vla-put-linetype item "ZIGZAG") ; тип линии - ??
 (vla-put-LinetypeScale item 0.25) ; тип линии - ??
 (setq temp_text (vla-get-textoverride item))
 ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of while
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
Скрипт выделяет типом линии и цветом все "вручную" забитые размеры.
Вопрос - как мне загрузить перед заданием типа линии сам тип линии Зигзаг??

Для возврата использую:
Код:
[Выделить все]
;|=============================================================================
*    проверка размеров на правильность проставления. Вручную проставленные
* размеры меняют цвет на 1, вес линии на 2.11 мм. Переназначения текста не
* выполняется
=============================================================================|;
(defun c:kpblc-dimcheck-undo (/ *kpblc-activedoc* selset item temp_text)
  (vl-load-com)
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *kpblc-activedoc*)
  (setq selset (ssget "_X" '((0 . "DIMENSION"))))
  (while (and selset
       (> (sslength selset) 0)
       (setq item (ssname selset 0))
       (ssdel item selset)
       ) ;_ end of and
    (setq item (vlax-ename->vla-object item))
    (if (and (/= (vla-get-textoverride item) "")
      (not (wcmatch (vla-get-textoverride item) "*<>*"))
      ) ;_ end of and
      (progn
 (vla-put-color item 5)  ; цвет - красный
 (vla-put-lineweight item 015) ; вес линии - 2.11
 (vla-put-linetype item "CONTINUOUS") ; тип линии - ??
 (vla-put-LinetypeScale item 1) ; тип линии - ??
;; (vla-put-dimstyle item "Wit") ; Возврат к стандарту
 (setq temp_text (vla-get-textoverride item))
 ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of while
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
Вопрос - как вместо (vla-put-color item 5) выполнить (vla-put-color item "ByLayer") - он это не распознаёт!

P.S. лиспом владею суперплохо...
__________________
Фасадку черчу...
Witalij вне форума  
 
Непрочитано 18.11.2008, 18:06
#9
VVA

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


По моему так
Код:
[Выделить все]
 
(vla-put-color item 256) ;_По слою
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.11.2008, 00:37
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Witalij Посмотреть сообщение
Так как запустить-то его - я его только загрузил!
Ну, так же, как и любой VBA макрос. Проще всего - Alt + F8 -> "выполнить". Либо создать кнопку, повесить на нее макрос
^C^C-vbarun DimLay.dvb!Module1.main (при этом файл dvb проекта должен находится в папке, путь к которой задан в "Настройка"> "Файлы">"Путь доступа к вспомогательным файлам")
AlexV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перенос размеров, в которых заполнено поле "text override", на отдельный слой



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический перенос размеров на слой размеры. Break макро Piton Программирование 383 13.05.2024 16:58
lisp для автоматического переноса размеров в отдельный слой phantom_l LISP 7 08.07.2008 11:27