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

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

dicFace - Scripting.Dictionary (в него передавал объект Selection для возможности групповой обработки)

 

 

 

так может сначала просто сформулируете вопрос правильно? 

 

Так вот: Хотел изменять пользовательские свойства  у деталей у которых была выделена грань и это событие было универсально для сборок и деталей!

С этим разобрался сделал так (только повесил на другое событие):


Private Sub PropertyManagerPage2Handler9_OnOptionCheck(ByVal Id As Long)
    If swModel.GetType = swDocASSEMBLY Then
        For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
            Set swFace = swSelMgr.GetSelectedObject6(i, -1)
        Next i
        Set swComp = swFace.GetComponent
        Set selModel = swComp.GetModelDoc2
        Set swCustProp = selModel.Extension.CustomPropertyManager(swComp.ReferencedConfiguration)
    ElseIf modIPM.swModel.GetType = swDocPART Then
        Set swCustProp = swModel.GetActiveConfiguration.CustomPropertyManager
    End If
End Sub

 

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


 

@@science, для сохранения подсборок отдельно от головной сборки используйте Pack And Go

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

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

Прикрепленные изображения

 

Уважаемый science судя по изображению вы работаете в мебельной компании? Если так то давайте длиться опытом!?

Написал несколько программок по уменьшению рутины, в данный момент занимаюсь автоматизацией кромокооблицовки

(кто как  это организует и как расставляете обозначение на кромки(ПВХ 0,4....) на чертежах? - я ищу кромки по имени и вставляю заметки связанные с пользов. свойством -ПС)

Выложу часть программки Macro1.swp (хранить рядом с db.mdb):

Она раскрашивает грани у деталей (работает и в деталях и сборках) и добавляет в ПС данные в зависимости от ПС = "Material" = (1,2,3...)

Все настройки программы делаю через Access (интерфейс и логика на метаданных)

(могут отвалиться библиотеки в reference,все на раннем связывании)

P.S. Если есть критика или предложения, пишите или поделитесь своей реализацией!  

db.zip

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

Она раскрашивает грани у деталей (работает и в деталях и сборках) и добавляет в ПС данные в зависимости от ПС = "Material" = (1,2,3...)

 

 

Да еще забыл Грани должны называться: Kr1,Kr2,Kr3.... 

D.0001-01.zip

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

Уважаемый science судя по изображению вы работаете в мебельной компании? Если так то давайте длиться опытом!?

Написал несколько программок по уменьшению рутины, в данный момент занимаюсь автоматизацией кромокооблицовки

(кто как  это организует и как расставляете обозначение на кромки(ПВХ 0,4....) на чертежах? - я ищу кромки по имени и вставляю заметки связанные с пользов. свойством -ПС)

Выложу часть программки Macro1.swp (хранить рядом с db.mdb):

Она раскрашивает грани у деталей (работает и в деталях и сборках) и добавляет в ПС данные в зависимости от ПС = "Material" = (1,2,3...)

Все настройки программы делаю через Access (интерфейс и логика на метаданных)

(могут отвалиться библиотеки в reference,все на раннем связывании)

P.S. Если есть критика или предложения, пишите или поделитесь своей реализацией!  

У меня была своя мебельная компания. Но сейчас пока нет. Сейчас я работяю с листовым металлом и трубами.

Уважаемые специалисты. В работе моего макроса возникла проблемка. Я такое вижу в первые и поэтому решил посоветыватся. Подскажите пожалуйста может ли деталь из листового металла содержать две папки CutListFolder??? У меня обнаружилась такая деталь. Изначальна эта диталь была нормальной, но со временем мне пришлось внести в нее изменения (убрать одни ребра-кромки и добавить другие). После этого в детали появилась вторая папка CutListFolder хотя значения параметров в ней отсутствуют. Подскажите пожалуйста такое может быть или это глюк Solida?

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

Добрый день! Подскажите пожалуйста, мне необходимо сделать таблицу гибов на чертежном виде развертки детали. Использую View.InsertBentTable. В результате создается таблица, в которой перечислены все гибы, их углы и радиусы. Но для того чтобы согнуть детали на станке, помимо этой информации, нужно знать расстояния от торца детали до линии гиба и между гибами. Поэтому вопрос: как получить эти расстояния для каждого гиба в полученной таблице гибов?

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

в полученной таблице гибов

 Судя по тыканию мышкой - никак.

Можно сделать по другому:

- вставить развертку

