Перейти к публикации

Как выделить все однотипные элементы на листе?


Рекомендованные сообщения

Доброго всем.

Моя задача в SW2008 на чертеже (Drawing который) выделить все Note и потом их поудалять.

Почитав хелп по команде SelectByID обратил внимание на ремарку:

For example, if a string is passed that matches an object name but whose case does not match exactly, this method might return FALSE. For selection of dimensions, the Name argument needs to be fully qualified. For example, specify "D1@Sketch2@Part1.SLDPRT" rather than simply "D1@Sketch2"; otherwise, this method might return FALSE. If you do not know the object name, or if it is an item that is not automatically named by SolidWorks, you can pass an empty string.

...

If you do not know the object name or the object type, pass in empty strings for the Name and Type parameters and the selection routine makes the best attempt to select the correct object.

Я правильно понимаю что если я хочу выделить все заметки мне нужно написать

SelectByID("", "NOTE", 0, 0, 0, true, 0, null)
Верно?

Если да тогда у меня вопрос - почему этот метод в таком виде возвращает false и не выделяет ничего вообще?

Ссылка на сообщение
Поделиться на других сайтах


Как выделить все однотипные элементы на листе?

Фильтр, например, заметок и выбор объектов рамкой - SelectByRay

или

Перебирать заметки (возможно, добавлять к выделению) и удалять. Пример макроса поиска заметок и замены в них шрифта: <noindex>http://kelnyproject.ucoz.ru/load/2-1-0-10</noindex>

Ссылка на сообщение
Поделиться на других сайтах

Доброго всем.

Моя задача в SW2008 на чертеже (Drawing который) выделить все Note и потом их поудалять.

Почитав хелп по команде SelectByID обратил внимание на ремарку:

Я правильно понимаю что если я хочу выделить все заметки мне нужно написать

SelectByID("", "NOTE", 0, 0, 0, true, 0, null)
Верно?

Если да тогда у меня вопрос - почему этот метод в таком виде возвращает false и не выделяет ничего вообще?

Из справки

Dim instance As IModelDocExtension

Dim Name As String

Dim Type As String

Dim X As Double

Dim Y As Double

Dim Z As Double

Dim Append As Boolean

Dim Mark As Integer

Dim Callout As Callout

Dim SelectOption As Integer

Dim value As Boolean

value = instance.SelectByID2(Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption)

Тоесть тебе сначало надо выбрать лист и вид на котором у тебя находится заметка, а только потом использовать функцию.

Функция возвращает боолевый тип

Return Value

True if item was successfully selected, false if not

Ссылка на сообщение
Поделиться на других сайтах

Фильтр

Что имеется ввиду?

выбор объектов рамкой - SelectByRay

Так?:

SelParams(0) = -1#

SelParams(1) = -1#

SelParams(2) = 0#

' Direction X component

SelParams(3) = 1#

SelParams(4) = 1#

SelParams(5) = 0#

' Intersection radius

SelParams(6) = 100#

VarSelParams = SelParams

Part.MultiSelectByRay (VarSelParams), swSelNOTES, True

Не выделяет. Я правильно параметры рамки поставил?

Перебирать заметки

Да я делал через GetАnnotation.

Но проблема в том что он дает все заметки, а мне нужно удалить только те из них которые находятся в темплете в основной рамке, а не на листе. В таком случае мне нужно выяснять где заметка лежит на листе или в темплете. (Надеюсь я ясно изьяснился)

Да и медленный это способ... Чет именно на получении списка заметок тормозит.

сначало надо выбрать лист и вид на котором у тебя находится заметка

В каком смысле выбрать лист? Он у меня один.
Ссылка на сообщение
Поделиться на других сайтах

Не выделяет. Я правильно параметры рамки поставил?

Вероятно был не прав. Так работает:

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

swApp.SetSelectionFilter swSelNOTES, True 'Включение фильтра заметок

boolstatus = Part.Extension.SketchBoxSelect(0.02512, 0.058829, 0#, 0.233745, 0.165522, 0#) 'Любой квадрат

Можно просто выделить все объекты (Part.Extension.SketchBoxSelect), без фильтра, и в цикле проверяя тип каждого объекта (swSelMgr.GetSelectedObjectType) удалять подходящие.

Ссылка на сообщение
Поделиться на других сайтах

SketchBoxSelect

Пардон, а это в какой версии Солида? У меня 2008 ка

В хелпе такого метода нет. И соответственно в VBA на него ругется.

Ссылка на сообщение
Поделиться на других сайтах

Пардон, а это в какой версии Солида?

Availability

SolidWorks 2010 FCS, Revision Number 18.0

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...