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

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 пользователей

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




×
×
  • Создать...