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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...