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

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

6 минут назад, Sla_68 сказал:

с разными суммами

:biggrin: дык в поле "Сколько" можно вбить сколько не жалко. А по-умолчанию там стоит просто самое малое.

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


12 минуты назад, streamdown сказал:

:biggrin: дык в поле "Сколько" можно вбить сколько не жалко. А по-умолчанию там стоит просто самое малое.

Вот я опять опростоволосился.:wallbash:

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

Табличку вставляю макросом , а она чет не хочет отверстия вытягивать. Может есть какие либо догадки? Дело вот в чем, плоскость выделяется ровно как и вершина там где они должны быть, т.е правильно. Я в начале грешил на то что не та плоскость и не та вершина. Но потом повернул вид инструментом 3й вид и заново прогнал строки кода отвечающие за выделение. Все там где надо выделено.

Sub вставка_таблицы_отверстий() 
Dim swView As SldWorks.View
Dim vScaleRatio As Variant
Dim swDrawing  As SldWorks.drawingDoc
Dim swSelData As SldWorks.SelectData
Dim swModel As SldWorks.ModelDoc2
Set swApp = Application.SldWorks
 Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swSelData = swSelMgr.CreateSelectData
Set Part = swApp.ActiveDoc
Set swDrawing = swApp.ActiveDoc

f = BrowseForFileOpen("открыть", "*", "")
Set myView = swDrawing.CreateDrawViewFromModelView3(f, "*Спереди", 0.105, 0.1485, 0)
vComps = myView.GetVisibleComponents
Set Comp = vComps(0)

vfaces = myView.GetVisibleEntities2(Comp, swViewEntityType_Face)
vvertex = myView.GetVisibleEntities2(Comp, swViewEntityType_Vertex)

For i = LBound(vfaces) To UBound(vfaces)
        xName = swDrawing.GetEntityName(vfaces(i))
    If xName = "speredy" Then
        vfaces(i).Select4 False, swSelData
        Exit For
    End If
Next
For i = LBound(vvertex) To UBound(vvertex)
        xName = swDrawing.GetEntityName(vvertex(i))
    If xName = "vertex" Then
        vvertex(i).Select4 True, swSelData
        Exit For
    End If
Next

shahole = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\russian\standard hole table--letters.sldholtbt"

Set myHoleTable = myView.InsertHoleTable2(False, -0.15, 0.2, swBOMConfigurationAnchor_TopLeft, "F", shahole)
 
 ' авторазмеры_чертежа

End Sub

 

hole.jpg

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

@Sla_68 Ещё раз: для вставки таблицы у вас должно быть выделено Vertex и Face. Проверьте перед вставкой что они выделены. (GetSelectedObjectCount) Так же, 

shahole ??? это путь в шаблону? В этом параметре либо пустота, либо полный путь к шаблону таблицы.
Ссылка на сообщение
Поделиться на других сайтах

Все верно . Выделяется и вершина, и плоскость. Это и видно,и много раз я перепроверил. 

shahole -переменная string - полный путь к шаблону таблицы отверстий. (А на скринне результат работы макроса.) BrowseForFileOpen-ваш код для открытия файла. Сам файл я предварительно  укомплетовал наименованиями вершины и плоскости.


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

@Sla_68 ладушки. Тогда магия)))

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swVertex As SldWorks.Entity
Dim swView As SldWorks.View
Dim swSelData As SldWorks.SelectData
Sub main()
    Set swApp = Application.SldWorks
    
    Set swModel = swApp.ActiveDoc
    
    Set swSelMgr = swModel.SelectionManager
    Set swSelData = swSelMgr.CreateSelectData
    Set myView = swSelMgr.GetSelectedObjectsDrawingView2(1, -1)
    
    vComps = myView.GetVisibleComponents
Set Comp = vComps(0)
'vfaces = myView.GetVisibleEntities2(Comp, swViewEntityType_Face)
vvertex = myView.GetVisibleEntities2(Comp, swViewEntityType_Edge)
Dim vVisComps As Variant
    vVisComps = myView.GetVisibleComponents
    Dim i As Integer
    
    
