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

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

@@science

прочитайте, найдите нужное, создайте код  :smile:

http://help.solidworks.com/2015/english/api/sldworksapi/get_view_bounding_box_and_position_example_csharp.htm

http://www.streamdivision.com/naiti-gabarity-detali-part1/

http://www.streamdivision.com/naiti-gabarity-detali-part2/

http://help.solidworks.com/2015/english/api/sldworksapi/get_bounding_box_example_csharp.htm

 

------------------------------------

@@artem_cad, как автор, не могли бы вы перевести пост https://forum.solidworks.com/thread/63342на русский язык? В помощь, так сказать, начинающим.

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


Да, конечно, без проблем. Сделаю на днях и отпишусь. :smile:

Изменено пользователем artem_cad
Ссылка на сообщение
Поделиться на других сайтах

artem_cad и streamdown

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

 

Это достаточно сложная задача (особенно с точки зрения производительности). 

 

Я бы смотрел в напралении получения дисплей даты из вида (View::GetDisplayData3) или IView::GetVisibleEntities2 и перебирать все энтити для нахождения крайних точек. Идеальный вариант - это найти замкнутый контур и создать временное тело, а затем по примеру @streamdown найти точки экстрима. Еще можно найти габарит в сборке или детале, а потом перевести координаты в пространство вида.

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

Добрый день!

Подскажите пожалуйста:

Проблема заключается в том что событие(_OnSubmitSelection) вызываемое объектом - pmSelection - вызывается многократно т.е. сколько объектов попало в рамку ,

хотя даю возможность добавить один пункт  .SingleEntityOnly = true

Может можно как то запретить выделение рамкой или есть свойства для запрета этого (многократного выполнения)?

Или стоит переделать на OnSelectionboxListChanged?

Public Function Selectionbox_AddObject() As Boolean 
Dim pmSelection As PropertyManagerPageSelectionbox
    Set pmSelection = Me.curObj
    With pmSelection
        .SingleEntityOnly = 1
        .Height = 15
        .SetSelectionFilters 20
        .SetStandardPictureLabel 9
    End With
End Function

Private Function PropertyManagerPage2Handler9_OnSubmitSelection _
            (ByVal id As Long, ByVal Selection As Object, _
            ByVal selType As Long, ItemText As String) As Boolean
    PropertyManagerPage2Handler9_OnSubmitSelection = True
    ........
End Function
Изменено пользователем Homasters
Ссылка на сообщение
Поделиться на других сайтах
pmSelection

 это что?

SingleEntityOnly
 это по ходу относится к контролу, а не к клиентской части. Т.е. сколько можно выделить в самом SelectionBox
Ссылка на сообщение
Поделиться на других сайтах
pmSelection  это что?
 

Это PropertyManagerPageSelectionbox

 

Я изначально думал что событие PropertyManagerPage2Handler9_OnSubmitSelection вызывается из Selectionbox (но это не так) 

OnSubmitSelection мне нужен для проверки перед добавлением в Selectionbox (помимо фильтра в Selectionbox)

Если Selectionbox принимает только один объект - мне не нужно что бы OnSubmitSelection(вызывается в первую очередь) проверял только тот который попадет в Selectionbox (это если произошло множественное выделение рамкой)

Можно это как то решить?

Можно конечно снимать  выделение после проверки в OnSelectionboxListChanged  (но это как то не очень)

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

Думаю что не совсем понятно мое изложение мысли!?

Еще один вопрос: как можно реализовать переход по Tab на/между контрал(ами) NumberBox? (он их просто пролетает но с него уходит нормально)

Ссылка на сообщение
Поделиться на других сайтах
мое изложение мысли!?
Да вроде понятно  :smile:  Но это ж как с конструкторской мыслью: не факт что правильно, даже если и работает. Вы хотите (или думаете, что так хотите) выделять объекты по одному, но допускаете выделение нескольких. Вместо того, чтобы вводить проверку на GetSelectedObjectCount, вы хотите ввести ограничение пользователя вообще выделять что либо мышкой. Может выход в вашей ситуации - это тупо мессадж "выделите один объект".

 

Если Selectionbox принимает только один объект

Если это так, то свойство должно работать. Если не работает, то может попробовать как-то по другому? 

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

Вот сейчас проверил. Работает. Даёт выделять только один объект.

вызывается многократно
 

тоже есть такое

запретить выделение рамкой
 

Не стоит этого делать. Штатных средств нет. Будете копать глубже - будет рушиться солид, внезапно.