- заставить  :smile: пользователя ткнуть мышкой в кромку, откуда пойдёт отсчёт

- найти расстояния

- вставить таблицу. Тут можно заранее сформировать ещё один столбец в шаблоне

- радоваться

 

 

чтобы согнуть детали на станке ... нужно знать расстояния

 

А почему такое не делает сам станок? Там же, по идее, накладывается ещё много факторов: будь то допуск на кромки, неравномерность реза отсчёта, позиционирование самого станка. Как-то на задачу технолога смахивает. А технологов SW недолюбливает)) ограничивая их обычным (и чуть больше) набором средств конструктора.

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

 Судя по тыканию мышкой - никак.

Можно сделать по другому:

- вставить развертку

- заставить  :smile: пользователя ткнуть мышкой в кромку, откуда пойдёт отсчёт

- найти расстояния

- вставить таблицу. Тут можно заранее сформировать ещё один столбец в шаблоне

- радоваться

 

 

 

А почему такое не делает сам станок? Там же, по идее, накладывается ещё много факторов: будь то допуск на кромки, неравномерность реза отсчёта, позиционирование самого станка. Как-то на задачу технолога смахивает. А технологов SW недолюбливает)) ограничивая их обычным (и чуть больше) набором средств конструктора.

Спасибо за ответ! Только вот остается вопрос. Как соотнести ту нумерацию гибов, который проставляет сам солид (A,B,C или 1,2,3) с той нумерацией, которая будет получена после просчета расстояний от граничной кромки до линий гиба. Ну то есть я создам еще один столбец, а как туда занести именно соответствующий гиб.

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

Спасибо за ответ! Только вот остается вопрос. Как соотнести ту нумерацию гибов, который проставляет сам солид (A,B,C или 1,2,3) с той нумерацией, которая будет получена после просчета расстояний от граничной кромки до линий гиба. Ну то есть я создам еще один столбец, а как туда занести именно соответствующий гиб.

Я получаю массив линий гиба в определенном порядке: BendlinesArr = swView.GetBendLines. Только, в том ли они порядке, в котором находятся в таблице гибов? Точнее, всегда ли они в том же порядке?

Изменено пользователем Pabloa
Ссылка на сообщение
Поделиться на других сайтах
в том ли они порядке
 ну так проверьте)) там данных по гибу выводится предостаточно. Задайте, к примеру, 3 гиба с разными радиусами. И при получении проверьте каждый - узнаете последовательность.
всегда ли они в том же порядке

Нажмите на кнопку в программе несколько раз  :smile:  последовательно выполнив пункт выше.

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

Всем добрый день.

К знающим людям возник вопрос, помогите если не сложно.

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

Записывал макрос разбирал, но записанные макросы все делают через .SelectByID2

 

boolstatus = Part.Extension.SelectByID2("", "EDGE", 5.58601937496457E-02, 0.156399126416097, -2000.03955498911, False, 0, Nothing, 0)
 
При этом нужно знать коардинаты выбираемого объекта. Но как получить координаты крайних точек сборки на виде???
И возможно ли это вообще.
 
И второй вопрос аналогичный как получить коардинаты крайних точек на развертке детали???
Ссылка на сообщение
Поделиться на других сайтах

Есть ли какие нибудь способы для создания списка/объекта выделенных элементов?

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

Вот такой код в цикле

string assyName = swModel.GetTitle().Substring(0, swModel.GetTitle().Length - 7);

					string fullName = nameComp + "@" + assyName;

					bool retval = swModel.Extension.SelectByID2(fullName, "COMPONENT", 0, 0, 0, true, 0, null, 0);

					int count = selectionMgr.GetSelectedObjectCount2(-1);
сначала выделяет нужные, а потом пробегая дальше по дереву - снимает выделение :unsure: Из-за чего count сначала равен (допустим) 30, а потом уменьшается.

 

Добрый день всем! А кто-нибудь знает как решить эту задачу?

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

Добрый день всем! А кто-нибудь знает как решить эту задачу?

 

В массив компонентов в принципе понятно как загнать

Dim comp() As Component2
For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
   ReDim Preserve comp(i)
   Set comp(i) = swSelMgr.GetSelectedObject6(i, -1)
Next

но это работает если выделены только компоненты, а если выделены не компоненты, а их кромки или грани, то получается надо сначала определить, что именно выделено по типу, а потом получить компонент? значит надо изначально закладывать возможность выделения любой геометрии? Может быть существует способ попроще получить список компонентов по выделенной геометрии?

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

 

 

