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

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

Как запустить макрос без снятия выделения с объектов?

Ответ
Поиск в этой теме
Непрочитано 13.03.2006, 06:42 #1
Как запустить макрос без снятия выделения с объектов?
Автон
 
СЦБ
 
Иркутск
Регистрация: 09.03.2006
Сообщений: 79

С-но сабж

В общем нужно запустить макрос с кнопки на панели, чтобы выделенние с объектов не снималось. Т.е. чтобы макрос мог с ними работать.

Последний раз редактировалось Автон, 21.01.2022 в 04:10.
Просмотров: 7444
 
Непрочитано 13.03.2006, 07:26
#2
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Можно не ставить ^C^C в начало макроса и тогда ничего отменяться не будет.
Можно все-таки снять выделение, но в макросе исползовать опцию _p (Previous), тогда команды будут работать с последним выделением на чертеже.
Krieger вне форума  
 
Автор темы   Непрочитано 13.03.2006, 08:55
#3
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 79


чего то я не понимаю
есть у меня макрос на VBA с формой, а на панельке кнопка с запуском макроса: _-vbarun "podp.dvb!ThisDrawing.ааа"
нажимаю на кнопку,
появляется форма и все выделение снимается.
А если этот же макрос запускать из под редактора VBA, нажимаю на кнопочку RUN, то появляется форма и выделение не снимается.

^C^C я убрал не помогло

Цитата:
в макросе исползовать опцию _p (Previous), тогда команды будут работать с последним выделением на чертеже.
извините за глупый вопрос: это куда вставлять?
Автон вне форума  
 
Непрочитано 13.03.2006, 10:04
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Надо было сразу сказать, что макрос на VBA.
А что твой макрос с выделением делает? С VBA я не знаком, но уверен на 100%, что параметр (или ключ к функции) "Previous" там тоже есть.
Krieger вне форума  
 
Автор темы   Непрочитано 13.03.2006, 10:08
#5
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 79


Krieger, макрос добавляет ко всему выделенному тексту цифры по порядку выглядит это примерно так, и нужно чтоб текст оставался выделенным, чтобы все это работало:


Private Sub CommandButton1_Click()
Dim pfSS As AcadSelectionSet
Dim object As AcadEntity
Dim tip As String
Dim i As Integer
Dim step As Integer
Dim p As Variant
i = Val(Me.txtI)
step = Val(Me.txtS)
Set pfSS = ThisDrawing.PickfirstSelectionSet

For Each object In pfSS
tip = object.ObjectName
If tip = "AcDbText" Then
If Me.obK.Value = True Then
object.TextString = object.TextString & "-" & i
Else
object.TextString = i & object.TextString
End If
object.Update
i = i + step
End If
Next object

End Sub

Автон вне форума  
 
Непрочитано 28.03.2006, 06:22 Re: Как запустить макрос без снятия выделения с объектов?
#6
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от Автон
С-но сабж

Вообщем нужно запустить макрос с кнопки на панели, чтобы выделенние с объектов не снималось. Т.е. чтобы макрос мог с ними работать.
Вот не помню, где подсмотрел:
(vla-runmacro (vlax-get-acad-object) "ThisDrawing.MACRONAME")
У меня работает.
B2Slow вне форума  
 
Непрочитано 28.03.2006, 06:25
#7
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Если нужно оперировать объектами, выделенными до запуска макроса именно в VBA, используй PickFirstSelectionSet.
B2Slow вне форума  
 
Непрочитано 28.03.2006, 06:38 Re: Как запустить макрос без снятия выделения с объектов?
#8
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Перечитал все посты.. Так ты неправильно вопрос поставил:
Цитата:
Сообщение от Автон
С-но сабж

Вообщем нужно запустить макрос с кнопки на панели, чтобы выделенние с объектов не снималось. Т.е. чтобы макрос мог с ними работать.
Очевидно, тебе нужно выделить отредактированные объекты после прохода макроса..
Если так, то вот здесь найдешь:
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=22820VI
B2Slow вне форума  
 
Автор темы   Непрочитано 29.03.2006, 09:43
#9
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 79


B2Slow, спасибо за

vla-runmacro (vlax-get-acad-object) "ThisDrawing.MACRONAME"

