티스토리 뷰

프로그래밍/SolidEdge

Edge VBA 시작

.가끔은 2018. 2. 7. 22:27
반응형

Solid Edge VBA를 시작하며...


시작에 앞서 Solid Edge는 VBA 프로그램이 포함되어 있지 않습니다. 

VBA를 시작하기 위해선 연결작업을 먼저 해야합니다.

  • Edge VBA 연결방법:

    1. Excel등 다른 프로그램의 VBA에서 연결
      - 가장 간단한 방법입니다. 

    2. Visual Basic 6.0 설치
      - 무료가 아니니 패스 하겠습니다.

    3. Visual Studio 설치
      - 추후 강좌는 Visual Studio에서 진행하도록 하겠습니다.


Edge VB 시작 강좌는 Solid Edge 토튜리얼중 Bering 파일로 하겠습니다.

  • 파일경로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  

Set IApp = GetObject(, "SolidEdge.Application")
   If Err Then
      MsgBox "Solid Edge must be running"
   Else


 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

파트 변수를 Vars 에 연결 합니다.


  • 46    IApp.delaycompute = True

Edge 프로그램 계산을 일시 정지 시키는 코드며, 52행 내용은 해제 입니다.

  • 47 ~ 51

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)) 

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
댓글