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

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

Здравствуйте, хотел бы узнать возможно ли выбрать кромки в модели без использования метода SelectByRay  для последующего их скругления? Модель создается через макрос, с заданными пользователем размерами и выбирать вручную их не очень хороший вариант. Попробовал использовать Persistent ID для каждой кромки, но на сколько я понял генерируется он для каждой созданной вновь модели свой. И при генерации другой модели (даже с теме же размерами) уже получить доступ по PerID уже нельзя. Есть ли какие-то еще способы или переписывать макрос для работы с конкретно созданным файлом? P.S. Как вариант в  эскизе можно сделать скругление для  кромок во впадине, с верхними хотелось бы по другому.

Снимок экрана 2023-02-27 211344.png

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


Отвечу сам на этот вопрос, может кому пригодится. Нужно с помощью GetBodies2 получить тело созданное в нашей модели. После использовать GetEdges и получить массив кромок нашего тела. Затем можно обращаться к нашим кромкам как к элементам массива (в моем случае их всего 11, найти нужный номер  элемента в массиве не составило проблем) или же  в цикле присвоить кромкам Tracking ID и уже используя его также выбрать наши кромки используя Select4.

Ссылка на сообщение
Поделиться на других сайтах
01.03.2023 в 20:55, alexey2121 сказал:

не составило проблем

Так в этом самая соль)) Я б например искал бы по длине, кто-то искал бы по площадям прилегаемых, кто-то по градусам между прилегающими плоскостями. У вас как надо было?

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

Здравствуйте, очередной ступор. Как выделить грань. SelectByID2(swFace, "FACE", 0,0,0,true,0,nothing,swSelectOptionDefault)дает ошибку не поддерживает свойство или метод. 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ЮрЮрыч сказал:

Как выделить грань.

https://help.solidworks.com/SearchEx.aspx?query=select face&version=2010&lang=english,enu&prod=api

 

1 час назад, ЮрЮрыч сказал:

дает ошибку не поддерживает свойство или метод. 

В примерах обычно фигурирует такая конструкция (первый параметр пустой):

Цитата

В вашем случае вероятно ошибка как раз таки в:

Цитата

SelectByID2(swFace, "FACE"

swFace - вероятно должно быть именем элемента, если таковое имя присвоено этому элементу:

Цитата

 

Изменено пользователем Kelny
Ссылка на сообщение
Поделиться на других сайтах
04.03.2023 в 11:49, streamdown сказал:

Так в этом самая соль)) Я б например искал бы по длине, кто-то искал бы по площадям прилегаемых, кто-то по градусам между прилегающими плоскостями. У вас как надо было?

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

Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, ЮрЮрыч сказал:

Здравствуйте, очередной ступор. Как выделить грань. SelectByID2(swFace, "FACE", 0,0,0,true,0,nothing,swSelectOptionDefault)дает ошибку не поддерживает свойство или метод. 

После "Face" вместо 0,0,0 должна быть координата точки принадлежащая этой поверхности, только тогда будет корректно работать (при условии пустых кавычек вместо имени). Если выбрать поверхность и нажать ПКМ-Грань-Свойства грани можно задать ей имя. Например myFace_cccp3d. Если снова выбрать грань и нажать ПКМ, то в меню появится имя.

Если попробовать использовать это имя с SelectByID2, работать будет, но результат работы...Ну такой себе - у меня выбирает не то, что надо. Вот вариант с выбором используя имя.


 

Скрытый текст

 

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSelData As SldWorks.SelectData
Dim swFace As SldWorks.Face2


Sub main()
    Dim faceName As String
    faceName = "myFace_cccp3d"
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Set swSelMgr = Part.SelectionManager
    Set swFace = Part.GetEntityByName(faceName, swSelFACES)
    swFace.Select4 False, swSelData
    
End Sub

 

p.s. Имена у поверхностей/кромок должны быть уникальными.

Снимок экрана 2023-03-06 183157.png

Снимок экрана 2023-03-06 190014.png

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

Да, через имя выделить грань, это то еще занятие. Тогда как можно узнать координаты точки на грани. Может цт какой-нибудь. 

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, ЮрЮрыч сказал:

Да, через имя выделить грань, это то еще занятие. Тогда как можно узнать координаты точки на грани. Может цт какой-нибудь. 

Если построение идет программно, думаю, можно программно переименовывать элементы, а потом по известному имени (или там, по префиксу-суффиксу) искать.

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

А не слишком это все геморройно? Не проще строить через таблицы параметров или текстовые уравнения ?

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

Нет построение не програмное. Я делаю макрос для экспорта в dxf пластин solid не sheet. Пластины могут быть построены как угодно. Думал найти грань с макс площадью, выделить и exportDwg2. Метод getEntityName дает только пробелы. Но даже именованую вручную грань selectByID2 и то не выделяет. 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ЮрЮрыч сказал:

Нет построение не програмное. Я делаю макрос для экспорта в dxf пластин solid не sheet. Пластины могут быть построены как угодно. Думал найти грань с макс площадью, выделить и exportDwg2. Метод getEntityName дает только пробелы. Но даже именованую вручную грань selectByID2 и то не выделяет. 

Если вы нашли грань с максимальной площадью, то выделить программно ее можно через интерфейс IEntity.

Entity swEntity = swFace as Entity;
swEntity.Select4(false, swSelectData);

 

Предварительно создав объект SelectData

SelectionMgr swSelMgr = swModel.ISelectionManager;
SelectData swSelectData = swSelMgr.CreateSelectData();

 

Изменено пользователем Shvg
Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, ЮрЮрыч сказал:

Здравствуйте, спасибо, все работает. Как определить дату создания файла? FileDataTime не работает. 

Попробуйте SummaryInfo интерфейса IModelDoc2.

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

ЮрЮрыч! какие-то вопросы честно говоря недоделанные... Где повернуть, модель деталь или сборка... ну выражайтесь точнее пожалуйста

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, ЮрЮрыч сказал:

Добрый вечер. Как повернуть вид модели нормально к плоскости? 

ModelDoc2  метод ShowNamedView2 .. а там по мануалу можно посмотреть какой из видов нормальный ...

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, v-david сказал:

ЮрЮрыч! какие-то вопросы честно говоря недоделанные... Где повернуть, модель деталь или сборка... ну выражайтесь точнее пожалуйста

И в детали и в сборке. Это необходимо для того чтобы вид по нормали к нужной плоскости вставить как "текущий вид" в чертеж.

1 час назад, nicomed сказал:

ModelDoc2  метод ShowNamedView2 .. а там по мануалу можно посмотреть какой из видов нормальный ...

Это если есть вид именованый.

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, ЮрЮрыч сказал:

то если есть вид именованый

Вы текст в описании метода читали? Я, даже со своим школьным испанским понял,:

если вид именованный - пиши имя а в id вписывай -1 или 0 (не помню , а открывать хелп лень ).

если вид из стандарных - в первый параметр пустую строку, а во второй параметр  значение id вида, там есть ссылка на перечисление.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      вы тоже думаете что можно все компоненты чпу заменить и ничего не изменится и предупреждение о том чтобы oprminf не восстанавливали на другой машине которое фанук встроил даже в загрузчик это просто алармисткий текст и ничего не будет..... ну и ну и где написано что она mate как например здесь с чего тогда базовый чпу mate если гл.плата не mate мне непонятно из-за экрана что ли
    • статист
      Охренеть, ни за что бы не догадался. Хоть бы словом где обмолвились об этом в документации. Короче нужна команда EMODIF, E_ID, 3, N_ID где E_ID - номер элемента, который мы собираемся модифицировать. Так как используется BEAM188, то у него не два узла оказывается рассматривается, а три, где первые два принадлежат элементу, а третий узел - направляющий. И соответственно число 3 - это номер узла балки, который мы собираемся модифицировать, то есть направляющий узел. И мы этот узел соответственно заменяем на узел с номером N_ID. И тогда сечение реально вращается. Разобрался по этому видео.    
    • Александр1979
      Материнка такая в руководстве есть. На 0i-D я менял материнку, опции не слетели. 
    • gudstartup
      @Viktor2004 кстати конкретно модели автора в руководстве нет хотя оно последней редакции 18 года
    • Viktor2004
      конкретно на этой не менял. На каких менял, написал выше
    • gudstartup
      какие платы и на каких системах вот в чем ворос конкретно на этой возникут проблемы
    • Viktor2004
      ну да. А то что я менял платы это мои бредовые фантазии   Ну исправили в паспорте. И что?
    • gudstartup
      это догадки и гадание на кофейной гуще а япривожу документ где написано про то что прочитайте пункт 4.11 а там представляете вот что 4) Замена печатной платы может привести к изменению идентификационного номера ЧПУ. Проверьте это на Экран ЧПУ. Если оно отличается от описанного в техническом паспорте, исправьте его.  
    • Viktor2004
      я менял все платы. И на форуме наверное не я один их менял. И никто еще не писал что при этом у него слетел сертификат Возможно ID номера проверяются только в момент установки опции, а когда они уже установлены и мирно хранятся в OPRM INF возможно ти уже на ID наплевать
    • gudstartup
      для кого это написано CAUTION Before replacing a printed circuit board, be sure to read Section 4.11, “OPTION INFORMATION FILE” to confirm the procedure.  
×
×
  • Создать...