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

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

Здравствуйте, хотел бы узнать возможно ли выбрать кромки в модели без использования метода 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 пользователей

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




  • Сообщения

    • Artas28
      Syntec 220MA Во время смены инструмента, шпиндель по Z уехал выше. После нажатия паузы. Всё встало. Станок находится выше машинного нуля и не опускается. Кто сталкивался? Как опустить?  Ошибка MLCHint R590.7 Plc hint
    • Snake 60
      @Alexey0336  Да, всё работает: https://cloud.mail.ru/public/NGNq/Ft8UAJtf3  
    • Anat2015
      Так оно и есть, китайский клон Сименс-808.  
    • Snake 60
      Что Вы подразумеваете под словом "Конфликтовать"? Мпроп и мой макрос делают одно и тоже действие, создают и заносят свойства в файл солида. Если свойства с одинаковым именем (например Обозначение и Наименование), то Да, свойство перезапишется тем макросом, которой отработал последним. Щас проверю, отпишусь. Изначально Наименование и Обозначение берутся из имени файла, но его всегда можно перезаписать... Если что, это всегда можно переписать под Ваши требования.
    • jtok
      Если у вас SW не выше 18й версии, могу проверить у себя.
    • Orchestra2603
      Ну, есть же, например QZ алгоритм (обобщение QR разложения, для слуая когда матрица масс не равна I). Отлично работает, когда одна из матриц вырожденная. Вот статься:  https://deepblue.lib.umich.edu/bitstream/handle/2027.42/6667/bac9269.0001.001.pdf?sequence=5   вот коротко в Вики     Раскопал это вообще, глядя в справку от матлаба: https://www.mathworks.com/help/matlab/ref/eig.html.   Это все нюансы....  И все эти алгоритмы сущетсвуют уже кучу лет во всяких библиотеках типа LAPACK. Вы думаете, что в Dassault Systemes или Ansys про это не знают, и их модальник - лажа?  
    • karlf
      Сегодня не было времени, завтра посмотрю и пришлю фото как выглядит
    • Bot
      АСКОН выпустил новый релиз среды общих данных Pilot. В нем получили развитие инструменты строительного контроля и авторского надзора, появилась возможность вручную координировать модель объекта капитального строительства. Стройконтроль Вести стройконтроль на площадке, а также авторский надзор за деятельностью арендаторов и собственников поможет привязка панорамных фото объекта к чертежам и документам. Для съемки панорамных фото используется мобильное приложение Pilot-Photo360, доступное для Android. С помощью приложения специалисты строительных организаций, компаний-застройщиков, девелоперов смогут: Находясь на объекте строительства или эксплуатации, фотографировать объект на специализированную панорамную камеру и сразу прикреплять снимки к точкам на чертежах и документах в Pilot-BIM или Pilot-ICE Enterprise. Группировать панорамные снимки по альбомам. Просматривать фото помещения с разных ракурсов, при этом видеть направление взгляда относительно [...] View the full article
    • wega7777
      Судя по формату ошибки похоже на Систему ЧПУ от HCNC — аналог Siemens и Fanuc. ЧПУ HNC808DiT, но могу ошибаться.
    • Alexey0336
      Похоже на то, что мне нужно) Пара вопросов: 1. Будет ли макрос конфликтовать с Mprop? 2. Если я каждой сборке/детали заранее пропишу в обозначение: $PRP:"Порядковый номер" ХХ.YY.ZZZ, подхватит ли формула свойство "порядковый номер" после всех действий?
×
×
  • Создать...