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

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

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 пользователей

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



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