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

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

Автоматический перенос размеров на слой размеры. Break макро

Ответ
Поиск в этой теме
Непрочитано 01.03.2005, 12:58
Автоматический перенос размеров на слой размеры. Break макро
Piton
 
Инженер строитель
 
Москва
Регистрация: 24.02.2005
Сообщений: 396

Подскажите макрос на кнопку чтоб команда break разрывала в двух указанных точках (First point, second break point). ACAD2005
---
Добавлено (спасибо VVA): Рабочие варианты
#25
#190
#272
#273

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:42.
Просмотров: 187585
 
Непрочитано 02.05.2024, 19:47
#361
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно, наверное. Но а) мне лениво; б) для Ingpro будет неплохой тренировкой
Т.е. я в 2015 могу не тренироваться...
Ingpro вне форума  
 
Непрочитано 02.05.2024, 20:10
#362
Кулик Алексей aka kpblc
Moderator

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


Ну согласен, в глобальную переменную можно будет много всякого напихать Заодно и поиграться с subst / cons / append
Offtop: Господи, как же в лиспе под акад все просто по сравнению с шарпом!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.05.2024, 21:39
#363
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Ingpro,
можно просто отслеживать последний созданный командно примитив и переназначать ему слой без всяких предварительных слоевых фигли-мигли)
Код:
[Выделить все]
 
;****************************************************************************************************************