В массив компонентов в принципе понятно как загнать

Dim comp() As Component2
For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
   ReDim Preserve comp(i)
   Set comp(i) = swSelMgr.GetSelectedObject6(i, -1)
Next

но это работает если выделены только компоненты, а если выделены не компоненты, а их кромки или грани, то получается надо сначала определить, что именно выделено по типу, а потом получить компонент? значит надо изначально закладывать возможность выделения любой геометрии? Может быть существует способ попроще получить список компонентов по выделенной геометрии?

 

Отвечаю сам себе)) Нужно использовать  swSelMgr.GetSelectedObjectsComponent4 для получения компонентов)

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

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

Делаю так:

Sub main56432()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swNote As SldWorks.Note
Dim startMathPoint As SldWorks.MathPoint
Dim endMathPoint As SldWorks.MathPoint
Dim UpOrDown As Boolean
Dim Angle As Double
Dim Radius As Double
Dim IsBendNote As Boolean
 Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swNote = swSelMgr.GetSelectedObject6(1, -1)

 IsBendNote = swNote.GetBendLineValues(UpOrDown, Angle, Radius, startMathPoint, endMathPoint)

 Debug.Print "X: " & startMathPoint.ArrayData(0)
 Debug.Print "Y: " & startMathPoint.ArrayData(1)
 Debug.Print "Z: " & startMathPoint.ArrayData(2)
 Debug.Print "X: " & endMathPoint.ArrayData(0)
 Debug.Print "Y: " & endMathPoint.ArrayData(1)
 Debug.Print "Z: " & endMathPoint.ArrayData(2)

 Debug.Print "Up (True) or Down (False): " & UpOrDown
 Debug.Print "Angle: " & Angle * 57.3 & " degrees"
 Debug.Print "Radius: " & Radius * 1000#; 0 & " mm"

End Sub

Но startMathPoint.ArrayData это координата точки в системе координат модели. А как это перевести в координаты листа?

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

Но startMathPoint.ArrayData это координата точки в системе координат модели. А как это перевести в координаты листа?

 

 

 

Вот пример с детальным описанием, как перевести из координат детали в координаты листа (Вам будет необходимо найти элемент, к которому привязана заметка через Annotation::GetAttachedEntities3, а затем можно следовать примеру). Могу сделать русскую версию через несколько дней: https://cloud.centralinnovation.com.au/sharpcode/index?article=Transformations-in-Drawing-Vie

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

 

 

 

Вот пример с детальным описанием, как перевести из координат детали в координаты листа (Вам будет необходимо найти элемент, к которому привязана заметка через Annotation::GetAttachedEntities3, а затем можно следовать примеру). Могу сделать русскую версию через несколько дней: https://cloud.centralinnovation.com.au/sharpcode/index?article=Transformations-in-Drawing-Vie

 

ой) спасибо большущее за такой оперативный ответ))) все работает)))

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

Добрый день!

Подскажите пожалуйста: можно ли в Ribbon(лента) программно(vba) добавлять кнопки и изменять их подписи?

Сама суть проблемы - как можно визуально определить висит ли в памяти программа (т.е хочется при нажатие на кнопку менять ее Caption = Вкл.\Выкл.)

Или можно решить еще как то?

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

Скорее всего можно  Вопрос делал ли кто - я не видел. Но должно же быть)).

как можно визуально определить
 

Странный путь. Может сделаете окно с прогрессбаром? Чем лезть в дебри с кнопками. Так и проще и нагляднее. Хотяя...ща пороюсь.

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

 Жаль что AddCommandItem2 Method (ICommandGroup)  .NET Syntax (мне нужно только VBA) 

 

 

Странный путь. Может сделаете окно с прогрессбаром?

 

Я плохо сформулировал(висит ли в памяти программа): программа при первом нажатии на кнопку загружается в память и мониторит события SW (т.е висит постоянно пока ее не выкл. кнопкой или до завершения сеанса SW)

