반응형

Inventor의 Assembly에서 여러가지 부품 중 Tap Size를 알기 위해 Inventor 기본 내장 기능인 측정 기능으로

Tap을 클릭 해본 적이 있으실 겁니다.

이 때, Tap Size 대신 Tap에 사용된 실제 Hole크기만 확인됩니다.

저도 Inventor 사용 초반에 이 부분이 엄청 불편했는데 기본기능의 한계라고 생각하고 넘어 갔었습니다.

그러던 중 최근에 어떤 분이 다시 이부분을 문의 해주셨고, 순간 iLogic으로 해결할수도 있겠다 생각해서 API를 찾아보고 코딩해보았습니다.

오늘은 Assembly 조립품에서 각 부품에 작업된 Tap Size를 부품파일에서 직접 확인하지 않고 Assembly에서 바로 확인할 수 있는 iLogic Message 창을 만들어 보겠습니다.

  1. VBA 조사식으로 관련 API 확인하기.
  2. iLogic 으로 API 에서 가져온 Tap Size Message 창에 나타내기.
  3. 해당 Hole이 Tap인지, 일반 Hole인지 확인 하기.

1. VBA 조사식으로 관련 API 확인하기.

  • Assembly에서 ①우선순위를 변경하는 아이콘을 클릭.
  • ② "면 및 모서리 선택" 클릭.
  • ③ Tap의 면을 클릭하고 ④ [VBA 편집기] 클릭.

Option Explicit

Public Sub FilletDelete()

Debug.Print ThisApplication.Caption

End Sub
  • ①[Module1] 더블클릭.
  • Code 입력하고 FilletDelete()끝에 커서클릭.
  • ③ [디버그] → ④[한 단계씩 코드 실행] 두번 실행.
  • ⑤ [ThisApplication] Drag 마우스 오른쪽 클릭.
  • ⑥ [조사식 추가] 클릭.

※ 사용 할 Inventor API

  • TapSize 가져오기 : [ActiveDocument] - [SelectSet] - [Item 1] - [CreatedByFeature] - [TapInfo] - [CustomThreadDesignation]
  • Tap인지, Hole인지 확인 : [ActiveDocument] - [SelectSet] - [Item 1] - [CreatedByFeature] - [Tapped]

2. iLogic으로 Tap Size Message 창에 나타내기.

Dim doc = ThisDoc.Document

oFace = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartFaceFilter, "확인 할 Hole을 클릭하세요!!")
'→ Inventor 창에서 면을 클릭하여 Selectset에 추가하는 Method.
'※ "kPartFaceFilter"가 면을 필터해주는 Property.

oTapSize = oFace.CreatedByFeature.TapInfo.CustomThreadDesignation
'→ 선택 된 면에 사용된 Feature를 생성하고 Tap Size를 가져옴.

MessageBox.Show(oTapSize, "Tap Size 확인")
'→ 가져온 Tap Size를 메세지 박스에 표현


3. 선택한 면이 Tap인지, 일반 Hole인지 확인하기.

Dim doc = ThisDoc.Document

oFace = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartFaceFilter, "확인 할 Hole을 클릭하세요!!")
'→ Inventor 창에서 면을 클릭하여 Selectset에 추가하는 Method.
'※ "kPartFaceFilter"가 면을 필터해주는 Property.

oFaceTap = oFace.CreatedByFeature.Tapped
'→ 선택된 면이 Tap인지, 아닌지 True, False값으로 반환

If oFaceTap = True '→ 선택된 면이 Tap인 경우,

	oTapSize = oFace.CreatedByFeature.TapInfo.CustomThreadDesignation
	'→ 선택된 면의 피처의 Tap Size를 가져옴.
    
	MessageBox.Show(oTapSize, "Tap Size 확인")
	'→ 가져온 TapSize를 메세지 박스에 표현
    
Else '→ 선택된 면이 Tap이 아닌 경우,
	oHoleSize = oFace.CreatedByFeature.HoleDiameter.Expression
	'→ 선택된 면의 피처의 HoleDiameter를 가져옴.
	MessageBox.Show(oHoleSize, "Hole 지름 확인")
	'→ 가져온 HoleDiameter를 메세지 박스에 표현.
End If

반응형

+ Recent posts