(if (/= 'vlr-command-reactor  (type command_ended_reactor))
	(setq command_ended_reactor (vlr-command-reactor nil '((:vlr-commandended . command_ended))))
)

;****************************************************************************************************************

(defun command_ended (reactor_object parameter_list / dim_layer dim_dxf)
	(setq dim_Layer "Dimension")
	(if (wcmatch (cdr (assoc 0 (setq dim_dxf (entget (entlast))))) "*DIMENSION*")
			(entmod (subst (cons 8 dim_Layer) (assoc 8 dim_dxf) dim_dxf))
	)
)

;****************************************************************************************************************
__________________
K Lisp
koMon вне форума  
 
Непрочитано 03.05.2024, 09:34
#364
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
можно просто отслеживать последний созданный командно примитив и переназначать ему слой без всяких предварительных слоевых фигли-мигли)
По аналогии можно добавить и для линий, штриховок и т.д.?

Последний раз редактировалось Ingpro, 03.05.2024 в 15:22.
Ingpro вне форума  
 
Непрочитано 03.05.2024, 13:01
#365
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


вдруг кто то не видел
https://lee-mac.com/layerdirector.html
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 03.05.2024, 14:59
#366
Ingpro


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
вдруг кто то не видел
https://lee-mac.com/layerdirector.html
Тоже хороший реактор, но при использовании двух реакторов lee-mac, один глушит другой, т.е. если активен layerdirector, то MTEditReactorV1-1 нужно запускать принудительно (и наоборот), поэтому пришлось отказаться в пользу MTEditReactorV1-1, а реактор слоёв из #25 дружит с MTEditReactorV1-1.
Ingpro вне форума  
 
Непрочитано 03.05.2024, 19:54
#367
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Ingpro Посмотреть сообщение
MTEditReactorV1-1 нужно запускать принудительно (и наоборот), поэтому пришлось отказаться в пользу MTEditReactorV1-1
а хоткей Ctrl+А чем не подходит?
Сергей812 вне форума  
 
Непрочитано 03.05.2024, 19:56
#368
Ingpro


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а хоткей Ctrl+А чем не подходит?
Это к чему?
Из справки:
Ctrl+A Выбор всех объектов на чертеже, которые не являются заблокированными или замороженными
Я.т.д. реакторы должны работать без всяких дополнительных манипуляций...

Последний раз редактировалось Ingpro, 03.05.2024 в 20:04.
Ingpro вне форума  
 
Непрочитано 03.05.2024, 20:04
#369
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Я.т.д. реакторы должны работать без всяких дополнительных манипуляций...
Ну, если ты их не сносишь все и чохом - то да, должны.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.05.2024, 20:17
#370
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Это к чему?
ну читаю описание к MTEditReactorV1-1: автоматическое выделение всего содержимого мультитекста двойным кликом, да и в описании автор пишет - что пытался изначально через Ctrl+A сделать, но что-то не срослось. Т.е. этот остронеобходимый реактор заменяет движение руки с "вилкой" пальцев на клавиши Ctrl+A двойным кликом мышью. Может еще на Esc реактор навесить, например?)
Сергей812 вне форума  
 
Непрочитано 05.05.2024, 15:17
#371
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Цитата:
Сообщение от Ingpro Посмотреть сообщение
По аналогии можно добавить и для линий, штриховок и т.д.?
почему нет?
__________________
K Lisp
koMon вне форума  
 
Непрочитано 13.05.2024, 11:58
#372
Ingpro


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


Код:
[Выделить все]
 ;;; Автор идеи Kenny Ramage, Эдуард, Torino, он же Кочетков Андрей 
;;; Доработка Владимир Азарко (VVA)
;;; Опубликовано http://forum.dwg.ru/showpost.php?p=58664&postcount=25
;;;Автоматический перенос размеров на слой "размеры" 
;;;и заливки на слой "заливка" 
;;;Просто добавь этот файл в автозагрузку 
(vl-load-com) 
(if *vlr-cmd*
  (progn
    (setq *vlr-cmd* nil)
    (vlr-remove-all :vlr-command-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(setq *OldLayer* (getvar "CLAYER")) 
(vl-cmdf "_layer" "_make" "Размеры" "_color" 151 "" "") ;_Создаем слой размеры и задаем цвет 151 ... 
(vl-cmdf "_layer" "_make" "Штриховка" "_color" 5 "" "") ;_Создаем слой штриховка и задаем цвет 5 
(vl-cmdf "_layer" "_make" "Текст" "_color" 6 "" "")     ;_Создаем слой текст и задаем цвет 6
(vl-cmdf "_layer" "_make" "Таблицы" "_color" 6 "" "")   ;_Создаем слой таблицы и задаем цвет 6
(vl-cmdf "_layer" "_make" "Выноски" "_color" 6 "" "")   ;_Создаем слой выноски и задаем цвет 6
(setvar "clayer" *OldLayer*) 
(setq *OldLayer* nil) 
;;;;;;По аналогии добавить создание своего слоя 
;;; ... 
;;;;;; 
;;;;;;------------------------------------------------------------- 

(if (not *vlr-cmd*)
  (setq	*vlr-cmd* (vlr-command-reactor "cmd"
		    '((:vlr-commandwillstart . cmd-start)
		      (:vlr-commandended . cmd-end)
		      (:vlr-commandcancelled . cmd-end)
		      (:vlr-commandfailed . cmd-end)))))
;;;;;;------------------------------------------------------------- 
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart) 
   (setq thecommandstart (nth 0 startcommandInfo))
  (if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER")))
  (cond 
 ;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)    
    ((wcmatch thecommandstart "DIM*")  ;_Если выполняется команда DIM* 
     (setvar "clayer" "размеры")       ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ... 
    ) 
 ;;; Конец реакции на DIM*    
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH* 
     (setvar "clayer" "штриховка") 
    ) 
    ((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT) 
     (setvar "clayer" "Текст") 
    )
    ((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
     (setvar "clayer" "Таблицы") 
    )
    ((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
     (setvar "clayer" "Выноски") 
    )
    (t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев
;;;См http://forum.dwg.ru/showpost.php?p=318806&postcount=139
;;;и http://forum.dwg.ru/showpost.php?p=318806&postcount=143
    )
  (princ)) 
 ;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
      (wcmatch cmd_name "*HATCH*") ;_Если выполняется команда DIM*
      (wcmatch cmd_name "DIM*")    ;_Если выполняется команда *HATCH*
      (wcmatch cmd_name "*TEXT")   ;_Если выполняется команда *TEXT (TEXT DTEXT)
      (wcmatch cmd_name "*TABLE")   ;_Если выполняется команда ТАБЛИЦА
      (wcmatch cmd_name "*LEADER")   ;_Если выполняется команда *QLEADER или MLEADER
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil)
    ))
 (princ))
