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

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

Как средствами VBA сделать "AI_DESELECT "

Ответ
Поиск в этой теме
Непрочитано 14.03.2010, 20:10 #1
Как средствами VBA сделать "AI_DESELECT "
Miniril
 
Регистрация: 14.03.2010
Сообщений: 27

Как после выполнения макроса снять выделение с объектов средствами VBA? (без передачи "AI_DESELECT"), чтобы не приходилось при этом кучу раз "отмену" нажимать (если понадобится)(для других макросов с предварительным выбором объектов, кстати, если не перевыбирать объекты то отменяется сразу несколько действий, что очень неудобно!)?


Код:
[Выделить все]
Public Sub in_mm()

Dim blkref As AcadBlockReference
Dim block As AcadBlock
Dim blocks As AcadBlocks
Set blocks = ThisDrawing.blocks
Dim blockname As String

On Error GoTo Err

Dim acSelSet As AcadSelectionSet
Set acSelSet = ThisDrawing.PickfirstSelectionSet

If acSelSet.count = 0 Then
acSelSet.SelectOnScreen
End If

For Each blkref In acSelSet
 blockname = blkref.Name
 For Each block In blocks
  If block.Name = blockname Then
  block.Units = acInsertUnitsUnitless
  Exit For
  End If
 Next
 blkref.XScaleFactor = 1
 blkref.YScaleFactor = 1
 blkref.ZScaleFactor = 1
Next


Err:
ThisDrawing.SendCommand ("AI_DESELECT ")
'ThisDrawing.Regen acAllViewports

End Sub

Последний раз редактировалось Miniril, 18.03.2010 в 17:42.
Просмотров: 3583
 
Автор темы   Непрочитано 23.03.2010, 11:07
#2
Miniril


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


Все, сделал сам, но через одно место.

на кнопке нарисовал такую конструкцию:
(vl-load-com)(vla-runmacro (vlax-get-acad-object) "move") _-vbarun move2

то есть запускается сначала макрос "move", в котором

Код:
[Выделить все]
Public Sub move()
Set acSelSet = ThisDrawing.PickfirstSelectionSet
End Sub
а потом обычным способом запускается "move2",так, чтобы PFSS обнулился, он ведь "read only", в котором уже прописано

Код:
[Выделить все]
...
If acSelSet.count = 0 Then
acSelSet.SelectOnScreen
End If
...
ну и соответственно:
Public acSelSet As AcadSelectionSet

Miniril вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как средствами VBA сделать "AI_DESELECT "



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылки и поля... как сделать? CadMaster AutoCAD 33 09.06.2023 11:52
Как работать с поверхностью? Как сделать в autocad скатерть? eclipse AutoCAD 34 28.10.2010 00:43
Как сделать "прозрачный" lisp? ASLYS LISP 21 01.06.2007 15:43
Как сделать одной из граней SOLID поверхность Polygon mesh kukuikar AutoCAD 1 16.05.2007 07:58
Как сделать правильный чертеж pk77 Разное 64 03.04.2007 16:36