iLogic은 무엇일까요?
모든 데스크톱 응용프로그램을 사용하는 사람들은 대부분 자동화가 무엇인지 알고 있습니다. Microsoft Excel을 사용해 본 적이 있다면 특정한 작업을 수행하기 위해 개발하고 설계된 Excel 내 도구인 매크로에 대해 들어 보셨을 것입니다. 자동화는 여러 가지 형태로 구현될 수 있지만 본질적으로 특정 작업, 프로세스 또는 기능을 자동으로 수행하는 하나의 도구 내지는 일련의 도구라는 점에서 Inventor 자동화도 동일한 개념입니다. iLogic은 Inventor 자동화의 한 형태입니다.
iLogic은 사용자와 관리자가 작업을 수행하기 위해 VB.net 형식으로 로직을 작성할 수 있게 해 주는 Inventor의 기능입니다. 코드 조각 및 기타 코드 작성 문을 사용하여 개발 및 구성된 규칙이 지정된 시간에 실행되어 엔지니어와 설계자가 수행해야 하는 작업을 일관되게 수행합니다.
Write an article for AU
Learn more
여러 가지 모델 기준에 따라 iProperties를 업데이트하거나, iLogic 양식에서 선택한 항목을 기반으로 어셈블리의 구성요소 대체를 수행하거나, 연관된 도면 내의 문자 블록을 업데이트하는 등의 작업을 수행하는 일련의 iLogic 규칙을 개발할 수 있습니다. iLogic에서 수행할 수 있는 작업은 무엇이든 규칙으로 개발할 수 있습니다. 문제는, 사용자에게 어떤 도움을 줄 수 있는가입니다.
iLogic을 채택해야 하는 이유는 무엇일까요?
iLogic이 무엇인지 이해했으므로 이제 iLogic을 엔지니어링 프로세스에 통합하려는 이유를 살펴보겠습니다.
전 세계의 크고 작은 제조 회사들과 함께 일해 온 저의 경험에 따르면, 다양한 유형의 제품을 사전 제작하고 생산할 때 분명한 것은 모든 환경에는 패턴과 반복 가능한 역할이 있다는 것입니다. 핵심은 iLogic이 도움이 될 수 있는 영역을 찾는 것입니다. 이 간단한 작업을 수행하려면 Inventor가 프로세스에 개입하는 모든 위치에 대한 상세한 정보가 필요합니다.
예를 들어, 3D 모델의 iProperty 설명에 대해 특정한 형식을 사용하거나 해당 문제의 iProperty에 대해 특정 형식을 사용하는 경우 형식이 예측 가능하고 표준화되어 있다면 iLogic으로 문제를 해결할 수 있습니다. 모델에서 정보를 수집하고 변환한 다음 올바르게 형식이 지정된 새로운 정보로 iProperties를 덮어쓰는 로직을 개발할 수 있습니다. 이 로직은 항상 정확하고 일관되며 시간을 낭비하지 않습니다.
참조: 한 차원 높이기: Autodesk
Inventor를 사용한 도면 자동화 - Thomas Fitzgerald
iLogic을 사용하도록 Inventor 구성
iLogic을 효과적으로 사용하기 위해 Inventor에서 수행해야 하는 작업은 무엇일까요?
Inventor에 포함되어 있기 때문에 바로 iLogic을 작성하고 사용할 수 있지만 iLogic을 최대한 활용하기 위해서는 처리해야 할 몇 가지 설정이 있다는 점을 이해해야 합니다. iLogic Configuration(iLogic 구성) 버튼을 사용하면 Inventor에서 지원 정보를 찾을 위치를 정의하는 여러 가지 설정을 구성할 수 있습니다.
사용자와 관리자는 이러한 설정을 수정하여 Inventor에서 외부 규칙 디렉토리를 찾을 위치와 디렉토리의 우선순위를 제어할 수 있습니다. 또한 Inventor에서 DLL(동적 링크 라이브러리)을 찾을 디렉토리 위치를 정의할 수도 있습니다. DLL은 사용자화된 사용자 인터페이스를 개발하여 iLogic 규칙 및 기타 로직을 구동 및 트리거하기 위해 Microsoft Visual Studio에서 산출된 결과물입니다.
사용자는 설정 대화상자를 통해 외부 규칙을 어떤 파일 확장자로 저장할 것인지와 디버깅 정보를 생성할 수 있는 기본 로깅 레벨을 설정할 수 있습니다. 또한 Inventor 환경 내에서 실행되는 잠재적으로 위험한 코드로부터 컴퓨터 및 네트워크 시스템을 보호하기 위한 몇 가지 보안 옵션 설정이 있습니다. 외부 규칙 및 디버깅에 대한 내용은 이 문서 뒷부분에서 설명합니다.
내부 규칙과 외부 규칙
언제, 어떤 규칙을 사용해야 할까요?
iLogic 규칙에는 내부 규칙과 외부 규칙이라는 두 가지 유형이 있습니다. iLogic 검색기에서 각 규칙 유형은 Inventor 컨텍스트 내에서 유사한 방식으로 작성됩니다.
내부 규칙은 파일의 컨텍스트 내에서 작성 및 저장되는 규칙입니다. 부품, 어셈블리 및 도면 파일 모두에는 각 파일에 다른 방식으로 영향을 주는 규칙을 저장, 컴파일 및 실행하는 기능이 있습니다. 외부 규칙은 이와 거의 동일하지만 Inventor 파일 내에 저장되지 않습니다. 내부 규칙은 파일 내에 저장되기 때문에 이러한 파일에 대한 권한을 가진 사용자에게 노출되며 해당 사용자가 액세스할 수 있습니다. 외부 규칙은 사용자 시스템에 로컬로 저장되거나, 서버의 중앙 위치에 있는 디렉토리에 저장될 수 있으며 위치에 구애받지 않습니다.
외부 규칙은 파일 외부의 폴더에 저장되므로 더 높은 수준의 보안이 적용될 수 있습니다. 사용자가 규칙 코드를 열고 볼 수 있지만, 시스템 관리자는 외부 규칙 폴더에 폴더 권한을 정의하여 액세스 및 편집 가능 여부에 대한 설정을 제어할 수 있습니다. 이러한 이유로 많은 사용자가 설계 프로세스 전체에서 코드를 실행하기를 원하는 엔터프라이즈 환경에서는 외부 규칙이 선호됩니다. 조건에 권한 제어가 필요하지 않거나 여러 사용자가 규칙 로직을 동시에 사용할 필요가 없는 경우에는 내부 규칙으로 충분합니다.
아래 이미지에 표시된 것처럼 iLogic 검색기 내에 두 가지 유형의 규칙이 모두 표시됩니다.
각 규칙 유형을 마우스 오른쪽 버튼으로 클릭하면 규칙이 트리거되는 시기를 제어하는 규칙 억제 또는 억제 해제 같은 기능이나, 규칙 삭제, 또는 목록에서 규칙제거와 같은 기능을 제어할 수 있습니다.
매개변수 및 특성
어떻게 사용해야 할까요?
Autodesk Inventor는 "3D 파라메트릭 설계 응용프로그램"입니다. 그것은 무엇을 의미할까요? 매개변수는 특정 유형의 명명된 값 자리 표시자입니다. Inventor에서 대부분의 매개변수는 숫자 유형이며 형상을 제어하는 치수와 연관됩니다. 매개변수 값이 변경되면 해당 매개변수와 연관된 치수 또한 변경되어 모델이 시각적으로 업데이트됩니다. Inventor에는 기본적으로 네 가지 유형의 매개변수가 있습니다.
1) 모델(Model) 매개변수
2) 사용자(User) 매개변수
3) 참조(Reference) 매개변수
4) 링크된(Linked) 매개변수
모델(Model) 매개변수는 일반적인 Inventor 동작에 의해 작성된 매개변수입니다. Parameters(매개변수)
대화상자에서, 이 매개변수의 이름은 자동으로 d0, d1, d2 등으로 지정됩니다. 모델 매개변수는 Inventor에 의해 제어됩니다. 즉, 필요에 따라 시스템에서 작성 및 삭제됩니다.
사용자(User) 매개변수는 사용자가 작성한 매개변수로 숫자, 텍스트 또는 문자열, True/False 또는 부울일 수 있습니다. 사용자 매개변수는 사용자가 작성하고, 다양한 기능과 iLogic 코드에 사용되며, 일반적인 Inventor 동작에 의해 작성되거나 삭제되지 않기 때문에 특히 중요합니다.
참고: iLogic 규칙에서 매개변수 정보를 사용할 때 선호되는 방법은 명명 규칙과 유형을 적용하여 사용자 매개변수를 작성하는 것입니다. 모델 매개변수의 이름을 바꿀 수 있지만, 이는 선호되는 방법이 아닙니다.
참조(Reference) 매개변수는 Inventor에서 연계 치수(Driven Dimension)를 정의할 때 작성됩니다. 스케치 환경에서 작업할 때 다음 대화상자가 표시되는 경우:
이 경우 Accept(수락)를 선택하면 참조 매개변수가 작성됩니다. Parameters(매개변수) 대화상자에 매개변수 이름과 값이 표시되지만 값을 변경할 수는 없습니다. 이름은 변경할 수 있으며 이는 iLogic 코드의 값을 사용하는 데 유용합니다.
링크된(Linked) 매개변수는 일반적으로 Excel 스프레드시트에서 Inventor에 링크된 매개변수입니다. 사용자가 Excel 스프레드시트에서 이름과 값을 업데이트하면 Inventor에 이러한 변경 사항이 반영되어 결과적으로 치수 값 연동, 기능 제어, 어셈블리 관리 등을 수행합니다.
Inventor 언어에서 특성(Properties) 또는 iProperties는 추가 설명자나 파일에 대한 기타 중요한 정보입니다. 메타데이터(Metadata)라고도 합니다. 특성은 전혀 새로운 것이 아니며, 파일에 대한 많은 데이터를 수집하려는 경우 매우 유용할 수 있습니다. 파일 이름, 파일 크기, 작성자, 수정된 날짜 등의 모든 항목이 특성입니다. 대부분의 경우 iLogic 및 Inventor 파일 데이터로 작업할 때 가장 일반적으로 처리되는 두 가지 특성은 파일 이름과 파일 경로입니다. 기타 일반적으로 사용되는 특성으로는 부품 번호, 스톡 번호, 설명, 질량, 비용 및 사용자 특성이 있습니다. 모든 특성은 읽기 가능하고, 대부분의 특성은 쓰기 가능합니다.
변수 선언, 타입캐스팅 및 공유 변수
코딩을 사용하는 것이 중요한가요?
iLogic은 일반적이고 단순한 코드입니다. 모두가 프로그래머가 될 필요도 없고 코드 작성 방법을 알 필요도 없지만, 몇 가지 코드 작성 모범 사례를 활용할 수 있다면 분명 많은 도움이 될 것입니다. 모든 프로그래머가 이해하는 몇 가지 표준이 있기 때문입니다. 변수 선언과 타입캐스팅(Typecasting)은 이러한 표준 중 하나입니다. 이것이 중요한 이유는 무엇일까요? 어떤 언어든 마찬가지입니다. 표준을 사용하면 로직을 작성할 때 혼동을 피할 수 있습니다.
변수 선언과 타입캐스팅
변수 선언은 사실 매우 간단합니다. iLogic에서 변수 선언은 단순히 이름을 작성하고 값을 제공하는 것으로 끝납니다.
Length = 20
변수를 생성하면 이 변수를 사용하여 작업을 수행할 수 있습니다. 값을 읽고 계산에서 처리할 수도 있고, 쓰기를 통해 다른 항목을 업데이트할 수도 있습니다. iLogic에서 이름과 값 쌍을 입력할 수 있지만 보다 나은 방법은 코드 작성 모범 사례에 따라 이름을 입력하고 "유형(Type)"을 지정한 다음 값을 제공하는 것입니다.
Dim Length As Double = 20
이렇게 하면 iLogic에서 "Double" 값만 보유하는 변수를 생성한 이후 값을 제공합니다. 이를 타입캐스팅이라고 합니다. 이렇게 하면 특정 값만 변수에 제공할 수 있습니다. Length 변수에 문자열 또는 텍스트 값을 제공하려고 하면 코드가 실패합니다. 유형을 제공하면 규칙에서 훨씬 더 복잡한 코드를 사용할 수 있을 뿐 아니라 정보 흐름을 이해하고 시각화할 수 있습니다. 예를 들어, 수학적 계산을 수행하는 규칙에서 명령문을 작성할 때 오류가 발생하면 "String" 유형의 변수는 잘못되지 않았다는 것을 알 수 있습니다.
다음은 다양한 유형의 변수 선언 및 타입캐스팅의 예입니다.
Dim cylinderHeight As Double = Parameter("CylinderHeight")
Dim fileName As String = "This is a string value!"
Dim holeCount As Integer = 2
Dim occurrenceName As String = String.Empty
Dim plateWidth As Double = Nothing
마지막 두 예에서는 값을 제공하지 않았습니다. 변수를 선언해야 할 수도 있지만, 아직 값을 모를 수 있습니다. 이 경우 변수를 선언하고 타입캐스팅하고 등호 기호의 반대쪽에 항목을 제공하여 일관성을 유지할 수 있습니다. 이 기능은 코드를 디버그하는 데에도 도움이 되며 값이 프로그래밍 방식으로 제공되는지 여부를 확인하는 데 유용합니다.
주의를 기울인다면 첫 번째 예에서 변수를 선언하고 타입캐스팅한 후 값을 사용자 매개변수 값과 같게 설정한 것을 볼 수 있을 것입니다. 이 방법은 계산에 필요한 로직을 구성하고, 다른 생성자에 값을 전달하고, 다른 매개변수를 조작할 때 유용합니다. 코드에 필요한 시점에 사용자 매개변수 값을 즉시 가져오거나 설정해야 하는 경우에도 유용합니다. 이러한 이유로 iLogic의 새 사용자가 특정 동작을 예상하고 규칙을 실행할 때 Inventor에서 단계가 "지연"되는 것처럼 보이는 문제가 발생합니다. 다음 예를 살펴보십시오.
cylinderHeight = CylinderHeight
Dim cylinderHeight As Double = Parameter("CylinderHeight")
이 두 구문은 비슷한 작업을 수행하는 것 같지만 꼭 그런 것만은 아닙니다. 첫 번째 예제에서는 사용자 매개변수와 값이 같은 모든 유형의 변수를 선언합니다. 텍스트 색상이 파란색이므로 Inventor에서는 사용자 매개변수를 인식합니다. Inventor에서 사용자 매개변수를 인식하므로 이 형식을 사용하여 억제 해제된 모든 규칙이 자동으로 실행됩니다. 사용자는 규칙이 이러한 방식으로 실행되기를 원할 수도 있고 원치 않을 수도 있습니다.
이는 또한 변수가 마지막 업데이트 시점의 사용자 매개변수 값으로 설정된다는 것을 의미합니다. 변수에 값이 필요한 시간과 마지막 업데이트 시간 사이에 사용자 매개변수 값이 변경된 경우 사용자 매개변수 값은 오래된 값입니다. 따라서 업데이트가 필요하며 원하는 결과를 얻으려면 업데이트가 여러 번 필요할 수 있습니다.
이를 위해 두 가지 작업을 수행할 수 있습니다. 첫째, 두 번째 명령문을 사용합니다. 변수를 선언하고, 타입캐스팅하고, "Parameter" 함수를 사용하여 변수를 사용자 매개변수의 값으로 직접 설정하여 값을 최신 상태로 유지합니다. 이렇게 하면 규칙 실행 시기도 보다 세부적으로 제어할 수 있습니다. 두 번째로, "RuleParametersOutput()" iLogic 조각을 사용합니다. 이렇게 하면 모든 사용자 매개변수가 최신 상태로 유지됩니다. 그런 다음 업데이트를 수행하여 연관된 모델도 최신 상태로 유지할 수 있습니다.
공유 변수
앞에서 변수에 대한 코드 사용 방법을 설명했지만 공유 변수는 iLogic의 기능입니다. iLogic 규칙에서 변수를 선언하는 경우 해당 변수는 해당 규칙의 컨텍스트 내에서만 액세스할 수 있습니다. 변수를 작성하고 다양한 규칙 내에서 사용할 값을 설정해야 하는 경우에는 공유 변수가 답입니다.
iLogic Rule Editor(iLogic 규칙 편집기) iLogic Snippets Panel(iLogic 조각 패널)의 Variables(변수) 인덱스 아래에서 Shared Variable(공유 변수) 함수를 찾을 수 있습니다.
공유 변수를 사용하려면 다른 변수를 선언할 때와 유사한 프로세스를 수행합니다. 먼저 공유 변수를 선언하고 공유 변수의 이름을 입력한 다음 값을 제공합니다. 값은 정적 값이거나 다른 변수, 매개변수 또는 특성의 값일 수 있습니다.
SharedVariable("VariableName") = "This is the value" SharedVariable("cylinderHeight") = Parameter("CylinderHeight")
공유 변수를 선언하고 값을 제공한 후에는 필요에 따라 이 변수를 사용하고 업데이트할 수 있습니다.
Dim cylinderHieght As Double = SharedVariable("cylinderHeight")
다른 공유 변수 함수를 사용하여 공유 변수가 존재하는지 확인하거나, 메모리에서 일부 또는 모든 공유 변수를 제거하십시오.
조건부 표현식 및 루프
사람이 항상 의사 결정을 해야 하나요?
일반적인 Inventor 작업 중에는 그래픽 창을 살펴보고 형상을 선택하여 어떤 작업을 수행할 것인지 결정할 수 있습니다. 어셈블리에서는 구성요소가 서로 연관되는 방식을 파악할 수 있습니다. iLogic 규칙을 살펴볼 때는 설계 내에 존재할 수 있는 다양한 조건을 파악함으로써 의사 결정 경로를 정의해야 하는 경우가 있습니다. 다양한 조건을 정의하는 표현식을 사용하면 iLogic 사용자가 이러한 작업을 수행할 수 있습니다.
가장 일반적인 조건부 표현식은 If Then 표현식입니다. 다음과 같은 형태입니다.
If someValue = True Then
'Do Something
Else
'Do Something Else
End If
코드에서 조건이 존재하는지 확인하고 조건이 존재하면 코드가 특정 작업을 수행합니다. 조건이 존재하지 않거나 다른 조건이 존재하는 경우 코드는 다른 작업을 수행합니다. 이 기능을 확장하여 다음과 같은 다양한 조건을 찾을 수 있습니다.
If someValue = True Then
'Do Something
ElseIf someValue = False Then
'Do Something Else
ElseIf someValue = Nothing Then
'Yet Do Something Else
End If
모두가 쉬워 보이고 완벽한 방법이지만 한계가 있습니다. 조건이 무한대로 계속될 것으로 예상하기가 쉽지만, 특정 시점 이후, 특히 추가 연산자를 추가할 때 실제로 발생하는 상황은 혼란스러울 수 있습니다. 서너 가지 조건을 수행하고 나면 상황을 더 잘 처리할 수 있을 것입니다.
또 다른 일반적인 조건부 표현식은 Select Case 메서드입니다. 유사한 방식으로 작동하지만 코드를 적게 쓰는 것은 물론이고, 읽고 이해하는 것이 훨씬 쉽습니다. Select Case 방법은 다음과 같습니다.
Select Case someValue
Case True
'Do Something
Case False 'Do Something Else
Case Nothing
'Yet Do Something Else End Select
보시는 바와 같이, 좀 더 이해하기 쉬우며 수용해야 할 조건의 수에 따라 조정하기가 매우 쉽습니다.
코드 작성의 가장 필수적인 방법론 중 하나는 루프의 개념입니다. 어셈블리 반복 사례를 사용하여 발생의 이름을 가져오는 루프를 활용하면 반복 사례를 사용하여 발생의 이름을 가져오는 루프를 활용하면 발생 횟수를 몰라도 모든 발생 상황을 고려할 수 있습니다. 코드를 구성하고 로직을 개발하는 것은 패턴, 일관성 및 예측 가능성을 이해하는 데 매우 중요합니다. 때로는 예측하기 어려운 상황을 수용할 수 있는 방법이 있습니다. 루프가 그 방법입니다. 다음은 For Next 루프의 예입니다.
Dim counter As Integer = 3
For t As Integer = 1 To counter
MessageBox.Show("Number of Iterations: " & t)
Next
이 예에서는 루프의 시작점을 정의했습니다(숫자 1). 루프의 끝점도 정의했습니다(카운터는 3으로 설정). 따라서, 루프는 세 번 반복하여 메시지 상자를 생성합니다. 루프의 끝점을 모를 경우 컬렉션의 항목을 계산하여 끝점으로 만들 수 있습니다. 다음 예를 확인하십시오.
Dim items As New List(Of String)
items.Add("Pizza")
items.Add("Sandwich")
items.Add("Milk")
items.Add("Eggs")
For i = 0 To (items.Count - 1)
MessageBox.Show(items(i))
Next
이 예에서는 컬렉션을 생성하고, 컬렉션을 채운 다음, 루프가 컬렉션에 항목이 있는 횟수만큼 반복하도록 했습니다. 보시다시피 0에서 루프를 시작하고 카운트 - 1에서 루프를 종료합니다. 인덱싱을 이해하는 것이 중요한 사례 중 하나입니다. 인덱싱은 시작점을 식별하는 것에 불과합니다. 일반적으로 0 또는 1입니다. 이 유형의 컬렉션에서 목록의 첫 번째 항목은 실제로 1이 아니라 0에서 시작합니다.
Thomas Fitzgerald는 Inventor 자동화 및 데이터 관리를 전문으로 하는 수석 구현 컨설턴트로, 대규모 및 소규모 엔지니어링 부서가 다양하게 있는 여러 회사를 대상으로 컨설팅을 제공했습니다. Thomas는 다양한 오토데스크 제품을 사용하는 기계 설계 및 제조 산업 분야에서 20년 이상 경력을 쌓아 왔습니다. 그는 Microsoft 인증 시스템 관리자 자격 증명을 보유하고 있으며 오토데스크 공인 강사이기도 합니다.
더 많은 정보를 원하십니까? 자세한 내용은 full class handout전체 강의 자료를 다운로드하여 참조하십시오.