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

api программирование под VB в SolidWorks


_Evgeniy_

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

Здравствуйте!

Была поставлена задача написать программу на Visual Basic c использованием апи для sw 2006.

Возникли следующие проблемы в освоений:

в макросе записывается код:

a) set swApp = Application.SldWorks

b) Set Part = swApp.ActiveDoc

c) Set SelMgr= Part.SelectionManadger

d) SwApp.ActiveDoc.ActiveView.FrameState=1

компилятор VB ругается на а) ,...

записал через функцию swApp=CreateObject("SldWorcs.Application")

swApp.visible= true - солид начал открываться. но дальше дело не пошло...(((

никак не могу добиться создания PartDoc. Просмотрел sdk, так и не нашел подходящей функции, типа swApp.docum.add...

Буду очень благодарен, если подскажите, как программно выбрать 'деталь'. Ф еще лучше, хотелось бы получить пример построения, какой- нибудь простенькой 3d- детальки.

С уважением, Евгений.

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


Примерно так:

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swSketchMgr As SldWorks.SketchManager

Dim swSketch As SldWorks.Sketch

Dim swFeature As SldWorks.Feature



Dim bres As Boolean

' Пример построения детали с нуля

Sub CreateCilinder()

	On Error GoTo LineError

	Set swApp = GetObject("", "SldWorks.Application") ' Так делал я обычно, когда SW запущен

	'//////////////////

	' А так запускаем SW, но работает и когда запущен

	'Set swApp = CreateObject("SldWorks.Application")

	'swApp.Visible = True

	'///////////////////////////

	'В аргументах функции NewDocument нужно указать путь к шаблону

	Set swModel = swApp.NewDocument("c:\Program Files\SolidWorks\SolidWorks\data\templates\Part.prtdot", 0, 0, 0)

	Set swSketchMgr = swModel.SketchManager

	Set swSketch = swSketchMgr.ActiveSketch

	If swSketch Is Nothing Then

		bres = swModel.Extension.SelectByID2("Plane1", "PLANE", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault)

		If bres = False Then

			Exit Sub

		End If

		swModel.InsertSketch2 False

		Set swSketch = swSketchMgr.ActiveSketch

		swModel.ClearSelection2 True

	End If

	

	swSketchMgr.CreateCircleByRadius 0, 0, 0, 0.03

	Set swFeature = swModel.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.035, 0#, False, False, False, False, _

												0#, 0#, False, False, False, False, 1, 1, 1, 0, 0, False)

	Exit Sub

LineError:

	MsgBox "Error!"

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

Спасибо!

При создании документа в sw приходиться пользоваться шаблоном... это не есть хорошо... так как мы ,будем привязаны к конкретному пути, по которому храниться данный шаблон, следовательно, разрабатываемая программа не будет универсальной...

А если SW будет установлен не на диске С? каждый раз менять путь под данного клиента?

Возможно ли как-то обойтись без шаблона?

Сравнивая с Solid Edge, существует возможность добавить документ в коллекцию документоб БЕЗ использования шаблона:

Dim objApp As SolidEdgeFramework.Application

Dim objDoc As SolidEdgePart.PartDocument

Dim objSketch As SolidEdgePart.Sketch 'эскиз

Dim objRefPln As SolidEdgePart.RefPlane 'плоскость

'______________________________________________________________________

' Report errors проверка на открытие документа

' Create/get the application with specific settings

On Error Resume Next

objApp = GetObject(, "SolidEdge.Application")

If Err.Number > 0 Then

Err.Clear()

objApp = CreateObject("SolidEdge.Application")

objDoc = objApp.Documents.Add("SolidEdge.PartDocument") ' добавляем документ!!!!!!!

objApp.Visible = True

Else

objDoc = objApp.Documents.Add("SolidEdge.PartDocument")

objApp.Visible = True

objDoc = objApp.ActiveDocument

End If

'______________________________________________________________________

objSketch = objDoc.Sketches.Add ' добавляем эскиз1

Существует ли подобная реализация в SW?

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

Возможно ли как-то обойтись без шаблона?

Без шаблонов, в принципе, невозможно. Ведь должны же откуда-то братся настройки документов. Единственное, что могу посоветовать, так это использовать настройки по умолчанию, которые использует SolidWorks. В API SW такие шаблоны вызываютя с помощью функций (применительно к моему предыдущему примеру)

для деталей:

Set swModel = swApp.NewPart

для чертежей:

Set swModel = swApp.NewDrawing

для сборок:

Set swModel = swApp.NewAssembly

или теже функции с индексом 2.

P.S. Но шаблоны по умолчанию, ИМХО, вам вряд ли понравятся...

P.P.S. И в догонку. А что мешает, перед вызовом функции NewDocument вызвать диалоговое окно выбора шаблона?

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

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

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

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

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

  Разрешено не более 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 а по сечениям или сети кривых нельзя построить поверхность?
×
×
  • Создать...