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

Помогите разобраться с API


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

Подскажите пожалуйста как программно вставить позицию на чертеж, а также как можно зачитать позиции с чертежа.

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


Подскажите пожалуйста как программно вставить позицию на чертеж, а также как можно зачитать позиции с чертежа.

Включи "запись макросов" в SW, сделай нужные тебе операции, потом выключи "запись макросов".

Открой этот макрос и посмотри что там SW написал...

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

Записал макрос

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

boolstatus = Part.ActivateView("Чертежный вид1")

boolstatus = Part.Extension.SelectByID2("", "EDGE", 0.1370852459016, 0.1852672131113, -499.9065510649, False, 0, Nothing, 0)

End Sub

записался только выбор компонента, а как вставить позицию на этот компонент ?

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

записался только выбор компонента, а как вставить позицию на этот компонент ?

Да, туда много чего не попадает.

Balloons

BalloonStack

Это не подойдёт (из справки, по умолчанию файл справки лежит тут: С:\Program Files\SolidWorks\api\sldworksAPI.chm)?

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

Вот макрос записанный SW для вставки AutoBalloon:

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

boolstatus = Part.Extension.SelectByID2("Drawing View1", "DRAWINGVIEW", 0.1050318772681, 0.2679690527591, 0, False, 0, Nothing, 0)

Dim Notes As Variant

Notes = Part.AutoBalloon3(1, True, 0, 2, 1, "", 2, "", "Dim") ' <<< это вставка сразу всех позиций!

Part.ClearSelection2 True

' а это я передвинул позицию(положение текста)

boolstatus = Part.Extension.SelectByID2("DetailItem33@Drawing View1", "NOTE", 0.4481072668391, 0.230981237321, 0, False, 0, Nothing, 0)

End Sub

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

' а это я передвинул позицию(положение текста)

boolstatus = Part.Extension.SelectByID2("DetailItem33@Drawing View1", "NOTE", 0.4481072668391, 0.230981237321, 0, False, 0, Nothing, 0)

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

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

Да, я заметил.

Похоже, когда SW требуется "указание точки" - он не пишет такие операции в макрос...

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

Похоже, когда SW требуется "указание точки" - он не пишет такие операции в макрос...

Он просто большинство туда не пишет и в большинстве случаев записывает туда не самые последнии и оптимальные решения. Правда одно из простых решений необходимых функций, включить Англоязычный интерфейс и поросто поискать нажимаемые кнопки/открываемые окна в справке по API-интерфейсу.
Ссылка на сообщение
Поделиться на других сайтах

Он просто большинство туда не пишет и в большинстве случаев записывает туда не самые последнии и оптимальные решения. Правда одно из простых решений необходимых функций, включить Англоязычный интерфейс и поросто поискать нажимаемые кнопки/открываемые окна в справке по API-интерфейсу.

У меня постоянно "Англоязычный интерфейс", но записью макросов пользуюсь - иногда помогает,

иногда нет.

Ну а справка по API - это уж само-собой...

Иногда просто не охота с параметрами функций рабираться, макрос заисал - посмотрел, все ясно стало.

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

Подскажите пожалуйста как программно вставить позицию на чертеж, а также как можно зачитать позиции с чертежа.

Функция для вставки позиции в чертеж: status = ModelDoc2->IInsertBOMBalloon2 ( style, size, upperTextStyle, upperText, lowerTextStyle, lowerText, &retval). Я ей вставляю позиции. Хотя не совсем понятно, что вы подразумеваете под понятием вставить? Я имею ввиду предшествующие шаги.

Зачитывание позиции из чертежа - это поиск Note и определение принадлежности этого Note к Balloon: status = Note->IsBomBalloon ( &retval ). Note ищется, обычно, циклом или выбирается по имени...

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

Хотя не совсем понятно, что вы подразумеваете под понятием вставить? Я имею ввиду предшествующие шаги.

Хочу сделать свою спецификацию, чтобы позиции зачитывались из сборки в спецификацию и обратно и отображались на чертеже. Точнее не вставить а как зачитать позиции из сборки SolidWorks ?

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

Хочу сделать свою спецификацию, чтобы позиции зачитывались из сборки в спецификацию и

обратно и отображались на чертеже. Точнее не вставить а как зачитать позиции из сборки SolidWorks ?

Задача непростая!

...а как зачитать позиции из сборки SolidWorks ?

Что зачитывать-то, когда позиций в сборке нет, их надо еще создать/вычислить!

Т.е.:

- просканировать сборку

- подсчитать кол-во одинаковых деталей

- распределить по группам: Сб.единицы, Детали, Стандартные изделия и тд.

- и уже теперь приступать к присвоению каждой детали номера позиции. Где-то сохранять эту

инфо(в файл допустим). Причем надо сохранять в виде связанного списка:

уникальный номер компонента сборки <=> номер позиции, наименование, кол-во, в какую группу входит,

и др.

А уж потом думать о том как "зачитать..." и проставлять.

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

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

Может дадите наводку на функции какие надо использовать ?

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

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

Может дадите наводку на функции какие надо использовать ?

На каком языке собираешься писать? Си, VB...

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

Хочу сделать свою спецификацию, чтобы позиции зачитывались из сборки в спецификацию и обратно и отображались на чертеже...

Вы ввязываетесь в решение очень большой и, достаточно, интересной проблемы. Головная боль обеспечена. Поверьте на слово, я через это прошел (еще не совсем). Чем дальше в лес, тем больше дров...

Может дадите наводку на функции какие надо использовать ?

Там используется довольно таки большая часть функций API SW. Решите с чего сначала начнете...
Ссылка на сообщение
Поделиться на других сайтах

Пишу на C#. SWR-спецификация вызывает ряд вопросов у конструкторов, поэтому решили создать собственную

спецификацию. Для начала хочу сгруппировать элементы Feature Manager с сортировкой по наименованию и подсчетом

количества одинаковых элементов, потом получать позиции и формировать спецификацию. Вопрос в том как менять позиции в FeatureManager.

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

Пишу на C#. SWR-спецификация вызывает ряд вопросов у конструкторов, поэтому решили создать собственную

спецификацию. Для начала хочу сгруппировать элементы Feature Manager с сортировкой по наименованию и подсчетом

количества одинаковых элементов, потом получать позиции и формировать спецификацию. Вопрос в том как менять позиции

в FeatureManager.

Вы несколько не с того начали.

Сначала сделайте ТЗ - напишите на бумаге "идеальный" вариант того, что Вы хотите получить.

Тут нужно ответить (самому себе) на ряд вопросов:

1 - в каком документе SW Вы планируете создавать сборку: в чертеже или в сборке;

2 - уровни сборки: включая все подсборки или только один верхний;

3 - на каком этапе(после полного окончания работы над проектом или ...);

4 - какой основной принцип: "одна деталь -> один файл -> один чертеж -> все под одним именем"? или по-другому (я лично, почти всегда, придерживаюсь указаннного принципа)

5 - будете-ли Вы привязываться к именам/описаниям/свойствам компонентов или их файлов, какие св-ва нужны в СП - зона, масса...;

6 - возможности создаваемого СП: нужны- групповые СП или еще там какие, насколько часто Вы изменяетет СП;

7 - куда выводить результат: чертеж SW, Word, Excel...;

От ответа на эти вопросы очень многое зависит!

Я вот много видел СП, во многих заложен принцип: название детали или файла = "наименованию" компонента,

описание = "обозначению" или через свойства компонента.

Меня такой принцип совершенно не устраивает: когда я начинаю работу над изделием я совершенно не представляю как будет

называться деталь или файл, ни, тем более, ее обозначения и вообще будет ли она в дальнейшем присутствовать в сборке или я

ее заменю на другую или вообще удалю.

Иногда ее сначала обзываешь "уголок", а в процессе проектирования она "перерождается" в что-то типа кронштейн.

Что делать: переименовывать все вхождения - детали, файла ее чертежа, в сборке... изменять св-ва?

А если таких деталей сотни?

У меня лично такой принцип:

- с сборке SW сканирую сборку:

- подсчитываю кол-во одинаковых компонентов;

- распределяю по группам (СБ, детали, СТ изд...)

- составляю "таблицу соответствия" : в окне у меня два списка: слева список компонентов сборки, справа список, который "уйдет" в СП (по-умолчанию он идентичен первомц списку)

-затем, я начинаю в правом списке (левый у меня закрыт для редактирования!) именовать детали, проставлять позиции, обозначения. Все это в полуавтоматом:

выделяю группу компонентов, указываю, допустим, начальный номер позиции, например "3" и жму кнопку. В выделенном спске происходит нумерация: 3,4,5...

Также я поступаю с обозначениями: из XXX.000.00.000 получаетсся XXX.000.00.001, XXX.000.00.002, XXX.000.00.003...

Потом я сохраняю эту таблицу в файл (может и примитивно, но я начинал эту работу для SW 99, ни VB, ни SW толком не знал, до этого только писал на Lisp`e для ACADA)

Все, таблица "соответствия" готова! Теперь делаю/открываю чертеж сборки и в своей проги выбираю 2-й пункт: "работа с чертежом", далее

появляется окно, в котором ест кнопки: "проставить позиции", "заполнить основную надпись"... (При этом моя прога считывает всю инфо из ранее

созданного файла - руками ничего не ввожу).

Потом я жму кнопку "Записать СП в Word", что и происходит. Там можно еще, если надо, что-то отредактировать..

Тоже самое и с деталями: делаю/открываю чертеж детали и жму кнопку "заполнить основную надпись".

Ну и все. СП готова. Далее печать СП, чертежей...

Недавно начал делать похожее, но только с выводом в Excel и с обратной связью: переименовал компонент в таблице - можно нажать

кнопочку "Переименовать в сборке". Предусмотрел возможность выбора в таблице Excel`a или открытия/промотра файла компонета...

Так что для начала ответьте на первые 7 вопросов хотя-бы...

Удачи!

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

- подсчитываю кол-во одинаковых компонентов;

К выше сказанному, я бы добавил и проблемы, с которыми столкнулся лично, при работе с деталями, имеющими конфигурации. Как их подсчитывать? У меня встречается, когда одно и тоже наименование в дереве, но должны быть разные детали. Например винты с конфигурациями. А также, когда разные конфигурации, но должна быть одна деталь, пружины например. Так что, предусмотрите эти варианты. Проработайте также вопрос о раскрытии подсборок на определенную глубину вложенности.

Пишу на C#

Рекомендовал бы делать dll. Exe-файл получается для этой задачи, слишком тормознутый. Сканирование сборки примерно в 3000 деталей отличается по времени в разы при одном и том же, почти, коде....
Ссылка на сообщение
Поделиться на других сайтах

К выше сказанному, я бы добавил и проблемы, с которыми столкнулся лично, при работе с деталями, имеющими конфигурации. Как их подсчитывать? У меня встречается, когда одно и тоже наименование в дереве, но должны быть разные детали. Например винты с конфигурациями. А также, когда разные конфигурации, но должна быть одна деталь, пружины например.

...

А я использую не просто имя компонента из дерева построения, а имя + имя конфигурации (конкатенация строк)- получается уникальный

идентификатор.

Изменил конфигурацию компонента - изменился этот идентификатор. Правда надо заново сканировать сборку.

Рекомендовал бы делать dll. Exe-файл получается для этой задачи, слишком тормознутый. Сканирование сборки примерно в 3000 деталей

отличается по времени в разы при одном и том же, почти, коде....

Да, это я на собственной шкуре испытал: запускаю и иду кофе пить...

А у меня еще и в VB... :wallbash:

Ты вот на досуге сделал-бы отдельный модуль оптимизированный по скорости только для сканирования сборки и вывода результатов в файл

какой-нибудь, с разделителями...

Что-бы его можно было подключать по типу как функции Win API Windows :-)

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

А я использую не просто имя компонента из дерева построения, а имя + имя конфигурации (конкатенация строк)- получается уникальный

идентификатор.

