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

Вернуться   Форум 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.
Просмотров: 171288
 
Непрочитано 26.07.2013, 13:59
#301
elnino


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


Подскажите пожалуйста как добавить тип линии в эту строку?
Код:
[Выделить все]
(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" 4 "" "") 
(vl-cmdf "_layer" "_make" "Штриховка (ГОСТ)" "_color" 5 "" "") 
(vl-cmdf "_layer" "_make" "Текст" "_color" 3 "" "")
(vl-cmdf "_layer" "_make" "Линия обрыва (ГОСТ)" "_color" 1 "" "")
(vl-cmdf "_layer" "_make" "Видимый контур (ГОСТ)" "_color" 7 "" "")
(vl-cmdf "_layer" "_make" "Видимые тонкие (ГОСТ)" "_color" 5 "" "")
(vl-cmdf "_layer" "_make" "Осевая линия (ГОСТ)" "_color" 30 "" "")
я пробовал (vl-cmdf "_layer" "_make" "Осевая линия (ГОСТ)" "_color" 30 "_lt" JIS_08_15 ""), но что то ничего не выходит.
Заранее благодарю.
elnino вне форума  
 
Непрочитано 26.07.2013, 14:18
#302
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(vl-cmdf "_layer" "_make" "Осевая линия (ГОСТ)" "_color" 30 "_lt" "JIS_08_15" "")
Тип линии должен быть загружен. См команду _linetype
или функцию _kpblc-linetype-load из #190
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.10.2013, 12:23
#303
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 686


Не подскажете где косяк
Цитата:
Команда: _appload layers.lsp успешно загружено.
Команда: ; ошибка: неверно расположенная точка на входе
Autocad 2014 sp1
Вложения
Тип файла: lsp layers.lsp (3.7 Кб, 62 просмотров)

Последний раз редактировалось gest, 17.10.2013 в 12:35.
gest вне форума  
 
Непрочитано 17.10.2013, 13:55
#304
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(vl-cmdf "_layer" "_make" ".РИТ_размеры" "_color" 161 "_lw" .13 "")
Вместо .13 нужно записать 0.13 и так со всеми числами
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.10.2013, 14:09
#305
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 686


Исправил, теперь такое
Цитата:
_make .РИТ_размеры _color 161 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_штрих _color 253 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_текст _color 31 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_0.13 _color 6 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_0.13_нев. _color 6 _lw 0.130000000000000
Неправильное ключевое слово.
_ltfile
Неправильное ключевое слово.
GOST2.303.4
Неправильное ключевое слово.
_layer _make .РИТ_0.30 _color 6 _lw 0.300000000000000
Неправильное ключевое слово.
_layer _make .РИТ_0.50 _color 6 _lw 0.500000000000000
Неправильное ключевое слово.
_layer _make .РИТ_огр.анкера _color 6 _lw 0.300000000000000
Неправильное ключевое слово.
_layer _make .РИТ_огр.бровка _color 94 _lw 0.300000000000000
Неправильное ключевое слово.
_layer _make .РИТ_огр.трубы _color 6 _lw 0.300000000000000
Неправильное ключевое слово.
_layer _make .РИТ_огр.ось _color 44 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_оси _color 4 _lw 0.130000000000000
Неправильное ключевое слово.
_layer _make .РИТ_сваи _color 6 _lw 0.130000000000000
Неправильное ключевое слово.
Я так понимаю, что это появляется при совпадении слоев с уже существующими?
При открытии чертежа (без указанных слоев) нет задания цвета, типа линии, веса слоев и не переносятся размеры и.т.п.
gest вне форума  
 
Непрочитано 17.10.2013, 18:45
#306
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


gest Внимательно изучи порядок запросов команды _layer
Сравни 2 строчки
твоя
Код:
[Выделить все]
(vl-cmdf "_layer" "_make" ".РИТ_размеры" "_color" 161 "_lw" 0.13 "")
правильная
Код:
[Выделить все]
(vl-cmdf "_-layer" "_make" ".РИТ_размеры" "_color" 161 "" "_lw" 0.13 "" "")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.10.2013, 01:38
#307
kga82

Инженер (неуч)
 
Регистрация: 12.03.2013
Сообщений: 482


Доброго времени суток. Уважаемый VVA пользуюсь вашей программой уже давно, классная программа, огромнейшее вам спасибо. Я в лиспе чайник у меня вопрос можно ли сделать автоматическое включение слоя для отрисовки сварных швов програмка Weld. Заранее благадарю.
Вложения
Тип файла: lsp На свои слои.LSP 2.LSP (3.1 Кб, 69 просмотров)
Тип файла: lsp weld.lsp (30.1 Кб, 49 просмотров)
kga82 вне форума  
 
Непрочитано 18.10.2013, 11:02
#308
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 686


VVA

спасибо за помощь,
никак не пойму как задать свой тип линии:

Код:
[Выделить все]
(vl-cmdf "_-layer" "_make" ".РИТ_0.13_нев." "_color" 7 "" "_lw" 0.13 "_lt" "GOST2.303.4" "_ltfile" "c:\\Program Files\\CSoft\\СПДС GraphiCS 8\\DataRO\Fonts\\GOST 2.303-68.lin")
Однако даже если этот слой исключить, при открытии чертежа, все равно, не размеры, не текст не переносится на заданные слои. И еще возможно ли сделать запуск переноса примитивов по определенным слоям по команде?

Последний раз редактировалось gest, 18.10.2013 в 11:33.
gest вне форума  
 
Непрочитано 18.10.2013, 16:36
#309
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


kga82,
Добавь в weld.lsp создание слоя в каждой команде по аналогии с кодом
Код:
[Выделить все]
(defun c:weld1 ()
(setvar "cmdecho" 0) ;подавляем болтливость автокада
(vl-cmdf "_layer" "_make" "Выноски" "_color" 242 "" "") ;_Создаем слой выноски и задаем цвет 242 <<<Добавить эту строку
Цитата:
все равно, не размеры, не текст не переносится на заданные слои.
У меня переносятся
PS weld.lsp для kga82
layers.lsp - для gest
Вложения
Тип файла: lsp weld.lsp (31.0 Кб, 68 просмотров)
Тип файла: lsp layers.lsp (3.8 Кб, 80 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.10.2013, 23:52
#310
kga82

Инженер (неуч)
 
Регистрация: 12.03.2013
Сообщений: 482


Спасибо огромное работает))), есть только одно но - после включения команды и ее выполнения текущий слой не возвращается, а остается слой выноски(
kga82 вне форума  
 
Непрочитано 25.10.2013, 09:38
#311
kga82

Инженер (неуч)
 
Регистрация: 12.03.2013
Сообщений: 482


VVA отклинитесь!!!!
kga82 вне форума  
 
Непрочитано 25.10.2013, 11:46
#312
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Откликнулся. Надо переработать все команды. Пока у меня на это времени нет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.10.2013, 10:36
#313
kga82

Инженер (неуч)
 
Регистрация: 12.03.2013
Сообщений: 482


Так и знал что из за этого будет проблема, пытался сам что то сделать по аналогии но чем глубже лез чем больше понимал что чавойто будет не так все простенько Спа большое за отклик ждемс с нетерпением
kga82 вне форума  
 
Непрочитано 02.06.2015, 13:10
#314
posetitel


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


Подскажите.
Есть лисп, который помещает размеры в размерный слой
Цитата:
(defun c:р ()
(command "РЗМЛИНЕЙНЫЙ" pause pause pause)
(command "изменить" "последний" "" "с" "с" "размеры" "")
(prin1)
)
(defun c:рр ()
(command "РЗМРАДИУС" pause pause pause)
(command "изменить" "последний" "" "с" "с" "размеры" "")
(prin1)
)
почему, когда ставлю простой размер, помещается в слой "размеры" сразу, а когда ставлю радиальный размер, то он не помещается в слой "размеры", а остается в текущем, нужно дополнительно нажать ЛКМ на поставленный размер, только тогда поместится, если нажать на пустом месте, то радиальный размер так и останется в текущем слое
posetitel вне форума  
 
Непрочитано 02.06.2015, 16:23
#315
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Потому что в строке (command "РЗМРАДИУС" pause pause pause)
последнее pause лишнее
Код:
[Выделить все]
(defun c:рр ()
 (command "РЗМРАДИУС" pause pause)
 (command "изменить" "последний" "" "с" "с" "размеры" "")
 (prin1)
 )

Код:
[Выделить все]
;;; Автор идеи 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" "КР_П_01_ВЭ" "_color" 130 "" "_plot"  "_no" "" "") ;_Создаем слой видовых экранов noprint и задаем цвет 7 ... 
(vl-cmdf "_layer" "_make" "КР_П_02_Вспом_постр-1" "_color" 210 "" "") ;_Создаем слой вспомогательных построений noprint 
(vl-cmdf "_layer" "_make" "КР_П_03_Вспом_постр-2" "_color" 150 "" "")     ;_Создаем слой вспомогательных построений noprint
(vl-cmdf "_layer" "_make" "КР_П_041_Рамка_Штамп" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_042_Рамка_Штамп_Текст" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_05_Узлы_Разрезы_Сечения" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_1_Контур-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_1_Контур-2" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_1_Контур-3" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_1_Контур-4" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_2_Размеры-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_2_Размеры-2" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_3_Выноски-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_3_Выноски-2" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_4_Текст-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_4_Текст-2" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_5_Сварка-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_5_Сварка-2" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_6_Штриховка-1" "_color" 7 "" "")   ;
(vl-cmdf "_layer" "_make" "КР_П_6_Штриховка-2" "_color" 7 "" "")   ;


(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" (Layer?(strcat "КР_П_2_Размеры-" (itoa(getvar "USERI1")))))       ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ... 
    ) 
 ;;; Конец реакции на DIM*    
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH* 
     (setvar "clayer" (Layer?(strcat "КР_П_6_Штриховка-" (getvar "USERI1"))))
    ) 
    ((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT) 
     (setvar "clayer" (Layer?(strcat "КР_П_4_Текст-" (getvar "USERI1"))))
    )
    ((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
     (setvar "clayer" (Layer?"Таблицы"))
    )
    ((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
     (setvar "clayer" (Layer?(strcat "КР_П_3_Выноски-" (getvar "USERI1"))))
    )
    ((wcmatch thecommandstart "*VPORTS*") ;_Если выполняется команда *VPORTS
     (setvar "clayer" (Layer? "КР_П_01_ВЭ"))
    )
    (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
      (wcmatch cmd_name "*VPORTS*")   ;_Если выполняется команда *VPORTS*  
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil)
    ))
 (princ))
