Разработка 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