Я бы поступил следующим образом: если панель вызвана и активна, то отлавливал бы сначала событие DPartDocEvents_NewSelectionNotifyEventHandler или в том же OnSubmitSelection. Проверял количество, если больше 1 - то тупо ClearSelection2

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

OnSubmitSelection. Проверял количество, если больше 1 - то тупо ClearSelection2

 

 

OnSubmitSelection это событие срабатывает перед выделением т.е. она принимает все объекты(которые попали в ее фокуси принимает false\true(разрешаю выделить)

 

ClearSelection2

 

 

После выделения сработает - OnSelectionboxListChanged(и оно отработает один раз) (но уже поздно т.к. OnSubmitSelection запустила допустим 100 процедур для проверки объектов)

 

Private Function PropertyManagerPage2Handler9_OnSubmitSelection _ (ByVal id As Long, ByVal Selection As Object, _ ByVal selType As Long, ItemText As String) As Boolean

А если: Получаем и обрабатываем определенный id = 1 то записываем в privat переменную = 1 при с следующим срабатывание, если id =1 то выходим из процедуры.....!

При срабатывании OnSelectionboxListChanged устанавливаем переменной = 0

Как думаете?

Изменено пользователем Homasters
Ссылка на сообщение
Поделиться на других сайтах
обрабатываем определенный id = 1
 Ну, может и вариант. Но есть штука получше - отлавливайте http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.dpartdocevents_userselectionprenotifyeventhandler.html

это событие вызывается до того, как начинает происходить выделение. Там и проверяйте количество, или ЧТО именно выделяется как пример

Ссылка на сообщение
Поделиться на других сайтах
Там и проверяйте количество, или ЧТО именно выделяется как пример

 

Очень жаль:

Public WithEvents swAssy As SldWorks.AssemblyDoc

Если PropertyManagerPage2(PMP) загружен то swAssy_UserSelectionPostNotify не отрабатывает!

Remarks
Only selections made interactively fire this event; selections made programmatically are ignored by this event.

Если нет сначала swAssy_NewSelectionNotify после swAssy_UserSelectionPostNotify

Изменено пользователем Homasters
Ссылка на сообщение
Поделиться на других сайтах
Если PropertyManagerPage2(PMP) загружен то swAssy_UserSelectionPostNotify не отрабатывает! Remarks Only selections made interactively fire this event; selections made programmatically are ignored by this event. Если нет сначала swAssy_NewSelectionNotify после swAssy_UserSelectionPostNotify

 

Извиняюсь не то событие выбрал!

 

 

Но есть штука получше

Работает отлично большое спасибо!!! 

Но мою задачу не решает! _UserSelectionPreNotify срабатывает на один шаг раньше чем OnSubmitSelection

Изменено пользователем Homasters
Ссылка на сообщение
Поделиться на других сайтах

Что-то совсем всё запутано, ибо у меня всё работает как надо ещё со времён SingleEntityOnly. Если вам очень надо, могу посмотреть код - streamdivision@yandex.ru.

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

@@science

прочитайте, найдите нужное, создайте код  :smile:

http://help.solidworks.com/2015/english/api/sldworksapi/get_view_bounding_box_and_position_example_csharp.htm

http://www.streamdivision.com/naiti-gabarity-detali-part1/

http://www.streamdivision.com/naiti-gabarity-detali-part2/

http://help.solidworks.com/2015/english/api/sldworksapi/get_bounding_box_example_csharp.htm

 

------------------------------------

@@artem_cad, как автор, не могли бы вы перевести пост https://forum.solidworks.com/thread/63342на русский язык? В помощь, так сказать, начинающим.

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

 

А теперь подскажите пожалуйста если не сложно, Я частично решил свою задачу используя .AutoDimension. Но в этом случае проставляется много лишних размеров на виде.

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

Буду очень благодарен.

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

Собсна...в том же хелпе))

http://help.solidworks.com/2015/english/api/sldworksapi/Get_Dimension_Values_in_Drawing_Example_VB.htm

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

Подскажите, пожалуйста, как найти глубину отверстия (фича ExtrudeFeatureData2), если направление задано, например, как "Насквозь", или "До тела", или "Средняя плоскость" - в общем, любой вариант, кроме как "На заданное расстояние" (тут все ясно)? Заранее спасибо.

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

Блин спаибо. Вам и artem_cad я черезвычайно благодарен. Спасибо. Теперь допишу макрос который сам делает чертежи всех деталей на листах и проставляет их габаритные размеры.

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

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

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

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

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

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

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

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

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

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

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




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