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

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

Kelny

Можете помочь?

Тут может помочь только бубен и каким-то образом менять выделение или кликать по всяким кнопкам средствами всяких API по ка не получится обновить допуски, т.к. в Solidworks не предусмотрено брать значения допуска из базы данных, если значение допуска введено вручную или через API. Можно конечно воспользоваться WinAPI, по совету Shvg , но это может быть не стабильно и, на мой взгляд, некоторое извращение...

Если про то, что программа вставляла числовые значения в поля допусков, то это плёвое дело: 1 XML-ка и (опять же) пару строк кода...даже одна)))

Тогда в чём проблема? Конвертируете базу данных FIT.MDB в удобный вам формат или читаете непосредственно базу, можно даже выкинуть всё лишние и swDimensionTolerance.SetValues (MinValue_Double, MaxValue_Double)

чтобы не листать этот длинный список посадок в комбобоксе.

Как вариант почистить от всего ненужного базу данных FIT.MDB.
Ссылка на сообщение
Поделиться на других сайтах


Kelny

нет проблем))) время надо. Но такое самому нужно, а знач обязательно сделаю.

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

Нашёл на сайте <noindex>Сadsharp</noindex> макрос, с помощью которого можно добавить в свойства детали название применённого внешнего вида.

Код макроса:



Sub main()

	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	vRenderMats = swModel.Extension.GetRenderMaterials

	Set swRenderMat = vRenderMats(0)	'assume only one appearance in part

	strRenderMat = swRenderMat.FileName

	strRenderMat = Replace(strRenderMat, ".p2m", "")

	strRenderMat = _

		Right(strRenderMat, Len(strRenderMat) - InStrRev(strRenderMat, "\"))

	

	Set swCustPropMgr = swModel.Extension.CustomPropertyManager(Empty)

	swCustPropMgr.Add2 "appearance", swCustomInfoText, strRenderMat

End Sub

Но при применении данного макроса у меня возникло две проблемы:

1) Почему-то в свойствах детали наименование внешнего вида прописывается маленькими буквами (см. картинку), хотя само название файла внешности выглядит так: "RAL 1003.p2m". Пробывал менять свойства файла внешности - результата не дало. Вопрос: можно ли как-то это исправить?

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

P.S. К сожалению в API я почти 0, но начинаю чувствовать надобность в его изучении, поэтому надеюсь на вашу помощь.

:surrender:

<noindex>Изображение</noindex>

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

Почему-то в свойствах детали наименование внешнего вида прописывается маленькими буквами

...

swCustPropMgr.Add2 "appearance", swCustomInfoText, Ucase(strRenderMat)

...

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

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

Перед применением этого:

swCustPropMgr.Add2 "appearance", swCustomInfoText, strRenderMat

вам нужно удалять (swCustPropMgr.Delete(FieldName As String) As Long) предыдущее свойство или использовать другую функцию swCustPropMgr.Set(FieldName As String, FieldValue As String) As Long, но она может дать ошибку, если свойства с таким именем нет в файле.
Ссылка на сообщение
Поделиться на других сайтах

Перед применением этого:вам нужно удалять (swCustPropMgr.Delete(FieldName As String) As Long) предыдущее свойство или использовать другую функцию swCustPropMgr.Set(FieldName As String, FieldValue As String) As Long, но она может дать ошибку, если свойства с таким именем нет в файле.

Спасибо! Помогло.

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

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

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

В данном макросе я не вижу ограничений для запуска в любом типе документов. У вас возникли проблемы при запуске в деталях и сборках?
Ссылка на сообщение
Поделиться на других сайтах

Перед применением этого:вам нужно удалять (swCustPropMgr.Delete(FieldName As String) As Long) предыдущее свойство или использовать другую функцию swCustPropMgr.Set(FieldName As String, FieldValue As String) As Long, но она может дать ошибку, если свойства с таким именем нет в файле.

Несколько непонятно: разве нет механизма "отлавливания" ошибок?

"Даже в VB6.0 есть :

"

On Error Resume Next ' Defer error trapping.

...

"

И др. On "Error"

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

Несколько непонятно: разве нет механизма "отлавливания" ошибок?

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

В данном макросе я не вижу ограничений для запуска в любом типе документов. У вас возникли проблемы при запуске в деталях и сборках?

Если так же применяю внешность к сборке и запускаю макрос, то появляеться ошибка:

Run-time error '13':

Type mismatch

Ссылаясь на строку:

Set swRenderMat = vRenderMats(0)	'Assume only one appearance in part
Ссылка на сообщение
Поделиться на других сайтах

Если так же применяю внешность к сборке и запускаю макрос, то появляеться ошибка:

Run-time error '13':

Type mismatch

Думаю логично прежде чем, что-то брать (vRenderMats = swModel.Extension.GetRenderMaterials) надо сначала добавить (Function AddRenderMaterial(PRenderMaterial As RenderMaterial, PwMaterialId As Long) As Boolean или вручную добавить внешний вид в сборку и/или шаблон сборки)

Если в детали нет внешнего вида (судя по всему у вас в деталях внешний вид добавлен в шаблон детали), вы так же получите ошибку с кодом 13 так как не чего брать...

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

Думаю логично прежде чем, что-то брать (vRenderMats = swModel.Extension.GetRenderMaterials) надо сначала добавить (Function AddRenderMaterial(PRenderMaterial As RenderMaterial, PwMaterialId As Long) As Boolean или вручную добавить внешний вид в сборку и/или шаблон сборки)

Если в детали нет внешнего вида (судя по всему у вас в деталях внешний вид добавлен в шаблон детали), вы так же получите ошибку с кодом 13 так как не чего брать...

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

<noindex>Изображение</noindex>

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

tjomka

если это сборка, то нужно либо получать компонент, либо применять на уровне сборки. В обоих случаях код приведённого макроса не верен. Там по другому надо.

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

tjomka

если это сборка, то нужно либо получать компонент, либо применять на уровне сборки. В обоих случаях код приведённого макроса не верен. Там по другому надо.

ок. значит пока что будем использовать то, что есть и как есть, а когда время появиться - будем изучать API :wink:

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

Возможно ли сделать так, чтобы действие макроса не распространялось на элементы/детали взятые из библиотеки? Если да, то какой именно должен быть код? (желательно на VBA). Заранее спасибо!

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

Начал расписывать всё по созданию своих аддонов (DLL)

<noindex>http://streamdown.blogspot.ru/p/solidworks-addon-dll-2.html</noindex>

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

Начал расписывать всё по созданию своих аддонов (DLL)

<noindex>http://streamdown.blogspot.ru/p/solidworks-addon-dll-2.html</noindex>

Не забудь расписать действия при закрытии формы в адоне, а то m_form.Show() не сработает.
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      @Andrey.V построить эквидистанту к поверхности или набору поверхностей и их объединить? 
    • gudstartup
      не хватает правильного hdd ведь совместимость идет не только на логическом т.е программном но и на аппаратном уровне. у ата устройств есть команда dev id по которой при необходимости загрузчик может получить информацию об устройстве а у вас там логически диск а физически все равно cf карта rfr nbg ecnhjqcndf и если ему не фиолетово то загружаться он не будет.  более новые системы прекрасно работают с ssd а вот ваши древние всегда преподносят сюрпризы совместимости.
    • Andrey.V
      Можно, но уходит много времени и не всегда это получается. Хотелось бы выделить и нажать кнопку объединить 
    • joolis1
      Большое спасибо, помогло 
    • FUH
      Добрый день!   У меня станок Reckermann RBZ-1320-ALPHA.   ЧПУ HEIDENHAIN TNC426.   Хотел заменить HDD. Снял образ с пропуском bad-блоков HD Clone и записывал на разные варианты 1) mSata 16Gb через переходник mSata-ide 2) CF карты 4Гб и 16Гб (2шт) через переходник 2xCF-ide   Станок загрузить с копий не удалось. С hdd висит Loader 3.0 секунд 10-15 и загружается, с моих ssd висит бесконечно.   Но если всунуть пустую CF карту, то предлагает восстановить и на этом висит. Ждал больше часа.   А если отказаться от восстановления то появляется меню из 6ти пунктов, где можно выполнить форматирование, которое завершается успешно и для 4гб и для 16гб. Создаются 3 пустых раздела. Для 16гб по 2гб, а для 4гб - 2гб, 166мб и 1,67гб. Из под Windows они распознаются как RAW, а из под Linux как FAT16. Пробовал скопировать на них файлы, все равно висит на Loader 3.0   Для извлечения диска приходится каждый раз снимать разбирать блок. HDD там в металлической корзинке и подвешен на резиночках. С CF удобнее - можно снять на месте. Уже думаю вывести ide-шлейф наружу для быстрой замены.   Что ему не хватает? Уж вроде при форматировании в стойке и закидывании файлов с пока еще работающего диска все должно работать? Все файлы с оригинала копируются, получается их не затронули bad-блоки.
    • fantom.ul
    • warriorzor
      На наших стойках сохранение по-другому: RI F пуск И вывод проги соответственно RI S пуск  
    • Fedor
    • Mihanoid
      Всем большое спасибо! Помогло. Проблема действительно была в опции save_objects. Теперь итерации крепежа не сохраняются. Файл*.idx не появляется.  Странно что раньше такого не было. Хотя config я не трогал много лет. И там опция save_objects всегда была changed_and_updated
    • maxx2000
      @Andrey.V а по сечениям или сети кривых нельзя построить поверхность?
×
×
  • Создать...