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

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

Макрос для черчения линий с пользовательскими настройками

Ответ
Поиск в этой теме
Непрочитано 17.02.2020, 14:15 #1
Макрос для черчения линий с пользовательскими настройками
mr.frai1992
 
Регистрация: 10.04.2019
Сообщений: 47

Появилась необходимость составить макрос который выполнял бы следующие действия:
1. Загружал нужный тип линии если он не загружен
2. Устанавливал вышеупомянутый стиль
3. Устанавливал масштаб линии =1
4. Вызывал ПЛиния (далее пользователь рисует что ему нужно)
5. после завершения построения устанавливает стиль типа линий <ПоСлою>
Вот такая пачка... Я застопорился на этапе добавления и выбора типа линии. Добавлять получается но макрос все время зависает (останавливается и спрашивает пользователя, но после ввода требуемого не продолжается) на: Тип линий "Мембрана" уже загружен. Перезагрузить его? <Д>.
вот то что у меня вышло
Код:
[Выделить все]
 ^C^C-ТИПЛИН;з;Мембрана;z:/GGP-L/Линии/Lin_K.lin;z:/GGP-L/Линии/Membr.shp;^m;^C^C-ТИПЛИН;у;Мембрана;^C^C
Нужна помощь
Просмотров: 6471
 
Непрочитано 17.02.2020, 17:03
| 1 #2
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


mr.frai1992, а может все проще можно, например Инструментальные палитры
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 17.02.2020, 19:59
#3
mr.frai1992


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


Так я и хочу в палитру добавить, но нужно не 5 кнопок, а одна. Иначе получается вообще нет смысла с макросами заморачиваться)
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 20:05
#4
doctorraz

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


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
Так я и хочу в палитру добавить, но нужно не 5 кнопок, а одна. Иначе получается вообще нет смысла с макросами заморачиваться)
Из ТЗ первого поста это неочевидно..
Т.е. в процессе черчения нужен выбор в диалоге другого типа линия или слоя или толщины цвета?
Либо вычертить в заданном слое нужным цветом, толщиной и типом полилинию, отрезок или иное? Палитра самое то, какая разница где кнопка
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 17.02.2020, 20:05
2 | #5
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Я могу лисп предложить.

Код:
[Выделить все]
 (vl-load-com)
(defun C:TEST (/ *error* linetype linetypefile oldCELTYPE oldCELTSCALE adoc)
	(defun *error* (msg)
		(vla-EndUndoMark adoc)
		(setvar "CELTYPE" oldCELTYPE)
		(setvar "CELTSCALE" oldCELTSCALE)
	)
	(setq linetype "Мембрана" ;;; имя типа линий
		  linetypefile "Z:\\GGP-L\\Линии\\Lin_K.lin" ;;; путь и имя файла с типом линиии 
		  oldCELTYPE (getvar "CELTYPE")	;;; запоминаем значение системной переменной CELTYPE
		  oldCELTSCALE (getvar "CELTSCALE");;; запоминаем значение системной переменной CELTYPE
		  adoc (vla-get-ActiveDocument (vlax-get-acad-object)) ;;; указатель на текущий документ 
	)
	(vla-StartUndoMark adoc) ;;; задаем начальную метку отмены
	
	;;; 1. Загружаем нужный тип линии если он не загружен	
	(if (not (tblobjname "LType" linetype)) (vla-load (vla-get-Linetypes adoc) linetype linetypefile))
	;;; 2. Устанавливаем вышеупомянутый стиль
	(setvar "CELTYPE" linetype )
	;;; 3. Устанавливал масштаб линии =1
	(setvar "CELTSCALE" 1)
	;;; 4. Вызываем ПЛиния 
	(vl-cmdf "_PLINE")
	;;; (далее пользователь рисует что ему нужно)
	(while (> (getvar "CMDACTIVE") 0) (vl-cmdf pause))
	;;; 5. После завершения построения восстанавливаем тип линий и масштаб типа линий
	(*error* nil)
)

Последний раз редактировалось skkkk, 17.02.2020 в 20:39.
skkkk вне форума  
 
Непрочитано 17.02.2020, 20:06
1 | #6
doctorraz

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


Все же начерти линию, настрой как надо и просто перетащи на палитру, может это оно?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 17.02.2020, 20:09
#7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Offtop: Удалил. doctorraz опередил с таким же ответом
skkkk вне форума  
 
