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

SW & VBA - пути к шаблонам


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



как программно определить пути к файлам шаблонов детали и сборки.

Справка гласит следующее (язык C#):

string Template = null;

			Template = swApp.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplatePart);
string Template = null;

			Template = swApp.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplateAssembly);

Или VBA:

Const swDefaultTemplatePart = 8

Const swDefaultTemplateAssembly = 9



Dim Template As String

	Template = swApp.GetUserPreferenceStringValue(swDefaultTemplatePart)
Ссылка на сообщение
Поделиться на других сайтах

Спасибо большое!

Вроде смотрел справку, но нужное не заметил((

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

Еще похожий вопрос. Чтобы получить папку рабочего стола я использовал конструкцию:

Dim WSHShell

Set WSHShell = CreateObject("WScript.Shell")

DirDesktop = WSHShell.SpecialFolders.Item("Desktop")

В этом случае коллекция WSHShell.SpecialFolders имеет 18 элементов.

Что имеем в VBA для SW:

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

fs.GetSpecialFolder(folderspec)

Для folderspec можно указать только три значения: WindowsFolder, SystemFolder, TemporaryFolder.

Я опять что-то недосмотрел в хэлпе или всё-таки для получения папки раб. стола без создания CreateObject("WScript.Shell") не обойтись ?

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

Я опять что-то недосмотрел в хэлпе или всё-таки для получения папки раб. стола без создания CreateObject("WScript.Shell") не обойтись ?

То есть подключение c:\windows\System32\scrrun.dll ( CreateObject("Scripting.FileSystemObject") )

вас смущает меньше чем c:\windows\System32\wshom.ocx ( CreateObject("WScript.Shell") и c:\windows\System32\shell32.dll (WSHShell.SpecialFolders.Item(ShellSpecialFolderConstants.ssfDESKTOP)))?

без создания CreateObject("WScript.Shell") не обойтись ?

Как создали так и отключите, кажется так:
Set WSHShell = Nothing

Можно конечно получить список путей из реестра в файл, например, c:\regSetting.txt:

Shell "reg export ""HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"" ""c:\regSetting.txt"" /y"
, а потом ковырять построчно полученный файл с помощью Scripting.FileSystemObject и выбирать искомый путь и разбирать соответствующую строку, например: "Desktop"="C:\\Document And Settings\\UserName\\Desktop"
Ссылка на сообщение
Поделиться на других сайтах

Kelny, я вас не очень понял.

Пример с WScript.Shell вполне работоспособен, мне не нужно его отключать.

Меня смутил только сильно урезанный доступ к системным папкам, описанный в справке.

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

Меня смутил только сильно урезанный доступ к системным папкам, описанный в справке.

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

Понятно.

Еще вопрос: в API Help масса объектов в 2-х экземплярах - типа IModelDoc и IModelDoc2, ModelDoc и ModelDoc2 и т.п.

Чем они отличаются ?

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

Еще вопрос: в API Help масса объектов в 2-х экземплярах - типа IModelDoc

Чем они отличаются ?

Там же в справке про IModelDoc написано: Obsolete. Superseded by IModelDoc2.

Что по русски: Устаревший. Заменен на IModelDoc2.

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

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

Я поначалу тоже так понял, но потом увидел, что у метода SaveAs вообще 4 версии и в справке к SaveAs4 видим:

Obsolete. Superseded by IModelDocExtension::SaveAs

Это как понимать: использовать всё-таки SaveAs ? Без номеров ?

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

Я поначалу тоже так понял, но потом увидел, что у метода SaveAs вообще 4 версии и в справке к SaveAs4 видим:

Obsolete. Superseded by IModelDocExtension::SaveAs

Это как понимать: использовать всё-таки SaveAs ? Без номеров ?

IModelDocExtension::SaveAs < тут IModelDocExtension

IModelDoc2::SaveAs2(3,4) < а тут IModelDoc2 < это устаревшее !

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

Я на это обратил внимание, но опять наткнулся на непонятку: внизу приведён простенький макрос, сгенерированный SW. В предпоследней строке видим конструкцию Part.SaveAs3.

Почему же сам SW генерирует устаревший формат, а не последний, что было бы логичнее ?

Версия SW2010 SP5.0.

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

Dim myModelView As Object

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim skSegment As Object

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0.018223, 0.005571, 0#)

Part.ClearSelection2 True

Part.SketchManager.InsertSketch True

Part.ShowNamedView2 "*Изометрия", 7

longstatus = Part.SaveAs3("C:\Users\Сергей\Desktop\Деталь1.SLDPRT", 0, 2)

End Sub

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

Я на это обратил внимание, но опять наткнулся на непонятку: внизу приведён простенький макрос, сгенерированный SW. В предпоследней строке видим конструкцию Part.SaveAs3.

Почему же сам SW генерирует устаревший формат, а не последний, что было бы логичнее ?

Версия SW2010 SP5.0.

...

Процесс генерации(записи) макросов в SW, вообще вещь не до конца ясная(лично для меня). SW может что-то и не записать в макрос...

В данном случае, я бы сказал, VBA действует по принципу "не навреди" :rolleyes: : при записи в макрос - использует наиболее старые методы. ИМХО.

Посмотрите на всякий случай. что SW пишет в свой файл журнала:

"C:\Documents and Settings\Администратор\Application Data\SolidWorks\SolidWorks 2010\swxJRNL.swj" (это у меня он тут лежит, у Вас м.б. в др. месте).

И сравните: одинаковые ли методы SW записывает в этот файл и в макрос.

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

ssv22,

Спасибо за наводку, я этого не знал.

Буду иметь в виду.

...

Посмотрел в журнале, там тоже, что и в сгенерированном макросе:

longstatus = Part.SaveAs3("C:\Users\Сергей\Desktop\Деталь1.SLDPRT", 0, 2)

Пожалуй, на этом пока и остановлюсь, а там видно будет...

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

2 'swkx'

Так уж, видимо, сам VBA устроен ...

Попробуйте записать макрос в форматах VB.NET и C# - для них VBA "не указ", для них "VSTA" - "начальник". Может он (VSTA), все-таки поновее, и может обучен различать какой SP установлен.

Хотя я лично сомневаюсь...

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

2 'swkx'

Так уж, видимо, сам VBA устроен ...

Попробуйте записать макрос в форматах VB.NET и C# - для них VBA "не указ", для них "VSTA" - "начальник". Может он (VSTA), все-таки поновее, и может обучен различать какой SP установлен.

Хотя я лично сомневаюсь...

VSTA - вообще больной вопрос. Я в принципе не могу создать на нём макрос:

<noindex>http://fsapr2000.ru/index.php?showtopic=42559</noindex>

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

VSTA - вообще больной вопрос. Я в принципе не могу создать на нём макрос:

<noindex>http://fsapr2000.ru/index.php?showtopic=42559</noindex>

Я сейчас записал 2 макроса на VB.NET и C# - тоже, что и в VBA - используется метод ".SaveAs3".

PS. У меня макросы и записываются и исполняются, вроде без проблем... В результе получаю dll-ку.

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

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

В связи с этим сразу три вопроса:

1. В чем принципиальное отличие .swp и .vbproj макросов ?

2. Для запуска .dll-ки на другом компьютере нужно наличие в папке с макросом и всех библиотек SolidWorks.Interop.SldWorks.dll, SolidWorks.Interop.swconst.dll и т.д. ?

3. Можно ли скомпилировать .dll так, чтобы всё было в одном файле ?

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

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

В связи с этим сразу три вопроса:

1. В чем принципиальное отличие .swp и .vbproj макросов ?

2. Для запуска .dll-ки на другом компьютере нужно наличие в папке с макросом и всех библиотек SolidWorks.Interop.SldWorks.dll, SolidWorks.Interop.swconst.dll и т.д. ?

3. Можно ли скомпилировать .dll так, чтобы всё было в одном файле ?

хе-хе, да, Чудеса ... :biggrin:

1)

.swp - макрос на VBA

.vbproj - а это - .NET

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

3) вот этого я не знаю пока. М.б. потребуется создание дистрибутива...

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

.swp - макрос на VBA

.vbproj - а это - .NET

Это понятно. Хотелось бы знать, чем они отличаются: производительностью, возможностями и т.п. ?

В каких случаях лучше использовать .swp, а в каких .vbproj ?

Я нигде не встречал таких общих рекомендаций..

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Александр 36
      Как это узнать есть он там?SRAM0_5A.FDB
    • Viktor2004
      Только если в архиве бэкапа есть файл PMC1.000 А файл SRAM_BAK.001 тут не поможет
    • ivanK
      Единственный момент я чет не соображу нужно ли забивать корректор на длину инструмента в таблицу для этой проверки (длину от торца шпинделя до кончика индикатора)  Потому что команда G43.4 подаётся вместе с корректором H.  Допустим в шпинделе инструмент номер 3 тогда команда включения tcpm: G43.4 H3.    Попробуйте аккуратно сначала с нулевым корректором. 
    • Viktor2004
      Спасибо попробую
    • Александр 36
      Подскажите если во время корректировки ладдера что то пойдет не так можно будет бэкапом все восстановить?
    • ivanK
      На видео которое я скидывал с обработкой (в программе CimcoEdit) где фреза делает "кульбыт" с правой стороны я думал что зарез происходит в этот самый момент, но меня смущало что такой же зарез получается с другой короткой стороны. Сейчас я сделал виртуальную модель станка с осями B и C чтобы посмотреть какая поверхность получается перифирией фрезы проходя по коротким сторонам детали. Но таких зарезов на модели в симуляции я не вижу. Завтра скину видео что получилось на виртуальной модели.  Прошу прощения что ввел вас в заблуждение.  Если дело в смене направления движения по оси B то проверить это можно так: -Ставим в шпиндель индикатор -подводим к калибровочной сфере -касаемся сферы -включаем tcpm (G43.4)  -делаем движение G01 B-20 F100 - а потом G01 B20 F100.  И смотрим что происходит в момент когда направление движения меняется   На протяжении всего движения значение на индикаторе должно оставаться таким же как в момент начального касания сферы
    • Viktor2004
      Нет я так не умею
    • ivanK
      Y2mate.mx-Кинематика станка Iron Mac IMU 5X 430 #Shorts.mp4
    • Viktor2004
      Видео посмотреть не могу. Ю́туб заблокирован. Что там? Это долго будет и не факт что дадут. Служба безопасности А как у вас в видео получилась такая же кривая деталь как у меня? Что-то не так сдвинули? Может у меня то же самое сдвинуто
    • ivanK
      Может конечно глупо прозвучит а теста типо такого не проводили   Нет возможности запросить у клиента 3D модель обрабатываемой детали? Или чертеж я бы хоть наложил модель из симуляции на обрабатываемую (ну или чертеж детали)  Мое последнее предположение что с осью B что то может быть не так, по длинным сторонам детали она движется в одном направлении а на коротких сторонах с изменением направления 
×
×
  • Создать...