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

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

Прошу подсказать:

Записываю свойства пользователя компонента макросом, после записи они не отображаются в таббилдере, пока не откроешь вкладку свойства пользователя, где все вновь записанные свойства отображаются сразу, и не закроешь её. Или можно перечертить пару раз, плюс глубокое перестроение и сохранение. Только после такого подшаманивания, новые значения свойств начинают отображаться в таббилдере. В конце макроса перечерчивание, перестроение и сохранение есть. Значения в системе прописываются, только в таббилдере не отображаются сразу, поля остаются не заполненными, и если в таббилдере нажать применить, благополучно стираются из системы. Надоело после работы макроса открывать свойства пользователя. Думаю, что это чистейший баг таббилдера. Как решить? 

 

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


12 часа назад, alek77 сказал:

Думаю, что это чистейший баг таббилдера. Как решить?

ТабБилдер такая же программа как и ваша, поэтому обновляет данные только когда посчитает ей это нужным, а нужным вероятно она считает только в случае обращения к соответствующей форме и отлавливанию этого события (что бы не тратить ресурсы системы на постоянный опрос).

 

Лично мне не понятно зачем вам ТабБилдер? Если у вас макрос, который можно встроить в том числе на место ТабБилдера.

Или зачем вам макрос? Если вы всё же предпочитаете ТабБилдер.

 

13 часа назад, alek77 сказал:

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

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

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

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

ТабБилдер такая же программа как и ваша, поэтому обновляет данные только когда посчитает ей это нужным, а нужным вероятно она считает только в случае обращения к соответствующей форме и отлавливанию этого события (что бы не тратить ресурсы системы на постоянный опрос).

 

Лично мне не понятно зачем вам ТабБилдер? Если у вас макрос, который можно встроить в том числе на место ТабБилдера.

Или зачем вам макрос? Если вы всё же предпочитаете ТабБилдер.

 

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

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

 

SetCustProp.exe

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

SetCustProp.exe

Предлагаете поискать код вашей программы в исполняемом файле?

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

Предлагаете поискать код вашей программы в исполняемом файле?

Простите великодушно, отправил в ЛС

Ссылка на сообщение
Поделиться на других сайтах
В 28.01.2019 в 23:07, alek77 сказал:

Надоело после работы макроса открывать свойства пользователя

 

Так чтобы этого не делать, в макросе д.б.

 

В 29.01.2019 в 12:12, Kelny сказал:

строчка с перестроением

 

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

 

Так чтобы этого не делать, в макросе д.б.

 

 

 

В 28.01.2019 в 21:07, alek77 сказал:

В конце макроса перечерчивание, перестроение и сохранение есть

Есть такие строчки. Но это не помогает.

 

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

Они начинают корректно отображаться только после нажатия кнопки ОК окошка суммарная информация.

 

Ссылка на сообщение
Поделиться на других сайтах
В 28.01.2019 в 23:07, alek77 сказал:

В конце макроса перечерчивание, перестроение и сохранение есть

Может сразу после записи свойств сделать??

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

Может сразу после записи свойств сделать??

спасибо, попробовал, не помогает

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

Тут на форуме скачивал программку Mensv .. После нее тоже надо было в свойства заходить, чтобы они обновились.. А вот у меня после макроса на VBA не надо.. И у @Kelny в Change_property вроде тоже..

Ссылка на сообщение
Поделиться на других сайтах
В 13.12.2010 в 16:29, Camel сказал:

....

Сборка это не физический элемент, скорее всего внести изменения в нее не открывая оболочку SW будет весьма проблематично. А передача управления среде SW и работа в ней уже "от имени SW" никакая не проблема.

Ну вот в vba:

'       Открываем приложение "SolidWorks", если оно не открыто
        Set swApp = CreateObject("sldworks.application")
'       Скрытая обработка
        Application.ScreenUpdating = False  ' Отображение
        swApp.Visible = False
'        Part.Visible = False
        'Открываем очередной файл модели
        Set Part = swApp.OpenDoc("Полное имя файла с расширением", 1)

 

и погнали

 

Что касается изменения свойств, то возможно тут проблема в том, что если писать "поверх" уже существующего, то скорее всего ничего не получится. Надо стирать существующее и потом писать по-новому.  С таббилдером не работаю, не знаю.

 

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

Потихоньку изучаю C#. Переписал свой макрос с VBA на C#. Прохожу по компонентам сборки и считываю значения свойств пользователя.

На C# макрос стал работать гораздо медленнее. В чем может быть проблема? Или так и должно быть?

Свойства с одного компонента считываются более 1,5 сек.

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

 

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

