Příklad skriptu rozhraní API: Generování bodů COGO

Vytvoří v aplikaci Dynamo for Civil 3D nové uzly k vytváření bodů, přidání bodů do skupiny bodů a vytváření povrchů ze skupin bodů.

Vzorový skript aplikace Dynamo: CoGoPoints.dyn

Vzorový projekt: CoGoPoints.dwg

  1. Vytvořte nový projekt jazyka C# s názvem CoGoPoints Class Library(.Net Framework) pomocí rozhraní .NET Framework 4.7.
  2. Přidejte do projektu soubory: Point.cs, PointGroup.cs a Surface.cs.
  3. Přidejte reference na tyto soubory (například AeccDbMgd.dll atd.) pomocí instalační cesty aplikace Civil 3D.
  4. Vytvořte řešení a vygenerujte soubor CoGoPoints.dll.
  5. Spusťte aplikaci Civil 3D a otevřete soubor CoGoPoints.dwg.
  6. Klikněte na kartu Správa panel Vizuální programování Dynamo .
  7. Vyberte možnost Soubor Importovat knihovnu a vyberte soubor CoGoPoints.dll.

    Uzly, které byly vytvořeny při importu souboru CoGoPoints.dll, jsou ukázány na následujícím obrázku.

  8. Otevřete a spusťte skript CoGoPoints.dyn.

    Ve výkresu se vytvoří body COGO a přidají se do skupiny bodů. Ze skupiny bodů se vytvoří povrch.

S aplikací Dynamo jsou dodávány dvě třídy k vytvoření nových uzlů a přidání mechanismu trasování k novým uzlům.
  1. Autodesk.AutoCAD.DynamoNodes.ObjectBase: Poskytuje zapouzdření objektu Autodesk.AutoCAD.DatabaseServices.DBObject.
  2. Autodesk.AutoCAD.DynamoNodes.Object: Je odvozen z objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase za účelem rozšíření vlastností nebo funkcí podle objektu Autodesk.AutoCAD.DatabaseServices.Object.

Aplikace Dynamo poskytuje dva způsoby realizace mechanismu trasování. Prvním je použití existující metody (CommonConstruct) při vytváření nových uzlů. Druhým je zápis kódu trasování pomocí šablony.

Chcete-li realizovat mechanismus trasování pro nové uzly, musí být třídy odvozeny z objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase nebo Autodesk.AutoCAD.DynamoNodes.Object. Trasování je platné pouze v případě, že má trasovaný uzel výstup v podobě vytvořené třídy uzlu.

Použití metody trasování (CommonConstruct)

Funkce CommonConstruct je vytvořena v objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase i Autodesk.AutoCAD.DynamoNodes.Object.

Autodesk.AutoCAD.DynamoNodes.ObjectBase Autodesk.AutoCAD.DynamoNodes.Object

Vytvořit třídy k dědění můžete buď u objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase, nebo Autodesk.AutoCAD.DynamoNodes.Object. Výše uvedené metody lze volat tehdy, když vytváříte nové uzly podle zděděného vztahu. Všimněte si například následujícího uzlu PointGroup.CreateFromPoints.

Uzel vytvoří v aplikaci Civil 3D skupinu bodů ze seznamu bodů.

Objekt Autodesk.Civil.DatabaseServices.PointGroup definuje skupinu bodů v aplikaci Civil 3D odvozenou z objektu Autodesk.AutoCAD.DatabaseServices.Object. K zapouzdření typu skupiny bodů aplikace Civil 3D je nutné vytvořit novou třídu s názvem PointGroup odvozenou z objektu Autodesk.AutoCAD.DynamoNodes.Objectbase. Za účelem realizace mechanismu trasování lze ke třídě PointGroup přidat atribut DynamoServices.RegisterForTrace. Není to vyžadováno, protože aplikace Dynamo to podporuje ve výchozím nastavení, ale je to vhodná konvence při vytváření kódu.

Uzel CreateFromPoints lze nyní definovat ve třídě PointGroup. Díky zděděnému vztahu lze u objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase volat funkci CommonConstruct.

Metoda TNode je typ uzlu a je nutná k dědění objektu Autodesk.AutoCAD.DynamoNodes.ObjectBase.

V tomto příkladu:
TNode = CogoPoints.PointGroup
Objekt TObject je typ objektu aplikace AutoCAD nutný k dědění objektu Autodesk.AutoCAD.DatabaseServices.DBObject.
V tomto příkladu:
TObject = Autodesk.Civil.DatabaseServices.PointGroup
Funkce objectCreator vytvoří objekt. V tomto příkladu je to definováno jako vytvoření nové skupiny bodů.

Funkce objectUpdater aktualizuje objekt. V tomto příkladu je to definováno jako aktualizace existující skupiny bodů.

Funkce CommonConstruct se pokusí vyhledat existující objekty ze sledovaného identifikátoru. V případě nalezení se aktualizuje voláním metody objectUpdater s parametrem isExisting==true. Pokud se aktualizace nezdaří, metoda objectCreator vyvolá vytvoření nového objektu a následně použije parametr isExisting==false.

Funkce CommonConstruct se pokusí aktualizovat existující objekty v databázi pomocí stejné hodnoty sledovaného identifikátoru. Pokud se to nezdaří, vytvoří nový objekt. Pokud objekt nepodporuje aktualizace, může se vrátit parametr isExisting==false. To znamená, že vytvoříte nový objekt a odstraníte starý objekt. U funkce CommonConstruct se v tomto případě (pokud to bude možné) stále uchová stejná hodnota identifikátoru.

Úplné vzorové kódy jsou zobrazeny v souboru PointGroup.cs a metoda (CommonConstruct) v objektu Autodesk.AutoCAD.DynamoNodes.Object je popsána výše.

Použití šablony kódu trasování

Kód trasování můžete zapsat pomocí následující šablony. Třída nových uzlů však musí stále dědit objekt Autodesk.AutoCAD.DynamoNodes.Object nebo entitu Autodesk.AutoCAD.DynamoNodes.Entity.

Při realizaci kódu trasování v šabloně výše můžete vyplnit kód k vytvoření i kód k aktualizaci.

Metoda DocumentContext

Metoda DocumentContext zajišťuje získání zámku dokumentu pro přístup ke čtení/zápisu do databáze a při provádění transakcí u otevřených databázových objektů. Každý uzel, který se bude pokoušet o čtení nebo zápis u databázových objektů, bude muset použít výše uvedenou metodu.