При нажатии на кнопку(запуск) не чего не происходит - а хотелось бы увидеть что все работает!

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • ANT0N1DZE
      Упрощенный план действий: Начните со стр. 155 https://www.utgt73.ru/uploads/biblioteka/fizika 10.pdf Если будет вращаться быстро и не в вакууме, то надо будет учесть "парус" этого тела, там сопротивление газа зависит от скорости движения. Это уже примерно 1 курс университета (тоже гуглится спокойно). 
    • MagicNight
      Заметил такую особенность, что в PowerMill v6 (возможно и в других тоже) происходит следующее... Создаю NC-файл и туда сбрасываю траектории (около 10-15 на разные фрезы), на выходе некоторые траектории не прописывает вкл охлаждения. То есть в графе Охлаждение на одну из 10-15 траекторий пишет НЕТ, на всех остальных -Стандартное (то есть да) Получается, что из, условно десяти траекторий, одна или две прописываются без включения СОЖ. Но что интересно по отдельности программы выходят с включенной СОЖ, всегда! Не могу понять зависимость с этим. Кто-нибудь сталкивался с этим?
    • ЮрЮрыч
      Вам нужно просто общее количество или оптимальную раскладку для резки наподобии нестинга?
    • Jesse
      да. Забыл добавить. Я там в тестовом примере ещё сверху шум накинул небольшой амплитуды, в 10 раз меньше чем основной сигнал. Если шум убрать, то получится что амплитуда дискретного фурье спектра растёт примерно в sqrt(N2/N1) раз, где N2 - число отсчётов для правого графика, а N1 - для левого. Но не суть.. Мой главный вопрос как получить "рабочую", правильную амплитуду DFT, которую можно было бы вбить в прогу?   не, у меня более простой второй вариант) вот когда скажут заморочиться с ансамблем и случайными процессами, тогда и будуда и комиссии если что-то подобное пробубнить, то мне точно прилетит..   Harmonic Response. На резонанс проверить.   вот сейчас только в голову пришло! Там ведь поправочные коэффы в DFT используются! Типа 1/sqrt(2*Pi) чё т такое. Пойду курить вольфрам
    • Orchestra2603
      Я, честно скажу, не знаю как на практике это проходит, что в нормах пишут и т.д. Стоит задача провести вероятностный анализ (вероятност ьпревышения пределеа текучести, например), или надо просто посчитать динамику на одну вот эту вот историю ускорений, и все? Второй вариант проще, но по-правильному, наверное надо, как в первом варианте.   а какой анализ вы хотите делать?   Если больше отсчетов по частоте, то повышается разрешение в частотной области, и просто пик становится более резким. В предельном случае будет просто одно значение в районе частоты действия силы, а вокруг него везде нули. Но, когда разрешение падает, то амплитуда с пика "сползает" и "растекается" на соседние частоты. Но сама сумма в силу равенства Парсеваля, как вы правильно сказали,  должна быть такой же.   Это очень странно. Впечатление такое, что как будто где-то какой-то косяк с БПФ. Если в начале во времени был синус с амплитудой 1, то на спектр еможет быть 1 (если однсторонний спектр), либо 1/2, если двухстронний спектр. Может, оконная функция какая-то странная? Надо разбираться...  Так а если он задаст на уровне земли как кинематическое возбуждение опорного контура? Вроде же норм... Или речб о том, чтобы убрать из модели опорную конструкцию, на которой держится оборудовнаие?
    • Борман
      и не только. При отсутствии отраслевого ГОСТа, пользуйтесь СП 14.13330.2018. Там найдете нужные коэффициенты.
    • Jesse
      у нас по НП-068-05 в отсутствие акселерограмм и спектров ответа и на 3g трясут.. мне тоже один мужик с испытательного центра посоветовал типа "бери максимум с акселерограммы да и всё". Максимум в районе 0.5g и получается   имеете в виду, что если оборудование расположено выше, то там и ускорение больше будет?
    • serg-nn
      Подскажите новичку что не так в этой программе. Деталь простая, на выходе получается полная ерунда- фасок нет, качество поверхности жуткое, самый малый диаметр вообще накатан. В симуляции , что в станке, что в программе все хорошо. Считаю по формулам- подачи сходятся... УП https://cloud.mail.ru/public/XUNu/xwkFybupZ https://ibb.co/zfZVSsL
    • Борман
      Вот вам 0,4 Надо задавать с графика выше в этом посте. Но это ускорение на поверхности земли. Надо его превратить в расчетное ускорение.
    • Fedor
      Без доверия не построить нормального капиталистического государства . Доверие это важнейший социальный капитал. Кинуть можно один раз, сотрудничать можно много. Это как цикл в двс.   Маркса стоит почитать.  Нет доверия - нет циклов, нет и полезной работы. Такова социальная термодинамика  :)
×
×
  • Создать...