Подскажите, кто знает, пожалуйста

CustPropForCheck.zip

Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, alek77 сказал:

Потихоньку изучаю C#. Переписал свой макрос с VBA на C#. Прохожу по компонентам сборки и считываю значения свойств пользователя.

На C# макрос стал работать гораздо медленнее. В чем может быть проблема? Или так и должно быть?

Свойства с одного компонента считываются более 1,5 сек.

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

 

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

Подскажите, кто знает, пожалуйста

CustPropForCheck.zip

 

В дополнение: макрос на VBA считывает из сборки свойства пользователя для 250 компонентов около 2 секунд.

Аналогичный код на C# - 8 минут с лишним.

 

Направьте хоть, в какую сторону искать решение?

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

"Я думал, что переход на язык более высокого уровня и производительность увеличит..." с какой стати? Увеличивает производительность переход на языки более низкого уровня. А переход на языки высокого уровня увеличивает ВАШУ производительность, но не компа.

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

 

В дополнение: макрос на VBA считывает из сборки свойства пользователя для 250 компонентов около 2 секунд.

Аналогичный код на C# - 8 минут с лишним.

 

Направьте хоть, в какую сторону искать решение?

 

Помогли на форуме ЫЦ, если кому потребуется, решение следующее:

 

//для C#
//Метод такой-то()
{
swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application");//или любой другой вариант
//Используем строку в начале:
swApp.CommandInProgress = true;

//Тут код метода

//Используем строку в конце:
swApp.CommandInProgress = false;
}

Код на C# отработал за 648 миллисекунд, вместо 8 минут, то что нужно

 

CommandInProgress

Повышает производительность приложений вне процесса, информируя SOLIDWORKS о том, что приложение вне процесса выполнит последовательность вызовов API.

 

Попробуйте команду кто может в макросах VBA, в C# прирост производительности программы просто офигенный

Отпишитесь, пожалуйста

Ссылка на сообщение
Поделиться на других сайтах
В 05.02.2019 в 19:14, alek77 сказал:

Попробуйте команду кто может в макросах VBA

А макросы VBA выполняются вне процесса?

http://help.solidworks.com/2015/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks~CommandInProgress.html

SOLIDWORKS then reduces the number of updates it makes during these calls. Use of this property only effects out-of-process applications.

 

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

Здраствуйте
Возникла проблена с работой макроса для хранения спецификации в формате экселя
Файл макроса добавляю
Возникает ошибка 52 Error 52, Bad file name or number
Возможно кто-то подскажет как ее решить.

export solidworks bom to excel.swp

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

Не знаю даже чем вам помочь. Перепирание в эксель по-моему только ленивый не писал, но вот разбираться с чужими (не вашими) кодами желания нет от слова совсем. Слишком общо поставили задачу. Могу скинуть свой вариант, только скорее всего он вам не нужен, видимо вам более интересен принцип. Принцип прост - загоняете таблицу в массив, массив передаете в excel.application и там его деребаните по своему вкусу.

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

Возникает ошибка 52 Error 52, Bad file name or number
Возможно кто-то подскажет как ее решить.

Поиск по просторам интернета не помог? В поиске вроде много ссылок на аналогичную ошибку и попытки её решить.

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

Поиск по просторам интернета не помог? В поиске вроде много ссылок на аналогичную ошибку и попытки её решить.

Нет к сожалению

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
    • Александр1979
      SP9047 SSPA:47 ILLEGAL SIGNAL OF POSITION CODER "The relationship between the A/B phase and 1-rotation signal is incorrect (Pulse interval mismatch)." "Неправильное значение счетчика импульсов сигнала на энкодере ALPHAi. На фазах A и B энкодера за один оборот шпинделя насчитывается 4096 импульсов обратной связи. Программное обеспечение по управлению шпинделем проверяет количество импульсов на фазах A и B, соответствующее энкодеру, при каждой генерации сигнала одного оборота. Данный аварийный сигнал срабатывает, если регистрируется число импульсов, нарушающее заданный диапазон."
    • vs3dpro
      Добрый день! У нас на есть SLA принтер 600х600х400мм. Можно напечатать мастер- модели, и можно приехать посмотреть. mail@iges.space
    • gudstartup
      после ввода 789 в edit mod надо перейти в режим ручное упр. нажать mod а потом помощь и откроется wzw.hlp  с возможностью выполнения команд управления atc. если не появляется содержимое wzw.hlp то возможно что у вас другой код хотя 789 'это стандарт для dmg в этом случае надо смотреть ваш plc раздел у меня пароль прописан в файле wzw_rett.mod
×
×
  • Создать...