(defun Layer? (Nme)
  ;;;Функция проверяет есть ли слой с именем Nme
  ;;;Если его нет - создает
  (if (not(TBLSEARCH "LAYER" Nme))
  (entmake (list (cons 0 "LAYER")
                 (cons 100 "AcDbSymbolTableRecord")
                 (cons 100 "AcDbLayerTableRecord")
                 (cons 2 Nme)
                 (cons 70 0)))
    )
  (if (TBLSEARCH "LAYER" Nme) Nme "0")
    )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 09.09.2015 в 08:04.
VVA вне форума  
 
Непрочитано 02.06.2015, 17:35
#316
posetitel


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


спасибо
posetitel вне форума  
 
Непрочитано 02.09.2015, 23:08
#317
betonolom


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


Доброго времени суток!
Имеется следующая проблема:
К примеру, у меня n-ое количество слоев для размеров: Размеры_1, Размеры_2, ..... , Размеры_n.
Я сделал кнопку, которой присваиваю значение пользовательской переменной useri1.
Можно ли в лисп добавить эту переменную в лисп автоматического переноса. Хочется что-то типа этого (я понимаю что это в корне не верно, но так проще объяснить что я хочу от лиспа):
;;;_Реакция на начало команды *DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)
((wcmatch thecommandstart "*DIM*") ;_Если выполняется команда DIM*
(setvar "clayer" "Размеры_$m=$(Getvar,Useri1)")

Спасибо за внимание!
betonolom вне форума  
 
Непрочитано 28.08.2016, 05:18
#318
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Доброго. Подниму тему.
Возникло небольшое затруднение при использовании реакторов с #25.
При вставке hatch, если изменять в ходе команды параметры штриховки из ribbon то работа реакторов не совсем корректна.
Вариант 1 (с командными методами) работает, но после завершения действия не меняет слой на прежний а остается на слое штриховки.
Вариант 2 (от Lee Mac) при этом перестает работать вовсе, и штриховки попадает на текущий слой вместо требуемого.

Последний раз редактировалось Red Nova, 28.08.2016 в 05:48.
Red Nova вне форума  
 
Непрочитано 17.01.2017, 12:27
#319
omsksn


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


Уважаемые форумчане, а нет ли у кого подобного лиспа для НаноКада? Этот лисп там не работает (выдает ошибки), а сам я в лиспах не бум бум. В нанокаде можно по умолчанию задать чтобы размеры были в слое "размеры", а вот остальное не работает ((
omsksn вне форума  
 
Непрочитано 13.03.2017, 18:16
#320
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Здравствуйте, гуру автокада и лиспа!
Сам я в лиспе не разбираюсь, поэтому хватило ума только взять представленный в этой теме код и переправить для пометочного облака.
Код:
[Выделить все]
 
(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" 90 "" "")   ;_Создаем слой выноски и задаем цвет 90
(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 
 
    ((wcmatch thecommandstart "REVCLOUD") ;_Если выполняется команда REVCLOUD
     (setvar "clayer" "Замечания") 
    )
    (t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев

    )
  (princ)) 
 ;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
      
      (wcmatch cmd_name "REVCLOUD")   ;_Если выполняется команда REVCLOUD
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil)
    ))
 (princ))
Подскажите пожалуйста, есть ли возможность при создании слоя добавлять текущую дату?

Последний раз редактировалось Кулик Алексей aka kpblc, 13.03.2017 в 23:15.
AMDen вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск