인벤터 - idw 자동화된 중심선 logic 작성 중 질문
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
매번 누르는게 귀찮아서 view 작성 할 때마다 자동으로 센터라인을 작성하고 싶습니다.
그래서 chat gpt를 한 시간 괴롭힌 결과 이런 코드를 작성해 주었습니다. 하지만 역시 작동 하지 않는군요.
뷰를 찾아서 순차적으로 적용 메시지 창이 뜨고 버튼을 누르면 실행할 수 있도록 했는데.
이것이 동작하지 않는 것 같습니다. 상세 전체 코드는 아래에 첨부하였습니다.
' 설정에 따라 자동 중심선 및 중심 마크 추가 명령 실행 ThisApplication.CommandManager.ControlDefinitions.Item("DrawingAutoCenterlinesCmd").Execute()
-
ThisApplication: 현재 Autodesk Inventor 응용 프로그램 인스턴스를 참조합니다.
-
CommandManager: Inventor에서 사용자 명령을 관리하는 객체입니다. CommandManager를 통해 사용자 인터페이스에 있는 명령어들을 코드로 실행할 수 있습니다.
-
ControlDefinitions: CommandManager에서 사용할 수 있는 모든 명령의 정의를 보유한 컬렉션입니다. 이 컬렉션에서 특정 명령을 Item으로 호출하여 해당 명령에 접근할 수 있습니다.
-
"DrawingAutoCenterlinesCmd": 이 문자열은 자동 중심선을 추가하는 명령의 고유 ID입니다. 이 명령어는 특정 버전의 Autodesk Inventor에서 사용 가능한 명령일 수 있지만, 모든 버전에서 항상 사용할 수 있는 것은 아닙니다. 일반적으로 명령 ID는 Autodesk Inventor 버전에 따라 다르며, 특정 기능이 제거되거나 이름이 변경될 수 있습니다.
-
Execute(): Execute() 메서드는 선택한 명령을 실행합니다. 여기서는 "DrawingAutoCenterlinesCmd"에 대한 Execute() 호출을 통해 뷰에 자동으로 중심선을 추가하려는 것입니다.
이라고 chat gpt는 말하는데.. 뭔가 오묘한 거짓이 섞여 있는 것 같습니다. automated centerlines 명령어를 실행할 수 있는 방법에 대해 조언 부탁 드립니다.
Sub Main() ' 활성 문서가 도면 문서인지 확인 Dim oDoc As DrawingDocument oDoc = ThisApplication.ActiveDocument If oDoc.DocumentType <> kDrawingDocumentObject Then MsgBox("IDW 파일에서 이 코드를 실행하세요.") Exit Sub End If ' 문서의 기본 자동 중심선 설정 가져오기 Dim settings As AutomatedCenterlineSettings settings = oDoc.DrawingSettings.AutomatedCenterlineSettings ' 자동 중심선 설정 구성 settings.ApplyToHoles = True ' 구멍에 중심선 적용 settings.ApplyToCylinders = True ' 원통형 피처에 중심선 적용 settings.ApplyToRevolutions = True ' 회전체 피처에 중심선 적용 settings.ApplyToCircularPatterns = True ' 원형 패턴에 중심선 적용 settings.ProjectionParallelAxis = True ' 평행축으로 투영 적용 settings.ProjectionNormalAxis = False ' 수직축으로 투영 적용하지 않음 ' 각 시트의 각 뷰를 차례로 진행 Dim oSheet As Sheet Dim oView As DrawingView Dim oCenterline As Centerline Dim oCenterEntities As ObjectCollection oCenterEntities = ThisApplication.TransientObjects.CreateObjectCollection() For Each oSheet In oDoc.Sheets For Each oView In oSheet.DrawingViews ' 사용자에게 뷰 처리 여부 확인 메시지 표시 Dim response As Integer response = MsgBox("이 뷰에 중심선과 중심 마크를 추가하시겠습니까?", vbYesNo + vbQuestion, "뷰 처리") If response = vbYes Then ' 각 뷰에 자동 중심선 설정 적용 oView.SetAutomatedCenterlineSettings(settings) ' 설정에 따라 자동 중심선 및 중심 마크 추가 명령 실행 ThisApplication.CommandManager.ControlDefinitions.Item("DrawingAutoCenterlinesCmd").Execute() ThisApplication.CommandManager.ControlDefinitions.Item("DrawingAutoCenterMarksCmd").Execute() ' 특정 중심선 추가: CenterEntities 모음 정의 ' 예를 들어, 첫 번째와 두 번째 원형 선을 중심선 엔티티로 지정 oCenterEntities.Add(oView.DrawingCurves(1).GeometryIntent) oCenterEntities.Add(oView.DrawingCurves(2).GeometryIntent) ' 중심선 추가 (기본 센터 마크 스타일과 레이어 사용, 닫힌 중심선이 아님) oCenterline = oView.Centerlines.Add(oCenterEntities, , , False) MsgBox("중심선과 중심 마크가 추가되었습니다.") End If Next Next MsgBox("모든 뷰 처리가 완료되었습니다.") End Sub