Reguły iLogic można zapisywać, używając wyłącznie instrukcji przypisania parametrów programu Inventor, wstępnie zdefiniowanych funkcji iLogic i prostego kodu VB.NET. Możesz również bezpośrednio użyć interfejsu API programu Inventor.
Nie trzeba się jednak ograniczać do tych technik. iLogic bazuje na języku VB.NET. W regule można korzystać z bardziej zaawansowanych funkcji języka VB.NET i środowiska .NET.
Nagłówki to instrukcje, których wprowadzenie jest wymagane przed kodem reguły w oknie dialogowym Edycja reguły. Instrukcje nagłówka można wprowadzić bezpośrednio w edytorze nagłówka lub wprowadzić je w edytorze głównym, a program iLogic przeniesie je do edytora nagłówka.
Aby uzyskać dostęp do edytora nagłówków, wykonaj jedną z następujących czynności:
W edytorze nagłówka obsługiwane są następujące instrukcje:
Option Explicit On
Option Strict On
Option Infer Off
AddReference "filename.dll"
Imports ...
AddVbRule "Other Rule"
AddVbFile "filename.vb"
AddResources "filename.resources"
Option i Import są standardowymi instrukcjami języka VB.NET.
Option Explicit Off jest wartością domyślną. Pozwala używać lokalnych zmiennych bez konieczności ich deklarowania.
Option Strict Off jest wartością domyślną. Option Strict On również działa dla większości reguł.
Option Infer On jest wartością domyślną.
Główny kod reguły jest „ukrytą” subrutyną. Aby dodać więcej podprogramów, funkcji, właściwości lub klas, dokonaj deklaracji Sub Main() w następujący sposób:
Sub Main() ' your main rule code here End Sub
Deklaracji Sub Main() można użyć w dowolnej regule, bez względu na to, czy zawiera ona dodatkowy kod. Więcej informacji na temat jawnego deklarowania klasy reguły można znaleźć w dziale „W jaki sposób reguła jest przetwarzana?”.
Wykorzystuje specjalną składnię iLogic. Dodanie nazwy DLL do instrukcji AddReference działa tak, jak użycie polecenia AddReference i wyszukanie pliku DLL w Visual Studio lub Visual Basic Express.
Obsługiwane są wyłącznie zespoły .NET. Plik DLL może być standardowym zespołem Microsoft, jak w folderze Microsoft.NET\Framework.
Rozważmy na przykład poniższą instrukcję:
AddReference "System.Drawing.dll"
W tej instrukcji rozszerzenie .dll jest opcjonalne.
Jako odniesienie możesz również określić utworzoną przez użytkownika lub strony trzecie bibliotekę klas. Wszystkie utworzone przez użytkownika lub zewnętrzne pliki DLL muszą znajdować się w jednym folderze. Domyślnie te pliki DLL znajdują się w folderze instalacyjnym programu Inventor, w podfolderze iLogicAdd, np.:
C:\Program Files\Autodesk\Inventor [wersja]\Bin\iLogicAdd
Możesz zmienić tą lokalizację, używając polecenia Konfiguracja iLogic. Można również dodać odniesienia do plików DLL w folderze Bin programu Inventor (na przykład: C:\Program Files\Autodesk\Inventor [wersja]\Bin).
Instrukcja AddReference nie obsługuje definicji pełnej ścieżki. Możesz zdefiniować wyłącznie nazwę pliku. Dodaj odniesienia do zespołów w Global Assembly Cache (GAC), używając nazwy kwalifikowanej takiej jak:
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
Można również utworzyć zarejestrowane obiekty COM lub uzyskać do nich dostęp w regule, używając instrukcji CreateObject lub GetActiveObject. Nie ma konieczności używania instrukcji AddReference dla biblioteki DLL COM.
Obejmuje kod z wyznaczonej reguły jako kod VB skompilowany z główną regułą. Wyznaczona reguła nie może być regułą standardową. Musi posiadać opcję Prosty kod VB włączoną na panelu Opcje okna dialogowego Edycja reguły. W regułach z tym ustawieniem iLogic nie przetwarza wstępnie kodu. Reguła zawiera Klasy lub Moduły, które można przywołać z innych reguł. Korzystaj z tej instrukcji, by udostępniać kod pomiędzy regułami lub by zachować kod w postaci modularnej.
Przykład
AddVbRule "Other Rule"
Działa podobnie do AddVbRule, lecz kod VB jest przechowywany w pliku zewnętrznym, a nie w regule. Tak jak w przypadku AddVbRule, kod musi posiadać włączoną opcję Prosty kod VB. Ta instrukcja jest przydatna do udostępniania wspólnego kodu pomiędzy regułami. Określenie pliku musi mieć postać relatywnej ścieżki dostępu. Działanie reguły iLogic polega na przeszukaniu folderu bieżącego dokumentu programu Inventor oraz innych folderów z zastosowaniem tej samej kolejności wyszukiwania dla reguł zewnętrznych.
Przykład
AddVbFile "fileName.vb"
Dodaje zasoby takie jak ciągi lub bitmapy. Zasoby muszą być skompilowane przy pomocy Visual Studio.
Przykład
AddResources "fileName.resources"
Duplikaty instrukcji importu nie są dozwolone. Następujące domyślne instrukcje importu są wykorzystywane w ukryciu we wszystkich regułach:
Jeśli używasz w regule obiektu MessageBox, iLogic automatycznie dodaje poniższą instrukcję:
Imports System.Windows.Forms
Jeśli używasz obiektów ThisApplication lub innych obiektów programu Inventor, iLogic automatycznie dodaje poniższe elementy:
Imports Inventor
iLogic zawiera zaawansowane funkcje pozwalające przedstawić informacje kontekstowe jako argumenty reguł w uruchamianych regułach. Informacje te mogą zostać wykorzystane, by zmodyfikować działanie reguły bez konieczności tworzenia duplikatu reguły.
Argumenty reguły można przedstawić, korzystając z funkcji dostępnych w interfejsie IiLogicAutomation (dla klientów zewnętrznych) oraz w iLogicVB (dla innego kodu reguły i klientów wewnętrznych). Argumenty te stają się dostępne w regule poprzez właściwość RuleArguments.
W przypadku IiLogicAutomation dostępne funkcje obejmują:
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
W przypadku iLogicVB dostępne funkcje obejmują:
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
Stwórz argumenty reguł
Aby utworzyć argumenty reguł, skorzystaj z funkcji API programu Inventor w celu utworzenia nowego obiektu NameValueMap. Zostanie on przekazany do jednej z funkcji po uruchomieniu reguły.
Uzyskaj dostęp do argumentu przekazanego do reguły
x = RuleArguments(“myArg”)
Ustal, czy argument został przekazany do reguły
If RuleArguments.Exists(“myArg”) Then...
Przekaż zestaw argumentów do innej reguły, używając polecenia RunRule (Uruchom regułę)
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
Jeśli używasz deklaracji Sub Main(), w regule stosuje się standardowy format VB.NET dla klasy, lecz instrukcje Class... i End Class nie są widoczne, a instrukcje poprzedzające deklarację Sub Main() znajdują się poza klasą. Dlatego też wszystkie instrukcje przypisania powinny się znajdować wewnątrz procedur Sub, Function lub Property. Instrukcje deklaracji dla zmiennych elementu klasy, takich jak Private temp As Double = 4.5, można umieścić poza podprogramem lub funkcją.
Definicje Sub, Function, Property oraz Class można dodać po bloku Sub Main()... End Sub. Wszelkie dodane definicje Class są zagnieżdżane w głównej regule Class dla tej reguły i nie mogą być wykorzystywane z poziomu innej reguły. Aby dodać niezależne definicje Class lub Module, dokonaj jawnej deklaracji Class reguły, korzystając z poniższego sposobu:
Class ThisRule ' ... Sub Main End Sub ' ... End Class
Następnie możesz dodać kolejne definicje Class lub Module (jedną lub więcej) na zewnątrz tego kodu. Class ThisRule staje się główną definicją Class reguły, a iLogic przywołuje blok Sub Main (wewnątrz), aby uruchomić regułę.
Aby zawrzeć definicję Module lub Class jako widoczne dla wielu reguł, umieść je w zewnętrznym zespole (DLL). Można umieścić więcej niż jeden taki obiekt w tym samym pliku DLL. Możesz również użyć instrukcji AddVbRule, aby umieścić je w regule oznaczonej jako „Prosty kod VB” wewnątrz dokumentu programu Inventor (). Opcjonalnie użyj instrukcji AddVbFile, aby umieścić je w zewnętrznym pliku VB.
Podczas pisania zaawansowanego kodu VB.NET lepiej korzystać z Visual Studio lub Visual Basic Express niż kodować bezpośrednio w regule. Pozwala to wycinać względnie małe skrawki kodu z Visual Studio i wklejać je do reguły. Można nawet wkleić definicję Class całego okna dialogowego (choć obsługa zasobów może sprawić problemy). W przypadku większych fragmentów kodu lub tam, gdzie to wymagane, utwórz zespół i używaj go z reguły jako zewnętrzny plik DLL.
Można przechowywać obiekty będące wystąpieniami definicji Class użytkownika, korzystając z funkcji wspólnych zmiennych reguł iLogic. Aby przechowywać te obiekty, uszereguj definicję Class, chyba że wywodzi się ona z typu obiektu MarshalByRefObject.
Możesz pisać własne pliki DLL w .NET i przywoływać je z reguły. Aby zdebugować plik DLL, ustal docelową ścieżkę dostępu w opcjach Właściwości projektu Skompiluj do iLogicAdd (w folderze Inventor Bin). Następnie wybierz Inventor.exe dla polecenia Uruchom program zewnętrzny we właściwościach projektu w Visual Studio. Ta metoda zapewnia wszystkie korzyści środowiska debugującego, w tym opcje Edytuj i Kontynuuj.
Zewnętrzne pliki DLL są przydatne podczas wykorzystywania reguły do wyświetlania okna dialogowe wprowadzania danych.
Aby uzyskać dostęp z reguły do funkcji API programu Inventor, użyj właściwości ThisApplication, aby przejść do aplikacji Inventor. Użyj funkcji ThisDoc.Document, aby uzyskać dostęp do dokumentu zawierającego bieżącą regułę. Elementy można tworzyć i modyfikować. Użyj obiektu Parameter.Param, aby uzyskać bezpośredni dostęp do obiektu Inventor.Parameter.
Aby korzystać z Inventor API z własnego pliku DLL, dodaj odniesienie do Autodesk.Inventor.Interop.dll w swoim projekcie Visual Basic. Jest ono widoczne w oknie dialogowym Dodaj odniesienie w karcie .NET. W przypadku aplikacji Inventor 2011 wersja to 15.0.0.0.
Wszystkie funkcje iLogic są pogrupowane względem obiektów interfejsowych takich jak Parametr, iProperty, iPart itd. Możesz przekazać obiekty interfejsowe iLogic jako argumenty do funkcji w zewnętrznych plikach DLL. Aby móc używać tych obiektów w swoim projekcie, dodaj odniesienie do Autodesk.iLogic.Interfaces.dll. Wybierz kartę Przeglądaj w oknie dialogowym Dodaj odniesienie i przejdź do folderu iLogicBin, znajdującego się w folderze Inventor bin (zazwyczaj w katalogu C:\Program Files\Autodesk\Inventor [wersja]\Bin\iLogicBin).
Dokumentacja interfejsów iLogic znajduje się w Autodesk.iLogic.Interfaces.xml. Możesz skorzystać z Przeglądarki obiektów w Visual Studio, by odczytać opisy interfejsów. Opisy te zawierają nazwy obiektów wdrażających interfejs w regułach. Przykładowo, obiekt Feature (Element) w regule wdraża interfejs ICadFeature.