For i = 0 To UBound(vVisComps)
        Dim vVisFaces As Variant
        vVisFaces = myView.GetVisibleEntities(vVisComps(i), swViewEntityType_e.swViewEntityType_Face)
        Dim j As Integer
        For j = 0 To UBound(vVisFaces)
            Dim swEnt As SldWorks.Entity
            Set swEnt = vVisFaces(j)
            swEnt.SelectByMark True, 2
        Next
    Next
    
For i = LBound(vvertex) To UBound(vvertex)
        xName = swModel.GetEntityName(vvertex(i))
    If xName = "vertex" Then
        vvertex(i).SelectByMark True, 1
        Exit For
    End If
Next
shahole = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\russian\standard hole table--letters.sldholtbt"
Set myHoleTable = myView.InsertHoleTable2(False, -0.15, 0.2, swBOMConfigurationAnchor_TopLeft, "F", shahole)

End Sub

 

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

Я всегда верю в то что я сам виноват. Просто, что то зевнул. Проверю сегодня завтра свежим взглядом, глядишь и найдется решение. А еще верю в то, что безвыходных ситуаций не бывает.

Ссылка на сообщение
Поделиться на других сайтах
В 20.12.2017 в 08:43, streamdown сказал:

@Sla_68 ладушки. Тогда магия)))

Это ведь готовое решение. А я вчера уходя на работу даже и не понял. А ведь оно еще и отлично работает.

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

myView.GetVisibleEntities

вы берете плоскости вот этим методом. Но я не понимаю почему  в цикл J вытаскивает плоскости под наклоном (фаски )и но не вытаскивает  такое как дно несквозного отверстия на основной видимой плоскости? Пока что действительно магия.

 

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

дно несквозного отверстия

Хмм..попробуйте у компонента высветить скрытые кромки, может и найдёт "дно". Не знаю)))

Магия то она магия, но вот глюков в API оооочень мало. А значит для чего-то это было сделано (подсветка плоскости под наклоном)

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

Хмм..попробуйте у компонента высветить скрытые кромки, может и найдёт "дно". Не знаю)))

Магия то она магия, но вот глюков в API оооочень мало. А значит для чего-то это было сделано (подсветка плоскости под наклоном)

Все работает. А вот на счет глюков API скажу свое небольшое наблюдение. Если работать в VBA Excel, то вы после того как отработает ваш макрос не можете вернуть действия макроса кнопкой назад. А в sw -это возможно. Поэтому я сделал вывод что API SW -это  управление кнопками пользователя в какой то степени. А это значит что глюков не может быть больше чем при обычном использовании программы.

Принципы работы API архитектурно различны.

 

Кстати мой макрос тоже работает, как выяснилось виновата seldata. Если у меня заменить "vfaces(i).Select4 False, swSelData "  на "vfaces(i).SelectByMark True, 2" то все тоже работает. SelectByMark  раньше не использовал.
       

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

Я вообще нигде и никогда не использовал SelData. Оно вроде как для последующего восстановления выделения. Мне такое нигде не надо было. Поэтому код обычно с SelData=null

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

Доброго вечера. С табличкой разобрался.  Сейчас кружусь пока с местоположением на чертеже аннотаций. Задача стоить вокруг контура плоскости, состоящего из линий и дуг выносить за предел этого контура аннотации.  Я думал что это не составит труда сделать а получилось "как всегда"  . Для расчета центра текстового поля беру точки вершин. Пытаюсь центр каждого ребра детали высчитать по формуле xc=(x1+x2)/2 yc=(y1+y2)/2. Но такой расчет подходит для трехмерного пространства , а не для листа.  Т.е. получается нужно с учетом масштаба листа, масштаба вида вставки, точки вставки вида  вычислить нужные мне координаты. Чет уже голова кругом от этих геморов. Может есть более простой способ трансформации? А так вообще свихнуться можно. Вообщем нужен совет. Я прям растерян. На скрин выложил примерно то что хотелось бы сделать.

выноски.jpg

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

@Sla_68  с аннотациями на картинке чуток сложнее. Максимум что делал - так это вставлял заметку по центру грани компонента в сборочном. Вечерком посмотрю остался ли тот старый код.

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

Есть ли возможность увидеть объекты&свойства VBA SW в  виде "дерева"?

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

Приветствую , интересует написание очень простого макроса на !!!VBA!!!, связанного с таблицами в SW.

