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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замыкание полилинии после ввода (макрос?)

Замыкание полилинии после ввода (макрос?)

Ответ
Поиск в этой теме
Непрочитано 20.04.2012, 19:04 #1
Замыкание полилинии после ввода (макрос?)
geofix
 
Регистрация: 20.04.2012
Сообщений: 6

Здравствуйте, создал палитру с типами линий, нужно чтобы некоторые из них замыкались после ввода , в макросах нашел только команду "\" как это можно реализовать?
Просмотров: 5026
 
Непрочитано 20.04.2012, 19:23
#2
InFlames


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


Опция _C замыкает линию/полилинию.
InFlames вне форума  
 
Автор темы   Непрочитано 20.04.2012, 22:11
#3
geofix


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


Это понятно.
Макрос ^C^C_pline;\\\\_C дает замкнутый 4-х угольник, а как сделать ожидание до момента произвольного замыкания? (с любым количеством углов)
geofix вне форума  
 
Непрочитано 20.04.2012, 22:24
#4
InFlames


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


В чем проблема завершить команду полилинии опцией _c вместо ентер/ескейп? В крайнем случае эту опцию можно повесить на кнопку в виде того же макроса, и завершать работу команды полилинии именно этой кнопкой.
InFlames вне форума  
 
Непрочитано 20.04.2012, 22:32
#5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Только прямолинейные сегменты:
Код:
[Выделить все]
^C^C_.pline;\(while (setq pt (getpoint (getvar "lastpoint"))) (command pt))(command "_c");
Завершать только по Enter
Do$ вне форума  
 
Автор темы   Непрочитано 21.04.2012, 00:27
#6
geofix


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


Do$ Спасибо, то что нужно. Можно при рисовании добавить отмену по ctrl+z как при работе с обычной полилинией?
geofix вне форума  
 
Непрочитано 21.04.2012, 00:50
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


В таком макросе - нет.
Do$ вне форума  
 
Непрочитано 21.04.2012, 09:44
1 | #8
VVA

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


Это уже мало похоже на макрос, но должно работать
Код:
[Выделить все]
^C^C(vl-load-com)(VL-CATCH-ALL-APPLY '(lambda()(command "_.PLINE")(while (> (getvar "CMDACTIVE") 0) (command pause))))(vla-put-Closed(vlax-ename->vla-object(entlast)) :vlax-true)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.04.2012, 11:56
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


VVA, опередил
Здесь, по хорошему, надо бы еще проверку добавить, что примитив (entlast) появился в результате работы команды "_pline" (можно же ESC нажать и новая полилиния не появится, а замкнется какая-нибудь предыдущая), помимо CMDACTIVE, наверное, нужно еще CMDNAMES проверять. Хотя, ситуация с двумя работающими одновременно командами, очень маловероятна.
В общем, вместо макроса полноценная лиспина получается
Do$ вне форума  
 
Автор темы   Непрочитано 21.04.2012, 12:10
#10
geofix


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


Спасибо, все работает По пробелу, esc, enter замыкается текущая полилиния.
geofix вне форума  
 
Непрочитано 19.11.2019, 16:38
#11
DmAK


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


Вот нашел подходящую тему, но если я немного изменю условия...?
Возможно сделать так, что бы замыкались все выбранные полилинии одним нажатием? (не в одну полилинию, а что бы ко всем полилиниям был применен параметр "Замкнуть")
DmAK вне форума  
 
Непрочитано 19.11.2019, 17:03
1 | #12
Кулик Алексей aka kpblc
Moderator

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


Выбрать полилинии, вызвать панель свойств, установить свойство замкнутости.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.11.2019, 19:54
1 | #13
skkkk


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


Offtop: Открыть холодильник, засунуть туда жирафа, закрыть холодильник
Код:
[Выделить все]
 (defun C:CLPL ( / ss i)
	(setq ss (ssget '((0 . "*POLYLINE")))) 
	(if ss
		(repeat (setq i (sslength ss))
			(vla-put-Closed (vlax-ename->vla-object (ssname ss (setq i (1- i)))) :vlax-true) 
		)
	)
)
skkkk вне форума  
 
Непрочитано 19.11.2019, 20:32
#14
DmAK


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


skkkk, спасибо большое, работает, класс! СПАСИБО!

Кулик Алексей aka kpblc
, Спасибо!!!! Не знал что так можно было
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-11-19_202550.png
Просмотров: 12
Размер:	707.0 Кб
ID:	220183  
DmAK вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замыкание полилинии после ввода (макрос?)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После ввода команды снимается выделение с обьектов (AutoCAD 2010) fobof_13 AutoCAD 3 29.09.2010 20:00
Макрос для полилинии SloNN AutoCAD 1 30.10.2007 12:21
Пишу макрос для кнопки. Нужно задать ожидание ввода. boban Программирование 2 08.04.2005 21:26