티스토리 뷰
Solid Edge VBA를 시작하며...
시작에 앞서 Solid Edge는 VBA 프로그램이 포함되어 있지 않습니다.
VBA를 시작하기 위해선 연결작업을 먼저 해야합니다.
Edge VBA 연결방법:
Excel등 다른 프로그램의 VBA에서 연결
- 가장 간단한 방법입니다.Visual Basic 6.0 설치
- 무료가 아니니 패스 하겠습니다.Visual Studio 설치
- 추후 강좌는 Visual Studio에서 진행하도록 하겠습니다.
파일경로는 Edge 설치위치의 \Custom\Bearing을 보시기 바랍니다.
Excel 화면입니다.
이 예제는 Update Solid Edge 버튼을 클릭하면 현재 셀 위치의 치수를 Edge에 적용시키는 프로그램입니다.
코드는 Excel에서 Alt+F11 하면 아래와 같이 보실수 있습니다.
주석부분 정리하면...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | Sub UpdateSolidEdge() Dim SelRow As Integer Dim Sel As Object Dim IApp As Object Dim Variables As Object Dim Feature As Object Dim A As Double, B As Double, C As Double Dim D As Double, F As Double, R As Double Dim UseLinks As Boolean UseLinks = False Set Sel = Application.ActiveCell SelRow = Sel.Row If SelRow <= 13 And SelRow <> 1 Then If UseLinks Then Sheets("Part Sizes").Rows(SelRow & ":" & SelRow).Copy _ (Sheets("VariableSeed").Rows("1:1")) Else A = Sheets("Part Sizes").Cells(SelRow, 2).Value B = Sheets("Part Sizes").Cells(SelRow, 3).Value C = Sheets("Part Sizes").Cells(SelRow, 4).Value D = Sheets("Part Sizes").Cells(SelRow, 5).Value F = Sheets("Part Sizes").Cells(SelRow, 6).Value R = Sheets("Part Sizes").Cells(SelRow, 7).Value On Error Resume Next Set IApp = GetObject(, "SolidEdge.Application") If Err Then MsgBox "Solid Edge must be running" Else Set Vars = IApp.ActiveDocument.Variables If UCase(IApp.ActiveDocument.Name) <> "BEARING.PAR" Then MsgBox "The document Bearing.par must be active." Set Vars = Nothing Set IApp = Nothing End End If IApp.delaycompute = True Call Vars.Edit("C", Str(C)) Call Vars.Edit("R", Str(R)) Call Vars.Edit("A", Str(A)) Call Vars.Edit("B", Str(B)) Call Vars.Edit("F", Str(F)) Call Vars.Edit("D", Str(D)) IApp.delaycompute = False Set Vars = Nothing Set IApp = Nothing End If End If Else MsgBox "Invalid row selected." End If | cs |
필요한 부분만 하나씩 보겠습니다.
11 UseLinks = False
Edge파일의 치수를 링크로 연결해 사용할지 체크 하는 부분입니다.
bearing.par 파트의 변수 부분을 보면 아래와 같이 링크로 열결되어 있는걸 볼수 있는데
엑셀 파일의 값을 바꾸면 Edge파일의 변수값도 자동으로 변경됩니다. 이 방법은 VBA도 필요하지 않고 어려운 내용이 없어 쉽게 관리할 수 있는 장점이 있지만 이 링크 연결 방법의 주소는 참조값이 아닌 절대값이기 때문에 파일을 옮기거나 수정할 경우 링크가 깨진다는 치명적인 단점이 있으니 주의하여 사용하시기 바랍니다.
생성 방법은 Excel에서 복사(셀 한칸)한 후 Edge 변수 테이블의 공식위에서 마우스 우클릭하면 아래 사진과 같이 링크 붙여넣기 메뉴가 활성화 됩니다.
17~ 22 내용이 링크와 연결된 셀에 값을 넣는 내용입니다.
If UseLinks Then
Sheets("Part Sizes").Rows(SelRow & ":" & SelRow).Copy _
(Sheets("VariableSeed").Rows("1:1"))
Else
31 On Error Resume Next
VB 6.0 에서 볼수 있는 코드인데 심각한 에러 외엔 무시하고 넘기라는 의미입니다.
이 코드를 사용하는 이유는 그 아래줄에 있습니다.
33~36
On Error Resume Next 코드가 없다면 Edge 프로그램이 실행중이 아닐때,
아래와 같이 프로그램이 강제종료되어버립니다.
IApp에 넣을 내용이 없기때문에 런타임 오류가 발생합니다.
On Error Resume Next 구문을 추가하면 아래 그림처럼
오류가 발생해도 if 에서 내용을 처리 할 수 있습니다.
33 Set IApp = GetObject(, "SolidEdge.Application")
Edge가 실행 중이라면 이제 IApp를 이용에 Edge에 접근할수 있습니다.
37 Set Vars = IApp.ActiveDocument.Variables
46 IApp.delaycompute = True
47 ~ 51
24~29 행의 VB 변수의 내용을 Edge 변수에 넣는 내용입니다.
Call Vars.Edit("C", Str(C))
Call : VBA 함수 호출 명령 (Edge 함수중 Variables.Edit 함수를 호출하기 위해 사용)
"C" : Edge 변수명 (아래 사진 참조)
Str(C) : VB 변수 C
위 코드가 실행되면 Edge 변수테이블의 공식부분이 해당 내용으로 채워지게 됩니다. 46~53 내용이 간단하지만 가장 중요한 역활을 하는 부분입니다. 이 부분을 활용하면 설계 라이브러리를 만들어 관리할수 있는 기능이니 잘 활용해보시기 바랍니다.
'프로그래밍 > SolidEdge' 카테고리의 다른 글
SolidEdge C# 템플릿 (0) | 2018.04.20 |
---|---|
SolidEdge API 오류 (0) | 2018.03.20 |
좌표계 생성 매크로 (2) | 2018.02.26 |
Solid Edge 매크로 (0) | 2018.02.06 |