Példa API-parancsfájlra: COGO pont létrehozása

Új csomópontokat hoz létre az Autodesk Dynamo for Civil 3D programban pontok létrehozásához, pontok pontcsoporthoz adásához és felület létrehozásához pontcsoportokból.

Dynamo-mintaparancsfájl: CoGoPoints.dyn

Mintaprojekt: CoGoPoints.dwg

  1. Hozzon létre egy új C#-projektet CoGoPoints osztálykönyvtár (.NET-keretrendszer) néven a .NET-keretrendszer 4.7-es verziójával.
  2. Adja hozzá a projekthez a Point.cs, PointGroup.cs és Surface.cs fájlokat.
  3. Adja hozzá a fenti fájlokhoz tartozó referenciákat (például AeccDbMgd.dll stb.) a Civil 3D telepítőjének útvonaláról.
  4. Hozza létre a megoldást, majd hozza létre a CoGoPoints.dll fájlt.
  5. Futtassa a Civil 3D-t, és nyissa meg a CoGoPoints.dwg fájlt.
  6. Kattintson a Kezelés lap Visual Programming (Vizuális programozás) panel Dynamo elemre.
  7. Válassza a Fájl Elemtár importálása lehetőséget, és válassza ki a CoGoPoints.dll fájlt.

    A CoGoPoints.dll fájl importálásakor létrehozott csomópontok a következő ábrán láthatók.

  8. Nyissa meg és futtassa a CoGoPoints.dyn parancsfájlt.

    COGO pontok jönnek létre a rajzban és lesznek hozzáadva egy pontcsoporthoz, és egy felület jön létre a pontcsoportból.

A Dynamóban két osztály biztosít lehetőséget új csomópontok létrehozására és nyomkövetési mechanizmus hozzáadására az új csomópontokhoz.
  1. Autodesk.AutoCAD.DynamoNodes.ObjectBase: Az Autodesk.AutoCAD.DatabaseServices.DBObject beágyazását biztosítja
  2. Autodesk.AutoCAD.DynamoNodes.Object: Az Autodesk.AutoCAD.DynamoNodes.ObjectBase objektumból van származtatva, kibővíti a tulajdonságokat vagy funkciókat az Autodesk.AutoCAD.DatabaseServices.Object objektumnak megfelelően

A Dynamo kétféle lehetőséget kínál a nyomkövetési mechanizmus megvalósítására. Az egyik lehetőség a meglévő módszer (CommonConstruct) használata új csomópontok létrehozásakor. A másik lehetőség a követési kód írása sablon használatával.

A nyomkövetési mechanizmus új csomópontok esetében való létrehozásához az osztályokat a következők valamelyikéből kell származtatni: Autodesk.AutoCAD.DynamoNodes.ObjectBase vagy Autodesk.AutoCAD.DynamoNodes.Object. A követés érvényesítéséhez a követett csomópontnak rendelkeznie kell a csomópont létrehozott osztályának egyik kimenetével.

Nyomkövetési módszer (CommonConstruct) használata

A CommonConstruct funkció az Autodesk.AutoCAD.DynamoNodes.ObjectBase és az Autodesk.AutoCAD.DynamoNodes.Object objektumban is létre lesz hozva.

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

Létrehozhat osztályokat, amelyek öröklik az Autodesk.AutoCAD.DynamoNodes.ObjectBase vagy az Autodesk.AutoCAD.DynamoNodes.Object elemet. Új csomópontok létrehozásakor a fenti módszerek az örökölt kapcsolatnak megfelelően hívhatók meg. Figyelje meg például az alábbi PointGroup.CreateFromPoints csomópontot.

Ez a csomópont pontok listájából hoz létre pontcsoportot a Civil 3D-ben.

Az Autodesk.Civil.DatabaseServices.PointGroup meghatároz egy, az Autodesk.AutoCAD.DatabaseServices.Object elemből származtatott pontcsoportot a Civil 3D-ben. Létre kell hozni egy új, az Autodesk.AutoCAD.DynamoNodes.Objectbase objektumból származtatott osztályt PointGroup néven a Civil 3D-pontcsoporttípus beágyazásához. A nyomkövetési mechanizmus létrehozásához a DynamoServices.RegisterForTrace attribútum hozzáadható a PointGroup osztályhoz. Ez nem kötelező, mivel a Dynamo alapértelmezés szerint is támogatja, de érdemes betartani ezt a kódolási konvenciót.

A CreateFromPoints csomópont ettől kezdve meghatározható a PointGroup osztályban. A beépített kapcsolat miatt a CommonConstruct meghívható az Autodesk.AutoCAD.DynamoNodes.ObjectBase objektumban.

A TNode metódus a csomópont típusa, és az Autodesk.AutoCAD.DynamoNodes.ObjectBase örökléséhez szükséges.

Ebben a példában:
TNode = CogoPoints.PointGroup
A TObject az Autodesk.AutoCAD.DatabaseServices.DBObject örökléséhez szükséges AutoCAD-objektum típusa.
Ebben a példában:
TObject = Autodesk.Civil.DatabaseServices.PointGroup
Az objectCreator funkció létrehoz egy objektumot. Ebben a példában ez a művelet egy új pontcsoport létrehozásaként van meghatározva.

Az objectUpdater funkció frissít egy objektumot. Ebben a példában ez a művelet egy meglévő pontcsoport frissítéseként van meghatározva.

A CommonConstruct függvény a követett kezelőből próbálja meg megkeresni a meglévő objektumokat. Ha ezek megtalálhatók, a frissítéshez meghívja az objectUpdater függvényt az isExisting==true paraméterrel. Ha a frissítés sikertelen, új objektumot hoz létre az objectCreator függvény meghívásával, majd meghívja az objectUpdater függvényt az isExisting==false paraméterrel.

A CommonConstruct függvény megpróbálja frissíteni a megegyező követett kezelő értékű létező objektumokat az adatbázisban. Ha ez sikertelen, létrehoz egy új objektumot. Ha az objektum nem támogatja a frissítéseket, az isExisting==false értéket adhatja vissza. Ez azt jelenti, hogy létre fog hozni egy új objektumot, és törli a régit. A CommonConstruct megpróbálja a régi kezelő értékét használni.

A teljes mintakód megtalálható a PointGroup.cs fájlban, és az Autodesk.AutoCAD.DynamoNodes.Object CommonConstruct metódusa a fent leírt módon működik.

Követésikód-sablon használata

Az alábbi sablonnal írhat követési kódot. Az új csomópontok osztályának azonban továbbra is örökölnie kell a következők valamelyikét: Autodesk.AutoCAD.DynamoNodes.Object vagy Autodesk.AutoCAD.DynamoNodes.Entity.

A követési kódnak a fenti sablonban való létrehozásához megadhatja a létrehozási és a frissítési kódot is.

Információk a DocumentContextről

A DocumentContext biztosítja az adatbázis írásához/olvasásához szükséges dokumentumzár és adatbázis-objektumok megnyitásához szükséges tranzakció beszerzését. Minden olyan csomópontnak, amely adatbázis-objektumokat kíván olvasni vagy írni, ezt a metódust kell használnia.