по выделенному чертежу виду макрос

1. создаёт спецификацию (!!!плоскую!!!)

2. скрывает строки  Деталей  

3. копирует все данные в массив.

Как создать плоскую спецификацию я разобрался,как скрыть нужные строки и как всё закинуть в массив - не понятно

 

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

 

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.ClearSelection2 True
Dim swActiveView As Object
Set swActiveView = Part.ActiveDrawingView
Dim swBOMTable As Object
Set swBOMTable = swActiveView.InsertBomTable4(False, 0.43, 0.29, swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, swBomType_e.swBomType_Indented, "По умолчанию<Как сварной>", "", False, swNumberingType_e.swNumberingType_Flat, True)
boolstatus = Part.EditRebuild3()
End Sub

Снимок.PNG

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

Приветствую , интересует написание очень простого макроса на !!!VBA!!!, связанного с таблицами в SW.

по выделенному чертежу виду макрос

1. создаёт спецификацию (!!!плоскую!!!)

2. скрывает строки  Деталей  

3. копирует все данные в массив.

Как создать плоскую спецификацию я разобрался,как скрыть нужные строки и как всё закинуть в массив - не понятно

Добрый вечер. У вас очень непонятное тз.  кроме п 1 . В п. 2 я не уверен что можно скрыть строки. А вот столбцы скорее всего можно. В п. 3 не понятно зачем вам массив. Обычно массив это переменная в коде для хранения каких либо данных. И эти данные в последствии как либо используются.

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

Добрый вечер. У вас очень непонятное тз.  кроме п 1 . В п. 2 я не уверен что можно скрыть строки. А вот столбцы скорее всего можно. В п. 3 не понятно зачем вам массив. Обычно массив это переменная в коде для хранения каких либо данных. И эти данные в последствии как либо используются.

Приветствую! Скрыть Деталь1 и похожие нужно потому, что это ненужная информация в моём случае, в принципе, если это невозможно или сложно, это можно сделать и вручную. А массив нужен для обработки данных полученных из спецификации и составления еще 2 таблиц на основе результатов обработки массива. Поэтому желательно закинуть данные с таблицы в двумерный массив, только я не могу понять как это сделать.

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

Всем спасибо , разобрался. Приравниваем  swBOMTable2 As SldWorks.TableAnnotation к той таблице и гоняем данные и скрываем всё что угодно как хотим.

 

Dim swBOMTable2 As SldWorks.TableAnnotation
Set swBOMTable2 = swBOMTable

MsgBox swBOMTable2.Text(4, 4)
swBOMTable2.Text(4, 4) = "lol change"
swBOMTable2.ColumnHidden(3) = True
 

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

Это все надо допиливать под себя, но принцип поймете, комменты все есть, коды открыты. 

BOM to EXCEL.swp

