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

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

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

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

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

Можно ли?:
- выделить квикселектом на листе все размеры с перебитыми величинами
- либо перенести все их на отдельный слой.
Какой лисп для этого нужен?
__________________
Фасадку черчу...
Просмотров: 5676
 
Непрочитано 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,992


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

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


Небольшой dvb на ту же тему...
Вложения
Тип файла: dvb DimLay.dvb (48.0 Кб, 137 просмотров)
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,686


Цитата:
Сообщение от Witalij Посмотреть сообщение
А как им пользоваться? Я его загрузил - и что?
После запуска макроса появляется форма. В комбобоксе "Слой" выбираем нужный слой, на который хотим перенести правленные размеры. Во втором комбобоксе выбираем тип поиска размерных объектов- по всему чертежу или выделением рамкой. Ну и при нажатии на кнопку размеры с исправленным текстом должны перенестись на нужный слой. (проверки на заблокированность и т.д. слоя не делал. Нужно будет - могу дописать.)
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 152
Размер:	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,992


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

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


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

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


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