Автор темы   Непрочитано 17.02.2020, 20:18
#8
mr.frai1992


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Все же начерти линию, настрой как надо и просто перетащи на палитру, может это оно?
Не сразу понял о чем говорите) теперь даже смешно как просто) буду пробовать и так и предложенным skkkk лиспом. Спасибо за помощь!
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 20:29
#9
doctorraz

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
опередил с таким же ответом
Zenon опередил всех, быстро и исчерпывающе
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 17.02.2020, 20:55
2 | #10
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Zenon опередил всех, быстро и исчерпывающе
Так-то да, но не все и не для всего их любят, эти палитры (многие - зря), и поэтому я подумал, что может, тут как раз такой случай. Может, mr.frai1992, например, хотел на горячую кнопку повесить или на алиасы настроить надо вдруг, поэтому я и решил дать такой вариант, тем более код уже такой был, я по сути исправил только имя файла и типа линии плюс выделил это дело в команду и удалил лишнего немного по мелочи. Ну и комментарии добавил. Много лет лежала программка без дела, подумал: авось, сгодится кому
(КСТАТИ, исправил-таки не всё - тип линии в теле кода не прописал нужный - откорректировал #5)

А вообще изначально было сделано так, чтоб при нажатии номера типа линии (по принятой условно нумерации) вызывались разные вариации типов и прочих настроек линий. Применительно к типу и масштабу, что-то вроде:
Код:
[Выделить все]
 (vl-load-com)
(defun C:1 () (custom_plines "Мембрана" 3))
(defun C:2 () (custom_plines "Continuous" 1))
(defun custom_plines (linetype linetypescale / *error* linetype linetypefile oldCELTYPE oldCELTSCALE adoc)
	(defun *error* (msg)
		(vla-EndUndoMark adoc)
		(setvar "CELTYPE" oldCELTYPE)
		(setvar "CELTSCALE" oldCELTSCALE)
	)
	(setq linetypefile "Z:\\GGP-L\\Линии\\Lin_K.lin" ;;; путь и имя файла с типом линиии 
		  oldCELTYPE (getvar "CELTYPE")	;;; запоминаем значение системной переменной CELTYPE
		  oldCELTSCALE (getvar "CELTSCALE");;; запоминаем значение системной переменной CELTYPE
		  adoc (vla-get-ActiveDocument (vlax-get-acad-object)) ;;; указатель на текущий документ 
	)
	(vla-StartUndoMark adoc) ;;; задаем начальную метку отмены
	
	;;; 1. Загружаем нужный тип линии если он не загружен	
	(if (not (tblobjname "LType" linetype)) (vla-load (vla-get-Linetypes adoc) linetype linetypefile))
	;;; 2. Устанавливаем вышеупомянутый стиль
	(setvar "CELTYPE" linetype )
	;;; 3. Устанавливал масштаб линии =1
	(setvar "CELTSCALE" linetypescale)
	;;; 4. Вызываем ПЛиния 
	(vl-cmdf "_PLINE")
	;;; (далее пользователь рисует что ему нужно)
	(while (> (getvar "CMDACTIVE") 0) (vl-cmdf pause))
	;;; 5. После завершения построения восстанавливаем тип линий и масштаб типа линий
	(*error* nil)
)
В данном примере при вызове из командной строки команды "1" - начертится полилиния с типом "Мембрана" в мастшабе 3, "2" - "Continuous" в мастштабе 1 и т.д.

В некоторых случаях такой подход оказывался удобнее палитры.

Последний раз редактировалось skkkk, 17.02.2020 в 21:03.
skkkk вне форума  
 
Автор темы   Непрочитано 17.02.2020, 21:05
#11
mr.frai1992


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


skkkk, интересная опция с номерами попробую)
а насчет для чего нужно - вообще для палитры инструментов и нужно (пока)) пытаюсь постепенно разобраться в средствах и способах автоматизации проектирования применительно к родной мастерской) вот по мере "разбирательств" и возникают вопросы) Так как мне это нужно в сетевую палитру инструментов, которая, надеюсь, постепенно превратится в удобные панели, больше подходит лисп. Еще раз спасибо skkkk
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 21:08
#12
Кулик Алексей aka kpblc
Moderator

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


У сетевых палитр в чистом ACAD есть огромный недостаток: отсутствие автоматической синхронизации. Только вручную, только хардкор.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.02.2020, 21:22
#13
mr.frai1992


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


получилась полуавтоматическая - при перезапуске автокада все обновляется. В моем случае на мастерской в max 20 машин такое решение устраивает в 90% случаев
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 21:26
#14
Кулик Алексей aka kpblc
Moderator

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


Было бы интересно посмотреть на решение - потому что у меня не вышло нормально синхронизировать. Знания NET на нуле, а лиспом не срабатывало больше чем в половине случаев.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.02.2020, 21:33
#15
doctorraz

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


Сеть имеется в виду облако или локальная сеть?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 17.02.2020, 21:36
#16
mr.frai1992


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


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

----- добавлено через 25 сек. -----
doctorraz, локальная
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 21:39
#17
doctorraz

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


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
а в самом компьютере включена автосинхронизация всей папки с инструментами
С этого места пожалста поподробнее
Моя мысль дальше SUBST не идет пока))
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 17.02.2020, 21:44
#18
mr.frai1992


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


сейчас не могу скрин сделать (на домашнем компьютере этого нет) но там все просто: ПКМ по папке -> автоматическая синхронизация (может не дословно). Да и делал я это только на тот случай если буду в командировке а мой ПК забудут включить (он же сервер), палитра у всех работала без сбоев.
если сервер постоянно включен то и так все работает и обновляется при перезапуске автокада
mr.frai1992 вне форума  
 
Непрочитано 17.02.2020, 21:46
#19
doctorraz

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


тож пытался задавать пути для палитр.. со временем АК начинает их мешать и дублировать, или руки у мну не той системы(( если таскать палитры с машины на машину.
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 17.02.2020, 21:49
#20
mr.frai1992


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


там я путь задавал для палитры только один z:/GGP-L/Palette/
или я что-то не понял?
ЗЫ 4 месяца полет нормальный)
mr.frai1992 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос для черчения линий с пользовательскими настройками

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен макрос выявления "неправильных" ортогональных линий Малявка Программирование 22 03.03.2021 21:18
Макрос VBA Excel для извлечения таблиц из линий, полилиний, текста из DWG файлов в Excel с помощью NanoCAD/AutoCAD JZY Готовые программы 8 14.07.2016 06:31
Как удалить тип линии Tolyanovich AutoCAD 48 20.11.2014 09:24
Простановка осевых линий на отводах трубопроводов. макрос. никто не видел? ssn Программирование 39 13.05.2013 13:12
Нужен макрос для черчения почасовых графиков SON Программирование 2 03.08.2010 21:11