第
打開Lab
在這一章中
這一章的重點是在AutoCAD中訪問數據庫的基礎
[CommandMethod(
public void createCircle()
{
//首先聲明我們要使用的對象
Circle circle; //這個是我們要加入到模型空間的圓
BlockTableRecord btr;//要加入圓
BlockTable bt; //要打開模型空間
//我們使用一個名為
Transaction trans;
//使用TransactionManager的StartTransaction()成員來開始事務處理
trans = HostApplicationServices
//現在創建圓……請仔細看這些參數——注意創建Point
circle = new Circle(new Point
bt = (BlockTable)trans
//使用當前的空間Id來獲取塊表記錄——注意我們是打開它用來寫入
btr = (BlockTableRecord)trans
//現在使用btr對象來加入圓
btr
trans
//一旦完成以上操作
trans
//…然後銷毀事務處理
trans
}
請仔細閱讀一下上面的代碼塊的結構
注意
運行這個函數來看看它是否可行
Database db = HostApplicationServices
使用這個變量來代替在代碼中出現的HostApplicationServices
[CommandMethod(
public void CREATEEMPLOYEE()
{
Database db = HostApplicationServices
Transaction trans = db
try
{
Circle circle = new Circle(new Point
BlockTable bt = (BlockTable)trans
BlockTableRecord btr = (BlockTableRecord)trans
btr
trans
trans
}
catch
{
ed
}
finally
{
trans
}
}
End Function
運行你的代碼來進行測試……
上面的catch塊只顯示一個錯誤信息
所以基於上面的分析
多行文本實體
中心點應該與圓心的創建一樣
(建議
多行文本的內容可以是你的名字
橢圓(提示
法向量應該沿著Z軸(請查看Vector
主軸設為Vector
半徑比例設為
橢圓還必須閉合(也就是說
運行你的代碼來進行測試……應該可以生成一個圓
注意
這裡還要注意的是Dispose()作用於封裝的非托管類對象的方式取決於對象是否是數據庫駐留對象
<!
<!
這個函數應該檢查是否這個層已經存在
public ObjectId CreateLayer()
{
ObjectId layerId; //它返回函數的值
Database db = HostApplicationServices
Transaction trans = db
//首先取得層表……
LayerTable lt = (LayerTable)trans
//檢查EmployeeLayer層是否存在……
if (lt
{
layerId = lt[
}
else
{
//如果EmployeeLayer層不存在
LayerTableRecord ltr = new LayerTableRecord();
ltr
ltr
layerId = lt
trans
}
trans
trans
return layerId;
}
是不是覺得這個函數的基本結構與在模型空間加入實體的代碼比較類似?訪問數據庫的方法都是這樣的
ltr
注意
<!
例如
運行代碼來查看
圓為紅色-
橢圓為綠色-
文本為黃色-
運行代碼
首先把CreateEmployee函數的名字改為CreateEmployeeDefinition()
加入以下代碼來創建一個獨立的塊
BlockTableRecord newBtr = new BlockTableRecord();
newBtr
newBtrId = bt
trans
現在運行代碼
下面是你要遵循的最基本的步驟
<!
<!
<!
<!
提示
try
{
//獲取BlockTable 對象
BlockTable bt = (BlockTable)trans
if ((bt
{
newBtrId =bt[
}
else
{
…
<!
<!
From:http://tw.wingwit.com/Article/program/net/201311/12425.html