А я здесь ничего и не менял. Так и осталось: Плита_CN_Default, например. Очень сильно помогает. Вопрос только в подсчете количества. Пример из последней моей работы. В сборке 22 одной и той же пружины, но с четырьмя разными рабочими высотами (10 конфигураций)

Да, это я на собственной шкуре испытал: запускаю и иду кофе пить...

Ну VB6 еще довольно, таки шустро, правда давно это было. А вот одна из последних моих сборок: 2000 деталей, в спецификации запись 150, полное сканирование 7сек. Правда на Core 2 Duo. Exe-файл это бы делал минуты 2. Я как-то проверял, года 2 назад. Хотя проблема-то не во времени сканирования, а в дополнительном функционале, которого почему-то все время не хватает. Одну проблему разгребешь, десять других уже в дверь ломятся.

Ты вот на досуге сделал-бы отдельный модуль оптимизированный по скорости только для сканирования сборки и вывода результатов в файл

какой-нибудь, с разделителями

Сейчас не получиться. Устраняю пробел в знаниях OpenGL. Для той же самой спецификации. А то, если большая сборка, головная боль начинается. :)
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • eljer0n
      Большое спасибо! Посмотрю. Но, судя по всему, даже если удастся заставить его сохранять чертеж с трехзначным исполнением, видимо, в той же спецификации правильного отображения не добиться. У Леона с товарищем был об этом разговор, что солид вроде как не воспринимает исполнения дальше двузначного. Хотя, может и я неправильно понял. Вернусь к этому вопросу чуть позже. Еще раз спасибо за совет.
    • mrVladimir
      @gudstartup @Viktor2004 спасибо Вам за такое участие.  Я вот тоже в maintenance manual заглянул (наконец-то ). А вот фраза "при замене FROM/SRAM необходимо ..." (под пунктом 3 во вложении) не подразумевает, что появление ps5523 произойдет только если мы решим на нашей чпу поменять именно FROM/SRAM. А при замене других печатных плат (в том числе и материнской ) необходимо только как написано в пункте 2 восстановить данные памяти SRAM и, при необходимости, файлы пользователя. Нет?
    • maxx2000
      @davidovka это же очевидно. Вдруг нужного размера не окажется  как в анекдоте  
    • davidovka
      А для чего и сотни исполнений в таблице и гибкость одновременно?
    • ak762
      в СВ есть встроенный калькулятор для расчета балок при различных сценариях нагружения если ваш профиль монорельса совпадает с предопределенными профилями то можно прикинуть поведение монорелься без анализа на картинке 2 расчета двутавровой балки в качестве теста    
    • Viktor2004
      @mrVladimir не спешите отчаиваться. Вопрос спорный Я завел новую тему в которой мы это выясним  
    • Viktor2004
      Уважаемые специалисты. У кого был опыт замены фануковских плат? Именно на ЧПУ. Пожалуйста напишите какое ЧПУ и какую плату меняли И результат. Подошла или не подошла  
    • gudstartup
      @mrVladimir к сожалению с вашей платой все не так просто вам придется приобрести ее клон то есть она должна быть подготовлена продавцом и в нее должен быть записан серийный номер вашей старой платы он на штрихкоде а так готовить умеют не все или готовьтесь к сертификации опций также есть еще один аппаратный вариант но не каждый будет на новую плату м\сх перепаивать с риском превратить ее в кирпич.   если бы у вас был отдельный модуль процессора то вы бы просто переставили его в новую плату и все а с этой платой из-за ее не модульности намучаешься
    • SAPRonOff
      в окне состава изделия снять замочки у колонки позиция, тогда генератор колонки состава изделия не будет им присваивать свои значения автоматически, а запомнит то - что вы поставили или стояло до изменений проекта: 
    • Kelny
      Смотреть надо процедуру main, почти в самом конце: Слева от этих строк на сером поле ставите красные точки (клик мышкой) и запускаете макрос, когда макрос дойдёт до обозначенных строк можно будет наводить мышку на перменные, например, sPathName и смотреть значения, что бы определить где сбой: Для продолжения выполнения макроса нажимаем зелёный треугольничек (как кнопка Play).      
×
×
  • Создать...