Ну а как автоматически вставить спецификацию - это отдельная тема. Там придется определять тип детали, твердотелка, листовой, сварной и т.д. и по ним выбирать шаблон. Обновить список вырезов для листа и сварного... в общем интересно.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Killerchik
      Вы уверены? Я не знаю, на сколько дотошна на вывоз китайская таможня. Судя по идущим посылкам - совершенно не дотошна.   СОЖ мы себе везли (которую по моей дурости купили, думая что привезти будет легко) через 2 промежуточные страны страны. Что-то более стрёмное, с малейшей электроникой, едет через 3. Это типа прекрасная новая реальность, добро пожаловать.   Со станком не случится, а вот с заказом может случится много чего - не успеть к выставке, не получить инвестора. Производства бывают разные - какая-то конкретная деталь может быть сделана на каком-то одном имеющемся станке, может там отверстие глубокое, может габарит большой. Да может просто у человека один станок, и всё! Что он теперь, ненормальный?
    • Jesse
      @Fedor Успокойтесь. Никто тут не собирается отказываться от теории сплошности
    • Shura762
      Вопрос из разряда "Достало" как сделать в Словаре ширину колонок больше ПОСТОЯННОЙ! уже устал двигать каждый раз. Это первый вопрос. Второй - при "Сброс настроек.." Словарь принимает вид из поставки, где кроются файлы для восстановления, хочу заменить и забыть. Спасибо заранее. И еще вдогонку, при редактировании содержимого Словаря или создания нового используется Шрифт "старый" как изменить на "новый" который в ТФ по умолчанию.
    • Maik812
      Хочешь не хочешь а сортировать по содержимому и искать в нем текст приходится..  Есть правильные конвертеры просто. Но вот бывает что не та кодировка или не так правильно она оформлена и не понимает. Сверху абракадабра в слове "формат" Солид 2010 кажется, а ниже пересохранен в новее версии или наоборот.. Там конвертер x2doc , он "на лету" переводит пдф в текстовик и регулярным выражением вытаскивает "содержимое" в колонку . Поиск текста в пдф тоже так же делается. А содержимое колонки ТС, можно уже одним кликом по команде в EXEL вставить.
    • MagicNight
      Добрый день! Купили фрезерный станок с ЧПУ со стойкой FANUC Series 0i-Model F Plus. Имею не большой опыт данной стойки. Привязали десять инструментов относительно стола станка (т.е стол станка Z=0) Сейчас принесли приспособление которое имеет высоту 50мм. Хотим привязать весь инструмент от приспособления. Подскажите, как это сделать быстро, чтобы не вносить изменения в корректор на каждый инструмент. Пролистал книги в электронном варианте, бегло, не нашел. А уже нужно делать заказ.
    • kkk
      Стрелки разрезов иногда "пробивают" линии разрезов, что-то еще бывает. Но это мелочи, у нас нормоконтроля нет. А вот когда закрашенные виды начинают жестко чудить, с пропаданием или перемешиванием текстур, тогда уже неприятно. Либо еще какие-глюки вылезают оформительские. Нам часто приходится дизайнерам на одобрение файлы засылать, а такие штуки несколько нервируют.
    • ID_Hacker
      Более того, у него в SET PG/PC в диагностике нельзя посмотреть доступные адреса на шине. Но для общих задач подходит. Так же мы их комуникационные интерфейсы MPI/ETHERNET берём, что бы подключать станки на Sinumerik Powerline к заводской сети для сбора данных диспетчеризации и удалённого подключения Step 7.     Здесь ищите: Александр Кудинов, Пряничников Алексей. Номера давать некультурно.     ТИА у вас просит ToolBox 18 Update 1 потому что сама ТИА 18 версии. Проект то такой версии и был? Или вы конвертировали при открытии? Файл проекта ТИА имеет расширение *.ap13, *.ap14, *.ap16, *.ap18 в зависимости от версии ТИА в которой он создан.   И ещё вариант поиска. У вас же на станке наверняка стоит Simatic IPC компьютер и TCU на пульту управления. Вы пробовали выходить на Simatic IPC в Windows и смотреть что на нём есть? Вполне может быть там установлена TIA с нужными дополнениями.
    • Guhl
      Помню из командировки в Африку вез КМки и позолоченные микрухи в баночке через Москву. На пароходе, который мы ремонтировали, старую советскую корабельную радиостанцию в лом сдали. Время было, поэтому повыкусывали. Так таможенник меня мучал минут 30. Говорит, это лом драгметалла, а я ему, что это радиодетали и маркировка на них имеется. А он стоит на своём и толдонит одно и то же. В конце концов, я ему сказал, что я ему их не оставлю и буду до конца утверждать, что это мои запчасти, хоть некоторые из них уже и не припаяешь. Отдал, зараза. А с Америки б/у оборудование несложно вывозить, насколько я понял, так как моему знакомому даже в Крым оттуда посылки доходят с б/у железками. Б/у не очень интересует их таможню. Американцам заплатить сложно, но сейчас это могут сделать так называемые "байеры". Более того на посылках со шмотками амеры вообще пишут адрес "......, Crimea, Russia" 
    • Ahito
      Невозможно проставить центра окружностей в чертежах Солида 22 и не цепляются размеры к данным окружностям. К примеру: на чертеже съемной крыши электропомещения необходимо просверлить 184 отв., из них только к 15% отверстий ставятся размеры и центра. Чтобы правильно образмерить отв., потребовалось около 3 часов. Вместо 5 мин максимум в Солиде 15.
    • davidovka
      не пользовался, проверил, creo 11 - не работает (:
×
×
  • Создать...