При использовании этого кода в командной строке появляется запись при каждом открытии чертежа:
_layer _make Размеры _color 151 _layer _make Штриховка _color 5 _layer _make Текст _color 6 _layer _make Таблицы _color 6 _layer _make Выноски _color 6

А это можно как-то отключить?
Ingpro вне форума  
 
Непрочитано 13.05.2024, 12:02
#373
Кулик Алексей aka kpblc
Moderator

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


Можно. Либо поигравшись с переменными типа cmdecho / menuecho / nomutt, либо переделав создание слоев на некомандные методы.
Мне вот интересно, а никто не пробовал сначала в чистый файл загрузить лисп, потом выполнить очистку файла - тот же _.purge, и после этого уже начать ставить размеры? Я не просто так писал код в #353
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.05.2024, 12:21
#374
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


ну если некоторые так любят чтобы все прямо автоматически-автоматически работало через те же реакторы, но при этом собирают зоопарк из чужих кодов - то вообще не лишним каждый раз проверить слой - включен ли, не заблокирован и т.д, имхо)
Сергей812 вне форума  
 
Непрочитано 13.05.2024, 12:30
#375
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Мне вот интересно, а никто не пробовал сначала в чистый файл загрузить лисп, потом выполнить очистку файла - тот же _.purge, и после этого уже начать ставить размеры? Я не просто так писал код в #353
По-моему, одинаково работают коды из #25 и #353? Слои создаются при вводе команд. Или я чего-то не понимаю?
Ingpro вне форума  
 
Непрочитано 13.05.2024, 12:33
#376
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
По-моему, одинаково работают коды из #25 и #353? Слои создаются при вводе команд. Или я чего-то не понимаю?
Ну реально попробуй провернуть ту последовательность, которую я предложил. Только используй свои коды.

----- добавлено через 22 сек. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну если некоторые так любят чтобы все прямо автоматически-автоматически работало через те же реакторы, но при этом собирают зоопарк из чужих кодов - то вообще не лишним каждый раз проверить слой - включен ли, не заблокирован и т.д, имхо)
М-да, про эти тонкости я как бы не сильно подумал, грешен...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.05.2024, 13:41
#377
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
сначала в чистый файл загрузить лисп, потом выполнить очистку файла - тот же _.purge, и после этого уже начать ставить размеры
Реально так и делаю: открыть-DWG-PURGE-команда Отрезок-слой Отрезок и т.д.
В командной строке при открытии файла слои не перечисляются для кода #353... Это плюс, спасибо, Алексей!

Последний раз редактировалось Ingpro, 13.05.2024 в 13:56.
Ingpro вне форума  
 
Непрочитано 13.05.2024, 13:55
#378
Кулик Алексей aka kpblc
Moderator

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


Ты меня не услышал. Делай прямо по шагам:
  1. Открой новый пустой файл
  2. Удали вообще все, включая пространства листов, установи текущий слой "0"
  3. Загрузи свой код
  4. Выполни очистку файла
  5. Начни рисовать отрезок
  6. Проверь, на каком слое будет отрезок
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.05.2024, 14:05
#379
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ты меня не услышал. Делай прямо по шагам:
Делаю... Результат такой же, как #377... А на каком слое он должен быть, если запущен реактор?..

Последний раз редактировалось Ingpro, 19.05.2024 в 21:51.
Ingpro вне форума  
 
Непрочитано 13.05.2024, 16:03
#380
Кулик Алексей aka kpblc
Moderator

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


А в каком слое он должен быть, если слоя "Отрезок" в файле нет? Я тебе третий раз повторяю - выполни очистку файла прежде чем вызывать любую из обрабатываемых команд!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро