Inventor 매개변수 지정 문, 미리 정의된 iLogic 함수 및 간단한 VB.NET 코드만을 사용하여 iLogic 규칙을 쓸 수 있습니다. 또한 Inventor API를 직접 사용할 수도 있습니다.
그러나 이러한 기법 외에 다른 방법도 사용할 수 있습니다. iLogic은 VB.NET을 기반으로 합니다. 규칙에서 VB.NET 및 .NET Framework의 고급 기능을 사용할 수 있습니다.
헤더는 규칙 편집 대화상자에서 규칙 코드 앞에 입력해야 하는 문입니다. 헤더 편집기에서 직접 헤더 문을 입력할 수도 있고 주 편집기에서 입력하여 iLogic을 통해 헤더 편집기로 이동할 수도 있습니다.
헤더 편집기에 액세스하려면 다음 중 하나를 수행합니다.
헤더를 클릭합니다.
규칙 편집기 창에서 유효한 헤더 문(예: Imports)을 입력합니다. 그러면 헤더 편집기가 자동으로 활성 편집기로 열립니다.
헤더 편집기에서는 다음 문이 지원됩니다.
Option Explicit On
Option Strict On
Option Infer Off
AddReference "filename.dll"
Imports ...
AddVbRule "Other Rule"
AddVbFile "filename.vb"
AddResources "filename.resources"
Option
및 Imports
는 표준 VB.NET 문입니다.
Option Explicit Off
가 기본값입니다. 이 값은 로컬 변수를 선언하지 않고 사용할 수 있도록 합니다.
Option Strict Off
가 기본값입니다. Option Strict On
또한 대부분의 규칙에서 작동합니다.
Option Infer On
가 기본값입니다.
주 규칙 코드는 "암시적" 하위 루틴입니다. 하위 루틴, 함수, 특성 또는 클래스를 추가하려면 Sub Main()
을 다음과 같이 선언합니다.
Sub Main()
' your main rule code here
End Sub
Sub Main()
은 규칙에 추가 코드가 있는지 여부와 상관없이 모든 규칙에서 사용할 수 있습니다. 명시적으로 규칙 클래스를 선언하는 방법에 대한 자세한 내용은 "규칙은 어떻게 처리됩니까?"를 참고하십시오.
특수 iLogic 구문을 사용합니다. DLL 이름을 AddReference 문에 추가하는 것은 AddReference 명령을 사용하고 Visual Studio 또는 Visual Basic Express에서 DLL을 찾는 것과 같습니다.
.NET 조립품만 지원됩니다. DLL은 Microsoft.NET₩Framework 폴더에 있는 것과 같은 표준 Microsoft 조립품일 수 있습니다.
예를 들어 다음 문을 살펴보십시오.
AddReference "System.Drawing.dll"
이 문에서 .dll
확장자는 선택 사항입니다.
사용자가 작성한 클래스 라이브러리 또는 써드 파티 클래스 라이브러리를 참조로 지정할 수도 있습니다. 사용자가 작성한 DLL 또는 써드 파티 DLL은 모두 한 폴더에 있어야 합니다. 기본적으로 이러한 DLL은 다음과 같이 Inventor 설치 폴더의 iLogicAdd 하위 폴더에 있습니다.
C:\Program Files\Autodesk\Inventor [Version]\Bin\iLogicAdd
iLogic 구성 명령을 사용하여 이 위치를 변경할 수 있습니다. C:₩Program Files₩Autodesk₩Inventor [버전]₩Bin과 같은 주 Inventor Bin 폴더에서 DLL에 참조를 추가할 수도 있습니다.
AddReference
문은 전체 경로 지정을 지원하지 않습니다. 파일 이름만 지정할 수 있습니다. 다음과 같은 정규화된 이름을 사용하여 GAC(Global Assembly Cache)에서 조립품에 참조를 추가합니다.
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
CreateObject
또는 GetActiveObject
를 사용하여 규칙에서 등록된 COM 객체를 작성하거나 액세스할 수도 있습니다. COM DLL에는 AddReference
를 사용할 필요는 없습니다.
지정된 규칙의 코드를 VB 코드로 포함합니다. 이러한 코드는 주 규칙으로 컴파일됩니다. 지정된 규칙은 표준 규칙일 수 없습니다. 규칙 편집 대화상자의 옵션 패널에서 Straight VB 코드 옵션이 활성화되어 있어야 합니다. iLogic은 이러한 규칙의 코드를 사전 처리하지 않습니다. 규칙에는 다른 규칙에서 호출할 수 있는 클래스 또는 모듈이 포함되어 있습니다. 이 문을 사용하여 규칙 간에 코드를 공유하거나 코드 모듈을 유지합니다.
예
AddVbRule "Other Rule"
VB 코드가 규칙이 아니라 외부 파일에 저장된다는 점을 제외하고 AddVbRule
과 비슷하게 작동합니다. AddVbRule을 사용할 때와 마찬가지로, 이 코드에 대해 Straight VB 코드 옵션이 활성화되어 있어야 합니다. 이 문은 모형 간에 공통 코드를 공유하는 데 유용합니다. 파일 지정은 상대 경로 이름이어야 합니다. iLogic에서는 외부 규칙에 사용된 것과 동일한 검색 순서를 사용하여 현재 Inventor 문서의 폴더 및 기타 폴더를 검색합니다.
예
AddVbFile "fileName.vb"
문자열, 비트맵 등의 리소스를 추가합니다. Visual Studio를 사용하여 리소스를 컴파일해야 합니다.
예
AddResources "fileName.resources"
Imports 문은 중복될 수 없습니다. 다음 기본 Imports 문이 모든 규칙에서 암시적으로 사용됩니다.
Imports System
Imports System.Math
Imports System.Collections
Imports Microsoft.VisualBasic
Imports Autodesk.iLogic.Interfaces
Imports Autodesk.iLogic.Runtime
규칙에서 MessageBox
를 사용하면 iLogic에서 다음 문을 자동으로 추가합니다.
Imports System.Windows.Forms
ThisApplication
또는 다른 Inventor 객체를 사용하면 iLogic에서 다음을 자동으로 추가합니다.
Imports Inventor
iLogic에서는 실행하는 규칙에 컨텍스트 정보를 규칙 인수로 전달할 수 있는 고급 기능을 제공합니다. 이 정보는 중복 규칙을 작성할 필요 없이 규칙의 동작을 수정하는 데 사용할 수 있습니다.
IiLogicAutomation 인터페이스(외부 클라이언트용)와 iLogicVB(다른 규칙 코드 및 내부 클라이언트용)에서 사용 가능한 함수를 사용하여 규칙 인수를 전달합니다. 이러한 인수는 규칙 내에서 RuleArguments
특성을 통해 사용 가능한 상태가 됩니다.
IiLogicAutomation의 경우 사용 가능한 함수는 다음과 같습니다.
Function RunRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRuleDirectWithArguments(ByVal rule As iLogicRule, ByVal ruleArguments As Inventor.NameValueMap) As Integer
iLogicVB의 경우 사용 가능한 함수는 다음과 같습니다.
Function RunRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRule(ByVal compoOrDocName As Object, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
규칙 인수 작성
규칙 인수를 작성하려면 Inventor API를 사용하여 새 NameValueMap
객체를 작성합니다. 그러면 규칙을 실행할 때 이 객체가 함수 중 하나로 전달됩니다.
규칙에 전달되는 인수에 액세스
x = RuleArguments(“myArg”)
인수가 규칙에 전달되었는지 확인
If RuleArguments.Exists(“myArg”) Then...
RunRule을 사용하여 다른 규칙에 인수 세트 전달
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
Sub Main()
을 사용하는 경우 규칙은 Class...
및 End Class
문이 표시되지 않고 Sub Main()
앞의 문이 클래스 외부에 있다는 점을 제외하고는 클래스에 대한 표준 VB.NET 형식을 따릅니다. 그러므로 모든 지정 문을 Sub, 함수 또는 특성 안에 배치합니다. Private temp As Double = 4.5
등의 클래스 멤버 변수에 대한 선언 문을 하위 루틴 또는 함수 외부에 포함할 수 있습니다.
Sub Main()... End Sub
다음에 Sub
, Function
, Property
및 Class
정의를 추가할 수 있습니다. 추가하는 Class
는 해당 규칙에 대한 주 규칙 Class
에 내포되며 다른 규칙에서 사용할 수 없습니다. 독립 Class
또는 Module
을 추가하려면 다음을 사용하여 규칙 Class
를 명시적으로 선언합니다.
Class ThisRule ' ...
Sub Main
End Sub
' ...
End Class
그런 다음 이 코드 외부에 Class
또는 Module
을 또 하나(또는 둘 이상) 추가할 수 있습니다. Class ThisRule
가 주 규칙 Class
가 되고 iLogic은 Sub Main
(규칙 내)을 호출하여 규칙을 실행합니다.
여러 규칙에 표시되는 Module
또는 Class
를 포함하려면 외부 조립품(DLL)에 삽입합니다. 같은 DLL에 두 개 이상을 삽입할 수 있습니다. 또한 AddVbRule
을 사용하여 Inventor document ()에서 "Straight VB 코드"로 식별된 규칙 에 삽입할 수 있습니다. 또는 AddVbFile
을 사용하여 외부 VB 파일에 삽입할 수도 있습니다.
고급 VB.NET 코드를 개발하는 경우 규칙에서 직접 코딩하지 말고 Visual Studio 또는 Visual Basic Express를 사용합니다. 그러면 Visual Studio에서 비교적 간단한 코드 조각을 잘라내어 규칙에 붙여 넣을 수 있습니다. 리소스가 쉽게 지원되지 않지만 전체 대화상자 Class
에 붙여 넣을 수도 있습니다. 더 큰 단위의 코드의 경우 또는 필요한 경우 조립품을 작성하고 규칙에서 이 조립품을 외부 DLL로 사용합니다.
iLogic 규칙의 공유 변수 함수를 사용하여 사용자 정의 Class
의 복제인 객체를 저장할 수 있습니다. 이러한 객체를 저장하려면 Class
를 직렬화하거나 MarshalByRefObject
에서 파생해야 합니다.
.NET에서 외부 DLL을 작성한 다음 규칙에서 이 DLL을 호출할 수 있습니다. DLL을 디버그하려면 프로젝트 특성 iLogicAdd로 컴파일(Inventor Bin 폴더 아래)에서 빌드 출력 경로를 설정합니다. 그런 다음 Visual Studio의 프로젝트 특성에서 외부 프로그램 시작에 대해 Inventor.exe를 선택합니다. 이 방법을 사용하면 편집 및 계속을 포함한 디버그 환경의 모든 이점을 활용할 수 있습니다.
외부 DLL은 규칙을 사용하여 사용자 입력을 위한 대화상자를 표시할 경우에 유용합니다.
규칙에서 Inventor API에 액세스하려면 ThisApplication
특성을 사용하여 Inventor 응용프로그램에 액세스합니다. 현재 규칙이 포함된 문서에 액세스하려면 ThisDoc.Document
를 사용합니다. 피쳐를 작성하고 수정할 수 있습니다. Parameter.Param
을 사용하여 Inventor.Parameter에 직접 액세스할 수 있습니다.
사용자 고유의 DLL에서 Inventor API를 사용하려면 Visual Basic 프로젝트의 Autodesk.Inventor.Interop.dll에 참조를 추가합니다. 그러면 참조 추가 대화상자의 .NET 탭에 표시됩니다. Inventor 2011의 경우 버전은 15.0.0.0입니다.
모든 iLogic 함수는 매개변수, iProperties, iPart 등의 인터페이스 객체 아래에 그룹화되어 있습니다. iLogic 인터페이스 객체를 인수로 외부 DLL의 함수에 전달할 수 있습니다. 프로젝트에서 이러한 객체를 사용하려면 Autodesk.iLogic.Interfaces.dll에 참조를 추가합니다. 참조 추가 대화상자에서 찾아보기 탭을 선택하고 Inventor bin 폴더에서 iLogicBin 폴더를 찾습니다. 이 폴더는 대개 C:₩Program Files₩Autodesk₩Inventor [버전]₩Bin₩iLogicBin에 있습니다.
iLogic 인터페이스에 대한 문서는 Autodesk.iLogic.Interfaces.xml에 제공되어 있습니다. Visual Studio에서 객체 검색기를 사용하여 인터페이스 설명을 읽을 수 있습니다. 이러한 설명에는 규칙에서 인터페이스를 구현하는 객체의 이름이 포함됩니다. 예를 들어 규칙의 피쳐 객체는 ICadFeature 인터페이스를 구현합니다.