думаю это то что нужно, однако это по-моему для LISP`а
а вот для VBA это не работает


Цитата:
Если нужно оперировать объектами, выделенными до запуска макроса именно в VBA, используй PickFirstSelectionSet.
а можно поподробнее
Автон вне форума  
 
Непрочитано 30.03.2006, 06:02
#10
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
vla-runmacro (vlax-get-acad-object) "ThisDrawing.MACRONAME"

думаю это то что нужно, однако это по-моему для LISP`а
а вот для VBA это не работает
- это не для лиспа, это нужно повесить на кнопку, а всместо "ThisDrawing.MACRONAME" напишешь свой макрос. После этого можно будет выделить объекты, запустить этот самый макрос, и в нем получить доступ к этим объектам через ActiveSelectionSet. И это еще как работает, - проверено!

Цитата:
Цитата:

Если нужно оперировать объектами, выделенными до запуска макроса именно в VBA, используй PickFirstSelectionSet.


а можно поподробнее
Так это ж у тебя в коде есть:
Код:
[Выделить все]
Set pfSS = ThisDrawing.PickfirstSelectionSet 

For Each object In pfSS 
tip = object.ObjectName 
If tip = "AcDbText" Then 
If Me.obK.Value = True Then 
object.TextString = object.TextString & "-" & i 
Else 
object.TextString = i & object.TextString 
End If 
object.Update 
i = i + step 
End If 
Next object
Это я и имел в виду, просто не псмотрел в твой код, когда писал.
В общем, если в макросе пользуешься ActiveSelectionSet, вешай на кнопку (vla-runmacro (vlax-get-acad-object) "ThisDrawing.MACRONAME")
Если используешь PickFirstSelectionSet, то на кнопку ничего кроме -vbarun "ThisDrawing.MACRONAME" вешать уже не надо.
Первый вариант более универсален, т.к. позволяет выделять объекты как до запуска макроса, так и после.
B2Slow вне форума  
 
Автор темы   Непрочитано 30.03.2006, 06:43
#11
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 79


B2Slow, Спасибо земляк! Все работает! с меня пиво
Автон вне форума  
 
Непрочитано 30.03.2006, 06:46
#12
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
есть у меня макрос на VBA с формой, а на панельке кнопка с запуском макроса: _-vbarun "podp.dvb!ThisDrawing.ааа"
нажимаю на кнопку,
появляется форма и все выделение снимается.
А если этот же макрос запускать из под редактора VBA, нажимаю на кнопочку RUN, то появляется форма и выделение не снимается.
Никогда не обращал внимания на то, что после запуска из под VBE, выделение остается..
А тебе оно, собственно, для чего. Во время выполнения макроса от него ни холодно, ни жарко по-моему..
B2Slow вне форума  
 
Непрочитано 30.03.2006, 07:32
#13
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от Автон
B2Slow, Спасибо земляк! Все работает! с меня пиво
да не за что!..
B2Slow вне форума  
 
Автор темы   Непрочитано 30.03.2006, 09:35
#14
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 79


Цитата:
Никогда не обращал внимания на то, что после запуска из под VBE, выделение остается..
А тебе оно, собственно, для чего. Во время выполнения макроса от него ни холодно, ни жарко
В том то вся и загвоздка, что когда выделение снимается, то PickfirstSelectionSet пуст
Автон вне форума  
 
Непрочитано 30.03.2006, 10:49
#15
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от Автон
В том то вся и загвоздка, что когда выделение снимается, то PickfirstSelectionSet пуст
PFSS мог пустеть только если на кнопке перед -vbarun стояло ^C^C (аналогия нажатия Escape). Если этого не было, все выделение должно передаваться в макрос нормально..
B2Slow вне форума  
 
Непрочитано 20.08.2012, 16:31 Проба
#16
vlu


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


Пробую сделать кнопку с макросом на изменение цвета выделенных объектов без снятия выделения. Попробовал разные варианты игры с ^C^C и p. Что именно нужно прописать в поле "макросы" чтобы выделение не снималось с объектов?
Миниатюры
Нажмите на изображение для увеличения
Название: цвет2.JPG
Просмотров: 80
Размер:	112.6 Кб
ID:	85747  
vlu вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как запустить макрос без снятия выделения с объектов?

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