Разработка VBA приложений в SolidWorks

Описаны основные возможности и понятия, связанные с разработкой макросов в среде графического пакета SolidWorks. Рассмотрены подходы разработки макросов, реализующих автоматизированное проектирование пространственных моделей объектов и получения чертежей.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 16.11.2019
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Part.CreateLine2(B / 2, -H + 20, 0, B / 2, -H - 13, 0).ConstructionGeometry = True
'Вращение контура
boolstatus = Part.Extension.SelectByID2("Эскиз9", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.FeatureManager.FeatureRevolveCut 6.28318530718, False, 0, 0, 0, 1, 1
''Part.SelectionManager.EnableContourSelection = 0
Part.ClearSelection2 True
'Part.SketchRectangle 0, 0, 0, 30, 40, 0, 1
End Sub
Окончательный вид заготовки штампа будет выглядеть следующим
образом(Рис.9)..
Рис.9. Окончательный вид заготовки штампа
Рассмотрим второй пример конструирования элементов штампа для высадки.
Конструирование элементов штампа для высадки в Solid Works
Рассмотрим возможности макро средств программы Solid Works по конструированию трехмерных объектов на примере конструирования элементов штампов для высадки болтов.
Напомним, что конструирование трехмерных объектов начинается с создания эскизов. Затем выполняются операции выдавливания, вырезания, движения по траектории, поворота, построения объектов по сечениям и т. д. Рассмотрим основные команды, применяемые при разработке этих VBA приложений для создания эскизов.
Вначале необходимо выбрать плоскость, на которой будет строиться эскиз. Для этих целей используется функция Part.Extension.SelectByID2, позволяющая выбирать не только плоскость, но и элементы трехмерной детали: кромка, грань, поверхность.
Синтаксис:
boolstatus = Part.Extension.SelectByID2(Name,Type,X,Y,Z,Append,Mark,Callout,
SelectOption)
где
boolstatus - переменная типа Boolean;
Name - имя выделяемого объекта, например “Спереди” - плоскость; этот атрибут является необязательным и может заменяться пустыми кавычками если неизвестно название элемента;
Type - указывает тип выделяемого элемента:
EDGE - грань;
FACE - кромка;
PLANE - плоскость;
AXIS - ось;
DATUMPOINT - точка;
SKETCHSEGMENT -элемент эскиза, например, дуга окружности;
X,Y,Z - координаты одной из точек выделяемого элемента;
Append - имеет одно из двух значений: True -используется, когда элемент выделен для снятия выделения, False - наоборот для выделения невыделенного элемента.При значении False снимаютя все выделения, назначенные ранее и выделяется элемент.
Mark - используется другими функциями, рекомендуется ставить 0;
Callout - заполняется значением Nothing;
SelectOption - заполняется значением 0;
Пример выделения плоскости эскиза
boolstatus = Part.Extension.SelectByID2(“Спереди”,”PLANE”,0,0,0,False,0,Nothing,0)
Построение вспомогательной плоскости на расстоянии от выделенной выполняется функцией CreatePlaneAtOffset3.
Синтаксис:
boolstatus = Part.ModelDoc2.CreatePlaneAtOffset3 (val, flipDir,autoSize),
где
val - расстояние от выделенной плоскости в метрах;
flipDir - изменение направления, значение 1 или 0
autoSize - автомастаб плоскости.
После выбора плоскости на ней создается эскиз функцией Part.InsertSketch2.True.
При построении эскиза чаще всего используются инструменты формирования линий, окружностей и дуг окружностей.
Линия строится командой CreateLine2
Синтаксис:
boolstatus = Part. CreateLine2(xStart, yStart, zStart, xEnd, yEnd, zEnd),
где
xStart, yStart, zStart - координаты начала отрезка;
xEnd, yEnd, zEnd - координаты конца отрезка.
Окружность можно построить несколькими способами:
1) задав центр и радиус CreateCircleByRadius2
2) задав центр и на окружности CreateCircle2
boolstatus = Part.CreateCircleByRadius2(xc,yc,zc,radius)
где
xc,yc,zc - координаты центра окружности;
radius - радиус.
boolstatus = Part.CreateCircle2(xc,yc,zc, xp,yp,zp)
где
xc,yc,zc - координаты центра окружности;
xp,yp,zp- координаты края окружности.
Касательная дуга окружности к линии CreateTangentArc2
Синтаксис
boolstatus = Part.CreateTangentArc2(p1x,p1y,p1z,p2x,p2y,p2z,arcTypeIn)
где
p1x,p1y,p1z-начало дуги;
p2x,p2y,p2z- конец дуги;
arcTypeIn - место положение дуги, может принимать следующие значения:
swForward
swLeft
swBack
swRight
После создания того или иного элемента необходимо снять все выделения с помощью команды: Part.CleareSelection2 True
Пример1. Создадим макрос, отрисовывающий эскиз, который будет основой для трехмерного элемента по траектории.
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, Longwarnings As Long
Dim Feature As Object
Sub main()
Set swApp = Application.SldWorks
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateLine2 0, 0, 0, 0, -0.22, 0
Part.ClearSelection2 True
Part.CreateTangentArc2 0, -0.22, 0, -0.025, -0.22, 0, 1
Part.ClearSelection2 True
Part.CreateLine2 -0.025, -0.22, 0, -0.025, -0.16, 0
Part.ClearSelection2 True
Part.CreateTangentArc2 -0.025, -0.16, 0, -0.0125, -0.147560912591, 0, 1
Part.ClearSelection2 True
Part.InsertSketch2 True
'boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Сверху ", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.InsertSketch2 True
Part.ClearSelection2 True
Part.CreateCircle 0, 0, 0, 0, 0.015 / 2, 0
Part.ClearSelection2 True
End Sub
После выполнения макроса получится следующий эскиз (Рис.10).
Рис.10. Построение эскизов
Вспомогательная геометрия
К вспомогательгой геометрия относят точку,плоскость,ось. Вспомогательная геометрия используется при создании эскизов, вырезов, круговых массивов, сопряжения в сборке и т. д.
Вспомогательная плоскость строится на расстоянии от выделенной плоскости с использованием команды CreatePlaneAtOffset3(val,flipDir,autoSize)
где
val - расстояние от выделенной плоскости в метрах;
flipDir - изменение направления, значение 1 или 0;
autoSize - автомасстаб плоскости.
Пример2:
boolstatus = Part.Extension.SelectByID2("Спереди ", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Part.CreatePlaneAtOffset3 0.05, False, True
Вспомогательная ось строится на пересечении двух плоскостей, при этом используется команда Part.InsertAxis2 True
Пример3:
boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
'boolstatus = Part.InsertAxis2(True)
Part.InsertAxis2 True
Работа с 3D объектами
Существуют разные способы преобразования эскиза в 3D модель. К одному из них относится вытягивание по траектории. Для этого необходимо создать эскиз пофиля и
эскиз траектории.
Эта операция выполняется командой InsertProtrusionSweept3, перед ее использованием следует выделить эскиз профиля и траектории.
Добавим в текст макроса примера1 введенный эскиз.
Пример4:
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, Longwarnings As Long
Dim Feature As Object
Sub main()
Set swApp = Application.SldWorks
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateLine2 0, 0, 0, 0, -0.22, 0
Part.ClearSelection2 True
Part.CreateTangentArc2 0, -0.22, 0, -0.025, -0.22, 0, 1
Part.ClearSelection2 True
Part.CreateLine2 -0.025, -0.22, 0, -0.025, -0.16, 0
Part.ClearSelection2 True
Part.CreateTangentArc2 -0.025, -0.16, 0, -0.0125, -0.147560912591, 0, 1
Part.ClearSelection2 True
Part.InsertSketch2 True
`Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Сверху ", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.InsertSketch2 True
Part.ClearSelection2 True
Part.CreateCircle 0, 0, 0, 0, 0.015 / 2, 0
Part.ClearSelection2 True
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Эскиз2", "SKETCH", 0.007438434637666, 9.590047659801E-04, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Эскиз 1", "SKETCH", 0, -0.1170332174933, 0, True, 4, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.InsertProtrusionSwept3(False, False, 0, False, False, 0, 0, False, 0, 0, 0, 0, True, True, True, 0, True)
End Sub
В результате выполнения данного макроса получим модель детали Ручка (Рис.11).
Операция “вытянутая бобышка”
Эта операция реализуется командой FeatureExtrusion2. Для выполнения этой
команды необходимо выделить эскиз.
Синтаксис:
FeatureExtrusion2(sd,flip,dir,,t1,t2,d1,d2,dchk1,dchk2,ddir1,ddir2,dang1,dang2,
offsetReverse1, offsetReverse2,translateSurvace1, translateSurvace2,merge,useFeatScope,
useAutoSelect,t0,startOffset,,flipStartOffset)
sd - TRUE, если вытягивание в одном направлении, FALSE - в двух;
flip - TRUE для смены направления выреза;
dir - TRUE для смены направления вытягивания;
Рис.11 Модель детали Ручка
d1 - глубина вытягивания в первом направлении;
d2 - глубина вытягивания во втором направлении;
dchk1 - TRUE для изменения углов наклона в первом направлении, FALSE - не изменять;
dchk1- TRUE для изменения углов наклона во втором направлении, FALSE - не
изменять;
ddir1 - TRUE - уклон первого угла внутрь, FALSE - наружу;
ddir2 - TRUE - уклон второго угла внутрь, FALSE - наружу;
dang1 - значение угла в первом направлении;
offsetReverse1 - TRUE -реверс направления вытягивания в первом направлении,
FALSE - не изменять направления вытягивания;
offsetReverse2 - TRUE -реверс направления вытягивания во втором направлении,
FALSE - не изменять направления вытягивания;
translateSurvace1- TRUE - для отсчета глубины вытяжки от противоположной плоск-
кости в первом направлении, FALSE - от текущей плоскости;
translateSurvace2- TRUE - для отсчета глубины вытяжки от противоположной плоск-
кости во втором направлении, FALSE - от текущей плоскости;
merge - TRUE -если нужно объединить с телом, FALSE - не нужно;
useFeatScope - TRUE - если вытягиваемый объект влияет на другие объекты, FALSE -
не влияет;
useAutoSelect - TRUE -для автоматического выделения объектов, FALSE - вручную;
t0- начальное условие swStartConditions_e;
startOffset - если задано значение t0, то устанавливается значение отчтупа;
flipStartOffset - если задано значение t0, TRUE - изменить направление на противоположное, FALSE - не изменять.
Операция “вытянутый вырез”
Эта операция используется для получения выреза на основе эскиза с исполь-
зованием команды FeatureCut, что позволяет получить любую форму выреза.
Синтаксис:
FeatureCut ( sd, flip, dir, t1, t2, d1, d2, dchk1, dchk2, ddir1, ddir2, dang1, dang2, offsetReverse1, offsetReverse2, translateSurface1, translateSurface2, normalCut, useFeatScope, useAutoSelect )
Где
normalCut - TRUE обеспечивает создание выреза нормально к поверхности объекта,
FALSE нет.
Остальные переменные этой команды аналогичны операции вытянутая бобышка.
Операция “круговой массив”
Эта операция выполняется с применением команды FeatureCircularPattern2.
Для выполнения операции требуется выделить ось, вокруг которой будут копироваться элементы, и сам элемент, которых может быть несколько.
Синтаксис:
FeatureCircularPattern2 ( num, spacing, flipDir, dName, geometryPattern)
где
num - количество копий, включая оригинал;
spacing - центральный угол между двумя копиями в радианах;
flipDir - TRUE если нужно сменить направление создания копий, иначе - FALSE;
dName - имя углового размера, определяющего направление массива ( рекомен-
дуется NULL);
geometryPattern - TRUE при использовании геометрического массива, FALSE - нет.
Рассмотрим на примере использования этих функций и покажем вариант задания параметризации детали.
Пример5:
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, Longwarnings As Long
Dim Feature As Object
Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double
Const Pi = 3.141592654
Sub main()
D = 260
H = 55
d1 = 200
D2 = 50
D3 = 150
Dm = 13
dm1 = 19
Hm = 25
H1 = 15
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0.003457473309609, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateCircle 0, 0, 0, D / (2 * 1000), 0, 0
Part.ClearSelection2 True
'Dim myFeature As Object
'Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, True, 0, 0, H, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False)
'Part.SelectionManager.EnableContourSelection = False
Part.FeatureManager.FeatureExtrusion2 True, False, True, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False
'Выполнение отверстия
Part.InsertSketch2 True
Part.ClearSelection2 True
Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, Dm / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Ось через пересечение плоскостей
boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Part.InsertAxis2 True
'Создание кругового массива
boolstatus = Part.Extension.SelectByID2("Вытянуть2", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, D2 / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, (Hm + 0.005) / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, 0.025 / 2
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, d1 / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.005, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("", "FACE", 0, 0, -H, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, dm1 / (2 * 1000)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H1 / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Создание кругового массива
boolstatus = Part.Extension.SelectByID2("Вытянуть6", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)
End Sub
В результате работы макроса получим(Рис.12):
Рис.12. Модель детали Кольцо
Дополнительные функции для преобразования 3D объектов
Плоскости можно использовать для рассечения деталей. Эта задача решается командой InsertCutSurface. Для выполнения этой команды следует выделить плоскость, затем выполнить эту функцию. После этого произойдет погашение всех элементов, лежащих по одну сторону от плоскости.
Синтаксис:
Part.InsertCutSurface ( flip, keepPieceIndex )
где
flip - переключение направления погашения элементов;
keepPieceIndex - True - если сохранять деталь, если есть двусмысленность, иначе-
False
Например, добавим к концу предыдущего макроса:
'Выполнение разреза детали пополам
'boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.InsertCutSurface False, 0
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, Longwarnings As Long
Dim Feature As Object
Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double
Const Pi = 3.141592654
Sub main()
D = 260
H = 55
d1 = 200
D2 = 50
D3 = 150
Dm = 13
dm1 = 19
Hm = 25
H1 = 15
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0.003457473309609, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateCircle 0, 0, 0, D / (2 * 1000), 0, 0
Part.ClearSelection2 True
'Dim myFeature As Object
'Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, True, 0, 0, H, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False)
'Part.SelectionManager.EnableContourSelection = False
Part.FeatureManager.FeatureExtrusion2 True, False, True, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False
'Выполнение отверстия
Part.InsertSketch2 True
Part.ClearSelection2 True
Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, Dm / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Ось через пересечение плоскостей
boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Part.InsertAxis2 True
'Создание кругового массива
boolstatus = Part.Extension.SelectByID2("Вытянуть2", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, D2 / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, (Hm + 0.005) / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, 0.025 / 2
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.ClearSelection2 True
Part.CreateCircleByRadius2 0, 0, 0, d1 / (2 * 1000)
Part.ClearSelection2 True
Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.005, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Выполнение отверстия
Part.InsertSketch2 True
boolstatus = Part.Extension.SelectByID2("", "FACE", 0, 0, -H, False, 0, Nothing, 0)
Part.ClearSelection2 True
Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, dm1 / (2 * 1000)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.FeatureManager.FeatureCut True, False, False, 0, 0, H1 / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1
'Создание кругового массива
boolstatus = Part.Extension.SelectByID2("Вытянуть6", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)
'Выполнение разреза детали пополам
boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.InsertCutSurface False, 0
End Sub
В результате работы макроса получим (Рис.13):
Рис.13. Разрез детали Кольцо
Функции работы с файлами
Рассмотрим набор команд, необходимый для программного создания новых документов определенного типа и дальнейшего их сохранения.
Для создания документа используется команда NewDocument
Синтаксис:
NewDocument( templateName, paperSize, width, height )
где
templateName - параметр, указывающий путь к файлу, часто это
"E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Деталь.prtdot”, если создается деталь и: Сборка.asmdot, если создается сборка и - Чертеж.drwdot - для чертежа.
paperSize - параметр, указывающий на формат создаваемого листа при создании
чертежей. Существуют следующие варианты:

swDwgPaperA3size

swDwgPaperA2size

swDwgPaperA1size

swDwgPaperA0size

width, height - параметры,задающие высоту и ширину листа в метрах.

При работе с несколькими открытыми документами для переключения между ними указывается команда swap.ActivateDoc2. Эта команда используется для задания имени документа, используемое внутри SolidWorks.

Синтаксис:

Set Part = SldWorks. ActivateDoc2 ( name, silent, &errors),

где

name - имя документа для активизации или назначенное имя, если документ был только что создан;

silent - TRUE, если диалогов и предупреждения сообщений следует избежать,

FALSE - если они должны быть показаны;

&errors - переменная булевого типа, в случае ошибки возвращает значение 1.

Сохранение документа выполняется командой SaveAs2

Синтаксис:

SaveAs2 ( newName, saveAsVersion, saveAsCopy, silent ),

где

newName - полное имя файла с расширением, которое может быть

для детали - .SLDPRT;

для сборки - .SLDASM;

для чертежа - .SLDDRW.

saveAsVersion - сохранение под определенную версию программы;

swSaveAsCurrentVersion - стандартный тип;

saveAsCopy - сохранение документа под новым именем без замены текущего имени;

silent - TRUE, если вы хотите избежать сообщений об ошибках, FALSE - в противном случае.

Приведем пример макроса, в котором создается деталь под именем Деталь и сохраняется под именем vrem1. SLDPRT.

Пример 6.

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, Longwarnings As Long

Dim Feature As Object

Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double

Const Pi = 3.141592654

Sub main()

D = 260

H = 55

d1 = 200

D2 = 50

D3 = 150

Dm = 13

dm1 = 19

Hm = 25

H1 = 15

Set swApp = Application.SldWorks

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Деталь.prtdot", 0, 0, 0)

swApp.ActivateDoc2 "Деталь3", False, longstatus

'Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

Part.InsertSketch2 True

boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0.003457473309609, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.CreateCircle 0, 0, 0, D / (2 * 1000), 0, 0

Part.ClearSelection2 True

'Dim myFeature As Object

'Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, True, 0, 0, H, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False)

'Part.SelectionManager.EnableContourSelection = False

Part.FeatureManager.FeatureExtrusion2 True, False, True, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False

'Выполнение отверстия

Part.InsertSketch2 True

Part.ClearSelection2 True

Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, Dm / (2 * 1000)

Part.ClearSelection2 True

Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1

'Ось через пересечение плоскостей

boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

Part.InsertAxis2 True

'Создание кругового массива

boolstatus = Part.Extension.SelectByID2("Вытянуть2", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)

Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)

'Создание отверстия

Part.ClearSelection2 True

Part.CreateCircleByRadius2 0, 0, 0, D2 / (2 * 1000)

Part.ClearSelection2 True

Part.FeatureManager.FeatureCut True, False, False, 0, 0, (Hm + 0.005) / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1

'Создание отверстия

Part.ClearSelection2 True

Part.CreateCircleByRadius2 0, 0, 0, 0.025 / 2

Part.ClearSelection2 True

Part.FeatureManager.FeatureCut True, False, False, 0, 0, H / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1

'Создание отверстия

Part.ClearSelection2 True

Part.CreateCircleByRadius2 0, 0, 0, d1 / (2 * 1000)

Part.ClearSelection2 True

Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.005, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1

'Создание отверстия

Part.InsertSketch2 True

boolstatus = Part.Extension.SelectByID2("", "FACE", 0, 0, -H, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.CreateCircleByRadius2 D3 / (2 * 1000), 0, 0, dm1 / (2 * 1000)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureCut True, False, False, 0, 0, H1 / 1000, 0, False, False, False, False, 0, 0, False, False, False, False, 0, 1, 1

'Создание кругового массива

boolstatus = Part.Extension.SelectByID2("Вытянуть6", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)

Set Feature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)

'Выполнение разреза детали пополам

'boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

'boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

'Part.InsertCutSurface False, 0

'longstatus = Part.SaveAs3("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", 0, 2)

Part.SaveAs3 "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", 0, 2

End Sub

Функции для работы с чертежами

Для создания чертежа используются те же функции, что и для создания документа детали. Для вставки детали в чертеж необходимо чтобы деталь была открыта в SolidWorks, а также знать внутреннее имя детали в SolidWorks.

Для изменения свойства документа чертеж используется следующий набор функций.

vSheetProps = swSheetProperties

vSheetProps (3) = 1

swSheetProperties vSheetProps (0) vSheetProps (1) vSheetProps (2) vSheetProps (3)

vSheetProps (4) vSheetProps (4) vSheetProps (6)

GetProperties - считывает свойства чертежного документа в переменную vSheetProps

Например:

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swDraw As SldWorks.DrawingDoc

Dim swSheet As SldWorks.Sheet

Dim vSheetProps As Variant

Dim bRet As Boolean

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swDraw = swModel

Set swSheet = swDraw.GetCurrentSheet

Debug.Print "File = " & swModel.GetPathName

Debug.Print " Sheet = " & swSheet.GetName

Debug.Print " Template = " & swSheet.GetTemplateName

'Retrieve current sheet settings

vSheetProps = swSheet.GetProperties

Debug.Print " PaperSize = " & vSheetProps(0)

Debug.Print " TemplateIn = " & vSheetProps(1)

Debug.Print " Scale1 = " & vSheetProps(2)

Debug.Print " scale2 = " & vSheetProps(3)

Debug.Print " FirstAngle = " & vSheetProps(4)

Debug.Print " Width = " & vSheetProps(5)

Debug.Print " Height = " & vSheetProps(6)

vSheetProps(k) - изменяет значение свойства, k - номер свойства (может изменяться от1 до 6);

SetProperties - применяет установленные свойства;

Например:

Dim swApp As SldWorks.SldWorks

Dim swDraw As SldWorks.DrawingDoc

Dim swSheet As SldWorks.Sheet

Dim vSheetProps As Variant

Dim bFirstAng As Boolean

Dim bRet As Boolean

Set swApp = Application.SldWorks

Set swDraw = swApp.ActiveDoc

Set swSheet = swDraw.GetCurrentSheet

' Get current sheet properties

vSheetProps = swSheet.GetProperties

' Current sheet properties

Debug.Print "Name = " + swSheet.GetName

Debug.Print " TemplateName = " & swSheet.GetTemplateName

Debug.Print " PaperSize = " & vSheetProps(0)

Debug.Print " TemplateIn = " & vSheetProps(1)

Debug.Print " Scale1 = " & vSheetProps(2)

Debug.Print " scale2 = " & vSheetProps(3)

Debug.Print " FirstAngle = " & vSheetProps(4)

Debug.Print " Width = " & vSheetProps(5)

Debug.Print " Height = " & vSheetProps(6)

' Switch projection property

bFirstAng = vSheetProps(4)

vSheetProps(4) = Not bFirstAng

' Apply updated sheet properties

swSheet.SetProperties _

vSheetProps(0), _

vSheetProps(1), _

vSheetProps(2), _

vSheetProps(3), _

vSheetProps(4), _

vSheetProps(5), _

vSheetProps(6)

' Current projection property

Debug.Print " "

Debug.Print " New FirstAngle setting = " & vSheetProps(4)

vSheetProps(0) - определяет размер листа и может принимать следующие значения:

swDwgPaperAsize, swDwgPaperAsizeVertical, swDwgPaperBsize,

swDwgPaperCsize, swDwgPaperDsize, swDwgPaperEsize, swDwgPaperA4size,

swDwgPaperA4sizeVertical, swDwgPaperA3size, swDwgPaperA2size, swDwgPaperA1size, swDwgPaperA0size, swDwgPaperUserDefined

vSheetProps(1) - tempi - определяет формат шаблона оформления чертежа, может принимать следующие значения:

swDwgTemplateCsize, swDwgTemplateACsizeVertical, swDwgTemplateBsize,

swDwgTemplateCsize, swDwgTemplateDsize, swDwgTemplateEsize,

swDwgTemplateA4size, swDwgTemplateA4sizeVertical, swDwgTemplateA3size,

swDwgTemplateA2size, swDwgTemplateA1size, swDwgTemplateA0size,

swDwgTemplateCastom, swDwgTemplateNone

vSheetProps(2) - scale - установка первого индекса масштаба листа;

vSheetProps(3) - scale - установка второго индекса масштаба листа;

vSheetProps(4) - firstAngle принимает значение TRUE, если нужно создать первое угловое проектирование, иначе - FALSE;

vSheetProps(5) - width - устанавливает ширину листа, если в формате листа

выбран paperSz = swDwgPaperUserDefined;

vSheetProps(6) - height- устанавливает высоту листа, если в формате листа

выбран paperSz = swDwgPaperUserDefined;

CreateDrawViewFromModelView2 - функция для создания главного вида на чертеже

Синтаксис:

Set myView = Part.CreateDrawViewFromModelView2(ModeName,ViewName,LocX,

LocY,LocZ),

где

ModeName - имя файла детали или сборки ( с расширением .sldprt или .sldasm), на основе которого будет создан чертеж;

ViewName - название вида, который будет нарисован в качестве главного (спереди, сзади и т.д.)

LocX,LocY,LocZ - координаты местоположения центра вида на листе чертежа.

Приведем пример макроса, который открывает файл модели детали и создает чертеж ее с видом спереди.

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim ExcludedComponents As Variant

Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double

Const Pi = 3.141592654

Sub main()

Set swApp = Application.SldWorks

D = 260

Set Part = swApp.OpenDoc6("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 "vrem1", False, longstatus

Set Part = swApp.ActiveDoc

Dim myModelView As Object

Set myModelView = Part.ActiveView

myModelView.FrameLeft = 0

myModelView.FrameTop = 0

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

'Set Part = swApp.ActiveDoc

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Чертеж.drwdot", 2, 0.2794, 0.4318)

Set swSheet = Part.GetCurrentSheet

'Установка мастаба

vSheetProps = swSheet.GetProperties

vSheetProps(3) = 2

swSheet.SetProperties vSheetProps(0), vSheetProps(1), vSheetProps(2), vSheetProps(3), vSheetProps(4), vSheetProps(5), vSheetProps(6)

Set swSheet = Part.GetCurrentSheet

Dim myView As Object

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", "*Спереди", D / (4 * 1000) + 0.06, D / (4 * 1000) + 0.03, 0)

End Sub

Результатом работы макроса будет загрезка файла модели детали Кольцо и формирование чертежа с видом сверху для этой детали (Рис.14).

Рис.14. Вид сверху для детали Кольцо

Функция для создания дополнительного вида

CreateUnfoldedViewAt3(x,y,z,notAligned)

Синтаксис:

Set myView = Part.CreateUnfoldedViewAt3 ( x, y, z, notAligned),

где

x, y, z - координаты центра нового вида;

notAligned - TRUE - если нужно разорвать привязки к главному виду, иначе - FALSE.

В качестве примера дополним предыдущий макрос функцией создания дополнительного вида

Пример:

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim ExcludedComponents As Variant

Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double

Const Pi = 3.141592654

Sub main()

Set swApp = Application.SldWorks

D = 260

Set Part = swApp.OpenDoc6("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 "vrem1", False, longstatus

Set Part = swApp.ActiveDoc

Dim myModelView As Object

Set myModelView = Part.ActiveView

myModelView.FrameLeft = 0

myModelView.FrameTop = 0

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

'Set Part = swApp.ActiveDoc

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Чертеж.drwdot", 2, 0.2794, 0.4318)

Set swSheet = Part.GetCurrentSheet

'Установка мастаба

vSheetProps = swSheet.GetProperties

vSheetProps(3) = 2

swSheet.SetProperties vSheetProps(0), vSheetProps(1), vSheetProps(2), vSheetProps(3), vSheetProps(4), vSheetProps(5), vSheetProps(6)

Set swSheet = Part.GetCurrentSheet

Dim myView As Object

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vrem1.SLDPRT", "*Спереди", D / (4 * 1000) + 0.06, D / (4 * 1000) + 0.03, 0)

Set myView = Part.CreateUnfoldedViewAt3(D / (4 * 1000) + 0.06, D / (4 * 1000) + D / (2 * 1000), 0, True)

End Sub

В результате получим (Рис.15):

Создание сечения на основе выбранного вида выполняется с помощью функции CreateSectionViewAt4(x,y,z,notAligned) выполняется с помощью секущей плоскости перпендикулярной виду, положение которой определяется отрезком, который следует начертить перед выполнением данной функции

Рис.15. Формирование вида спереди

Синтаксис:

Set DrawView = CreateSectionViewAt4 ( X, Y, Z, SectionLabel, Options, ExcludedComponents),

где

X, Y, Z - координаты положения центра нового сечения;

SectionLabel - метка для обозначения названия вида;

Options - настройка, которая определяется swCreateSectionViewAtOptions_e;

ExcludedComponents - множество компонентов для исключения.

Рассмотрим пример построения вида сверху и сечения для детали плиты.

Пример.

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim ExcludedComponents As Variant

Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double

Const Pi = 3.141592654

Sub main()

Set swApp = Application.SldWorks

D = 260

Set Part = swApp.OpenDoc6("F:\vlad\My_documents\drawing_SolidWorks\Metod\_

Stamp\vrem1.SLDPRT", 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 "vrem1", False, longstatus

Set Part = swApp.ActiveDoc

Dim myModelView As Object

Set myModelView = Part.ActiveView

myModelView.FrameLeft = 0

myModelView.FrameTop = 0

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

'Set Part = swApp.ActiveDoc

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Чертеж.drwdot", 2, 0.2794, 0.4318)

Set swSheet = Part.GetCurrentSheet

'Построение чертежа

vSheetProps = swSheet.GetProperties

vSheetProps(3) = 2

swSheet.SetProperties vSheetProps(0), vSheetProps(1), vSheetProps(2), vSheetProps(3), vSheetProps(4), vSheetProps(5), vSheetProps(6)

Set swSheet = Part.GetCurrentSheet

Dim myView As Object

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\

vrem1.SLDPRT", "*Спереди", D / (4 * 1000) + 0.06, D / (4 * 1000) + 0.03, 0)

Рис.16. Формирование разреза

'Построение сечения

Part.EditSketch

Part.ClearSelection2 True

Part.CreateLine2 -D / (2 * 1000) - 0.05, 0, 0, D / (2 * 1000) + 0.05, 0, 0

Set DrawView = Part.CreateSectionViewAt4(D / (4 * 1000) + 0.06, D / (2 * 1000) + 0.1, 0, "A", 20, ExcludedComponents)

Part.SaveAs2 "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\plita.SLDDRW", 0, False,_

False

End Sub

В результате получим следующий чертеж (Рис.16).

Примечание.Приведем пример макроса создания трех видов некоторой произвольной детали (Рис17).

Рис.17. Деталь для выполнения примера

Dim longstatus As Long, longwarnings As Long

Dim ExcludedComponents As Variant

Dim D, H, D3, Dm, D2, Hm, H1, d1, dm1 As Double

Const Pi = 3.141592654

Sub main()

Set swApp = Application.SldWorks

D = 260

'Открытие файла детали vremvrem1.SLDPRT

Set Part = swApp.OpenDoc6("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vremvrem1.SLDPRT", 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 "vrem1", False, longstatus

Set Part = swApp.ActiveDoc

Dim myModelView As Object

Set myModelView = Part.ActiveView

myModelView.FrameLeft = 0

myModelView.FrameTop = 0

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

Set myModelView = Part.ActiveView

myModelView.FrameState = swWindowState_e.swWindowMaximized

'Set Part = swApp.ActiveDoc

'Создание документа чертежа

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Чертеж.drwdot", 2, 0.2794, 0.4318)

Set swSheet = Part.GetCurrentSheet

'Установка мастаба

vSheetProps = swSheet.GetProperties

vSheetProps(3) = 2

swSheet.SetProperties vSheetProps(0), vSheetProps(1), vSheetProps(2), vSheetProps(3), vSheetProps(4), vSheetProps(5), vSheetProps(6)

Set swSheet = Part.GetCurrentSheet

Dim myView As Object

'Создание вида спереди

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vremvrem1.SLDPRT", "*Спереди", D / 1000, 2 * D / 1000, 0)

'Создание вида слева

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vremvrem1.SLDPRT", "*Слева", D / 1000 + D / 1000, 2 * D / 1000, 0)

'Создание вида сверху

Set myView = Part.CreateDrawViewFromModelView2("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\vremvrem1.SLDPRT", "*Сверху", D / 1000, D / 1000, 0)

End Sub

В результате получим следующий чертеж (Рис.18).

Рис.18. Формирование трех видов

Функции для работы со сборкой

Сборка собирается из набора созданных предварительно деталей путем установки между ними сопряжений.

Для добавления деталей в сборку используется функция AddComponent.

Синтаксис:

Part.AddComponent ( ModeName, X,Y,Z),

где

ModeName - полное имя файла детали с расширением;

X,Y,Z - координаты центра детали в сборке.

Основной задачей при составлении сборки является установление сопряжений между различными деталями. При этом требуется выделять отдельные элементы деталей. В этом случае координатный способ выделения в сборке малоэффективен.

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

При выполнении операции присваивания имени элементу нужно выделить элемент и затем выполнить следующую команду:

Напрмер для кромки - Part.SelectedEdgeProperties “Название кромки”

для грани - Part.SelectedFaceProperties ( rgbColor, ambient, diffuse, specular, shininess, transparency, emission, usePartProps, faceName),

где

rgbColor - цвет;

ambient - окружающий цвет, изменяется от 0 до 1;

diffuse - диффузная составляющая цвета от 0 до 1;

specular - зеркальная сотавляющая цвета от 0 до 1;

shininess - солнечная составляющая цвета от 0 до 1;

transparency - прозрачность от 0 до 1;

emission - эмиссия от 0 до 1;

usePartProps - TRUE - если грань наследует свойства, FALSE - в противном случае;

faceName - имя грани.

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

При указании названия элемента идет следующий порядок: название элемент а-@название детали-1название сборки.

Пример:

Boolstatus = Part.Extension.SelectByID2(“Ось1@” + “part-1@”+ “asem”, “AXIS”,0,0,0,True,1,Nothing,0)

После выделения двух элементов можно выполнять сопряжения с применением команды AddMate3.

Синтаксис:

Set Feature = Part.AddMate3 ( mateTypeFromEnum, alignFromEnum, flip, distance, distAbsUpperLimit, distAbsLowerLimit, gearRatioNumerator, gearRatioDenominator, angle, angleAbsUpperLimit, angleAbsLowerLimit, ForPositioningOnly, errorStatus ),

где

mateTypeFromEnum - определяет тип взаимосвязи или соответствующий индекс:

swMateCOINCIDENT

swMateCONCENTRIC

swMatePERPENDICULAR

swMatePARALLEL

swMateTANGENT

swMateDISTANCE

swMateANGLE

swMateUNKNOWN

swMateSYMMETRIC

swMateCAMFOLLOWER

swMateGEAR

swMateWIDTH

swMateLOCKTOSKETCH

swMateRACKPINION

swMateMAXMATES

swMatePATH

swMateLOCK

swMateSCREW

swMateLINEARCOUPLER

swMateUNIVERSALJOINT

swMateCOORDINATE

alignFromEnum - определяет тип привязок, принимает следующие значения:

swMateAlignALIGNED

swMateAlignANTI_ALIGNED

swMateAlignCLOSEST

flip - переключатель направления: TRUE - реверс направления - иначе - FALSE;

distance - расстояние между выделенными элементами, при использовании привязки с учетом расстояния;

distAbsUpperLimit - максимальный предел расстояния, в случае, если расстояние задается пределом, до возникновения противоречия в сопряжениях;

distAbsLowerLimit - минимальный предел расстояния, в случае, если расстояние задается пределом, до возникновения противоречия в сопряжениях;

gearRatioNumerator - нумератор сопряжения;

gearRatioDenominator - денумератор сопряжения;

angle - угол между сопрягаемыми элементами в радианах;

angleAbsUpperLimit - максимальный предел угла;

angleAbsLowerLimit - минимальный предел угла;

ForPositioningOnly - если TRUE, то проверка правильности касательного сопряжения, иначе - FALSE;

errorStatus - сообщение об ошибке, может принимать значения:

swAddMateError_ErrorUknown // Unknown error occurred

swAddMateError_NoError // Success, no error

swAddMateError_IncorrectMateType // Unknown mate type or mate type not present in swMateType_e

swAddMateError_IncorrectAlignment // Unknown mate alignment or mate alignment is not present in swMateAlign_e

swAddMateError_IncorrectSelections // Incorrect selections for mate

swAddMateError_OverDefinedAssembly // Mate is over-defining the assembly

swAddMateError_IncorrectGearRatios // Mate gear ratios are invalid

Для правильного отображения дерева конструирования требуется его перестраивать с применением функции Part.ForceRebuild3 False.

Пример. Приведем пример использования ранее созданного макроса конструирования детали с добавлением кода создания еще одной детали - кольца с последующим построением сборки. В сборке установим сопряжения по совпадению вспомогательной геометрии ОСЬ и ПЛОСКОСТЬ.

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim Feature As Object

Dim kd, kd1, kd2, kdm, kk, ke, kh, khm, kh1, kh2, kh3 As Double

Const Pi = 3.141592654

Sub main()

Dim kd, kd1, kd2, kdm, kk, ke, kh, khm, kh1, kh2, kh3 As Double

kd = 200 * 0.001

kd1 = 80 * 0.001

kd2 = 150 * 0.001

kdm = 12 * 0.001

kk = 59.5 * 0.001

ke = 30 * 0.001

kh = 85 * 0.001

khm = 30 * 0.001

kh1 = 30 * 0.001

kh2 = 15 * 0.001

kh3 = 15 * 0.001

Set swApp = Application.SldWorks

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Деталь.prtdot", 0, 0, 0)

swApp.ActivateDoc2 "Wheel", False, longstatus

Set Part = swApp.ActiveDoc

'Вытянуть основание

boolstatus = Part.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.InsertSketch2 True

Part.ClearSelection2 True

Part.CreateCircleByRadius2 0, 0, 0, kd / 2

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureExtrusion2 True, False, True, 0, 0, kh, 0, False, False, False, False, 0, 0, False, False, False, False, 1, 1, 1, 0, 0, False

Part.SelectionManager.EnableContourSelection = 0

'Вырез с уклоном

Set SelMgr = Part.SelectionManager

boolstatus = Part.Extension.SelectByID2("", "Face", 0, 0, 0, False, 0, Nothing, 0)

Part.InsertSketch2 True

Part.ClearSelection2 True

Part.CreateCircleByRadius2 0, 0, 0, kd1 / 2

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureCut True, False, False, 1, 0, 0.01, 0.01, True, False, False, False, Pi / 180 * 5, 0, False, False, False, False, 0, 1, 1

Part.SelectionManager.EnableContourSelection = 0

'Выполнение отверстия с резьбой

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

boolstatus = Part.Extension.SelectByID2("", "Face", 0, 0, kd2 / 2, True, 1, Nothing, 0)

Dim myFeature As Object

Set myFeature = Part.FeatureManager.HoleWizard3(4, 8, 146, "M12", 0, 0.0102, kh1, kh1, 0, 0, 0, 0, 2.059488517353, 1, 0, 0, -1, -1, -1, "", False, True, True, True, True, False)

'Ось через пересечение плоскостей

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

Part.InsertAxis2 True

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Отверстие обработанное метчиком M121", "BODYFEATURE", 0, 0, 0, False, 4, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Ось1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)

Set myFeature = Part.FeatureManager.FeatureCircularPattern2(6, Pi / 3, False, "NULL", True)

'Сохранение детали колесо

Part.SaveAs2 "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\Wheel.SLDPRT", 0, False, False

'Вставка детали плита

Set Part = swApp.OpenDoc6("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\plita.SLDPRT", 1, 0, "", longstatus, longwarnings)

'Создание сборки

Set swApp = Application.SldWorks

' Создание документа сборки

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

' Добавление детали в сборку

Set Part = swApp.NewDocument("E:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Сборка.asmdot", 0, 0, 0)

Part.AddComponent "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\Wheel.SLDPRT", 0, 0, 0

Part.ClearSelection2 True

boolstatus = Part.AddComponent("F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\plita.SLDPRT", 0, 0, 0.09)

Part.ClearSelection2 True

'Запись сборки перед заданием сопряжений

Part.SaveAs2 "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\Stamp.SLDASM", 0, False, False

' Добавление сопряжение по расположению деталей на одной оси

Set SelMgr = Part.SelectionManager

boolstatus = Part.Extension.SelectByID2("Ось1@Wheel-1@Stamp", "AXIS", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Ось1@plita-1@Stamp", "AXIS", 0, 0, 0, True, 1, Nothing, 0)

Set Feature = Part.AddMate2(0, 1, False, 0, 0, 0, 1, 1, 1, 1, 1, longstatus)

Part.ClearSelection2 True

'Сопряжения для выравнивания отверстий, расположенных по кругу

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Спереди@Wheel-1@Stamp", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Справа@plita-1@Stamp", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

Set Feature = Part.AddMate2(0, 0, False, 0, 0, 0, 1, 1, 0, 0, 0, longstatus)

'Сопряжение, установленное на расстоянии плиты и кольца от поверхности с `учетом входа кольца в паз

boolstatus = Part.Extension.SelectByID2("Сверху@Wheel-1@Stamp", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Спереди @plita-1@Stamp", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

Set Feature = Part.AddMate2(5, 0, True, 0.005, 0.005, 0.005, 1, 1, 0, 0, 0, longstatus)

Part.ForceRebuild3 False

Part.SaveAs2 "F:\vlad\My_documents\drawing_SolidWorks\Metod\Stamp\Stamp\Stamp.SLDASM", 0, False, False

Set SelMgr = Part.SelectionManager

Part.ClearSelection2 True

End Sub

В результате получим следующую деталь(Рис.19) и сборку(Рис.20).

Рис.19. Модель детали

Рис.20. Модель сборки

Заключение

В представленном методическом пособии приведены средства и подходы разработки макросов для расширения возможностей пакета SolidWorks

Учебное текстовое издание

Куреннов Дмитрий Валерьевич

Кондратьев Владимир Иванович

РАЗРАБОТКА VBA ПРИЛОЖЕНИЙ В SOLIDWORKS

Часть 1

Редактор Л.Д. Селедкова

Компьютерная верстка П.В. Володин

Рекомендовано РИС ГОУ ВПО УГТУ-УПИ

Разрешен к публикации 10.11.12.

Формат 60х90 1/8 Объем 1,5 уч.-изд. л.

Издательство ГОУ-ВПО УГТУ-УПИ

620002, Екатеринбург, ул. Мира, 19

Информационный портал ГОУ ВПО УГТУ-УПИ

http://www.ustu.ru

Размещено на Allbest.ru

...

Подобные документы

  • Создание программных комплексов для систем автоматизированного проектирования с системами объемного моделирования и экспресс-тестами. SolidWorks - мировой стандарт автоматизированного проектирования. Пользовательский интерфейс, визуализация модели.

    курсовая работа [3,2 M], добавлен 13.10.2012

  • Современный подход к проектированию и производству высокотехнологичной и наукоёмкой продукции. Схема, структура, интерфейсы и приложения, создаваемые на платформе SolidWorks API. Особенности использования API в коммерческих программных продуктах.

    курсовая работа [325,7 K], добавлен 06.08.2013

  • Решение математических примеров, построение графиков с помощью программы Mathcad. Создание 3D модели сборки, гидродинамического расчета, термического расчета и статистического расчета с помощью программы SolidWorks. Детали интерфейса, элементы вкладок.

    отчет по практике [2,3 M], добавлен 25.11.2014

  • Использование трехмерного твердотельного и поверхностного параметрического проектирования на этапах конструкторской и технологической подготовки производства. Проектирование горизонтального тонкоплёночного испарителя в программном комплексе SolidWorks.

    курсовая работа [2,2 M], добавлен 09.06.2016

  • Изучение понятия, видов и методов создания стандартных макросов Microsoft Office Word - набора инструкций, которые сообщают программе, какие действия следует выполнить, чтобы достичь определенной цели. Функции макрорекордера. Редактирование макросов.

    курсовая работа [1,1 M], добавлен 18.04.2011

  • Проектирование и моделирование платы и корпуса цифрового устройства. Геометрическая модель платы и нахождение собственных частот. Исследование теплообмена с использованием граничного условия и вентилятора. Методы моделирования в системе SolidWorks.

    курсовая работа [2,3 M], добавлен 06.07.2012

  • История создания программы SolidWorks: рынок САПР в 90-е гг., появление средств программного комплекса. Общая характеристика и описание программы SolidWorks: концепция, пользовательский интерфейс, принципы работы, создание сборок, визуализация изделий.

    курсовая работа [1,4 M], добавлен 11.11.2010

  • Процесс твердотельного моделирования отдельных деталей и узлов (вала, втулки, корпуса), создание модели всего трехступенчатого червячного редуктора (сборка). Создание трехмерной модели сборки редуктора. Проверка правильности сборки в среде SolidWorks.

    курсовая работа [6,5 M], добавлен 13.01.2014

  • САПР інженерного аналізу та підготовки виробництва виробів SolidWorks, AutoCAD та Unigraphics, їх відмінні та подібні ознаки, порівняльна характеристика та особливості використання, оцінка можливостей, технічні вимоги. Універсальна система СADAD (США).

    контрольная работа [1,1 M], добавлен 25.03.2010

  • Обґрунтування вибору автоматизованої системи для створення конструкторської документації. Проектування 3D моделі і креслення деталі в системі SolidWorks. Розробка API програми. Призначення деталі "прес-форма". Розробка керуючої програми для устаткування.

    курсовая работа [3,3 M], добавлен 16.12.2013

  • Создание базы данных, планирование разработки и системные требования. Проектирование базы данных в среде Microsoft Access, элементы и типы данных. Создание таблицы и использование конструктора для их модернизации. Построение запросов и создание макросов.

    курсовая работа [2,0 M], добавлен 16.04.2011

  • Разработка базы данных "Доставка товара" в среде MS Access, ее структуры, объектов (таблиц, запросов, форм, отчетов, макросов). Анализ предметной области базы данных, описание ее схемы, полей таблиц, разработанных объектов. Требования к работе приложения.

    контрольная работа [2,6 M], добавлен 07.08.2013

  • Разработка базы данных торговой фирмы по поставке одежды. Анализ таблиц, которые она содержит. Присвоение ключевых полей. Использование средств программирования и макросов для упорядочения структуры базы данных в среде СУБД MS Access. Добавление объектов.

    курсовая работа [1,2 M], добавлен 29.12.2014

  • Применение системы автоматизированного проектирования AutoCad при создании электронных чертежей. Основные алгоритмы работы и создания чертежей. Операции над файлами. Модификация и редактирование объектов на экране. Панель свойств объектов Properties.

    курсовая работа [206,7 K], добавлен 21.12.2010

  • Исследование больших объемов данных, выявление зависимостей, статистические и маркетинговые исследования и построение моделей. Создание проекта разработки статистического пакета. Структура пакета, план его реализации. Выбор инструментов разработки.

    курсовая работа [1,3 M], добавлен 20.10.2012

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

    презентация [329,0 K], добавлен 08.12.2013

  • Суммирование элементов столбцов заданной матрицы и получение результатов в одномерных массивах с помощью задания формулы и создания макросов. Нормирование вектора и нахождение его длины, объявление массива, указание его размерности, вывод формы.

    контрольная работа [460,5 K], добавлен 18.01.2011

  • Общая характеристика и функциональные возможности системы "Компьютерное тестирование". Связи между информационными объектами. Проектирование алгоритмов обработки данных. Реализация алгоритмов обработки информации, разработка соответствующих макросов.

    контрольная работа [542,8 K], добавлен 19.10.2010

  • Основы проектирования базы данных (БД). Модели, типы и функциональные возможности БД. Практическая разработка БД для горнолыжной базы. Сохранение данных в таблицах. Типы запросов как средства выбора необходимой информации. Создание отчетов и макросов.

    курсовая работа [53,3 K], добавлен 12.06.2014

  • Общие сведения о деятельности кондитерской фабрики. Проектирование структуры баз данных для формирования заказов. Выделение информации объектов, определение структурных связей. Построение информационной модели. Создание запросов, отчетов и макросов.

    курсовая работа [4,9 M], добавлен 11.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.