Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy CAD Studio [www.cadforum.cz]
Česky Slovensky English Deutsch
Přihlášení:
▶ Registrace

 právě nás čte: 5057 

Vývojové prostředky AutoCADu

Použití .NET a ObjectARX v AutoCADu

Vývoj aplikací pro AutoCAD - přehled API, LISP

Vývojové prostředky AutoCADu AutoCAD API

Visual LISP, Visual Basic/VBA, Java, ObjectARX, ActiveX, Skripty
České vysoké učení technické Praha, Fakulta elektrotechnická
Bc. Srník Albert, albert.srnik@mybox.cz

Vykreslení kružnice

Stažení zdrojového kódu

V tomto příkladu vytvoříme ‘Employee object’ (kružnici) uvnitř blokové definice jménem ‘EmployeeBlock’, která sídlí v ‘EmployeeLayer’ která má blokovou referenci asociovanou s nim, vloženou v Model Space.

1) Vytvoříme příkaz s názvem ‘CREATE’, která volá funkci CreateEmployee(). Uvnitř této funkce vložíme jednu kružnici do MODELSPACE na pozici 100,100,0 s poloměrem 20.

[CommandMethod("CREATE")]
public void CreateCircle()


2) Nadeklarujeme objekty, které použijeme. Circle je kružnice, kterou přidáme do ModelSpace. Abychom mohli vložit kružnici, musíme otevřít ModelSpace pomocí BlockTableRecord. Veškerou interakci s databází zapouzdříme v této funkci objektem Transaction.

Circle circle;
BlockTableRecord btr;
BlockTable bt;
Transaction trans;


3) Vymezíme hranice této interakce členem StartTransaction() z Transaction Manageru a vytvoříme kružnici. trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();

circle = new Circle(new Point3d(100, 100, 0), Vector3d.ZAxis, 20);
bt = (BlockTable)trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead);
btr = (BlockTableRecord)trans.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId, OpenMode.ForWrite);


4) Použijeme btr referenci pro přidání naší kružnice a ujistíme se, že transakce o tom ví. Poté transakci spustíme a když je vše hotovo, zrušíme ji.

btr.AppendEntity(circle);
trans.AddNewlyCreatedDBObject(circle,true);//
trans.Commit();
trans.Dispose();


5) Spustíme funkci, abychom viděli, jak funguje. Měla by vytvořit bílou kružnici s poloměrem 20 na pozici 100, 100, 0.