C# .NET에서 AutoCAD 플러그인을 프로그래밍하고 있습니다. Table.IsReadEnabled
및 Table.IsWriteEnabled
을 true
으로 설정하는 방법이 필요합니다. 나는 addRow()
라는 방법이 여기에 표시가 있습니다AutoCAD eNotOpenForWrite
public void addRow(String[] data)
{
OpenCloseTransaction tr = doc.TransactionManager.StartOpenCloseTransaction();
DocumentLock docLock = doc.LockDocument();
using (tr)
using (docLock)
{
bool isRead = IsReadEnabled;
bool isWrite = IsWriteEnabled;
BlockTable bt = (BlockTable)tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[Autodesk.AutoCAD.DatabaseServices.BlockTableRecord.ModelSpace], OpenMode.ForWrite);
selectedRow++; //Sets the lowest empty row as the one to be modified
//Adding data to each cell
for (int i = 0; i < data.Length; i++)
{
Cells[selectedRow, i].SetValue(data[i], ParseOption.SetDefaultFormat);
}
GenerateLayout();
//Attempting to update database with new data
btr.AppendEntity(this);
tr.AddNewlyCreatedDBObject(this, true);
tr.Commit();
}
}
그것이 잘 작동하지만 tr.Commit
호출에도 OpenClose
트랜잭션 테이블의 IsReadEnabled
및 IsWriteEnabled
false로 설정합니다 내 테이블에 데이터를 추가하는 첫 번째 시간입니다. 이로 인해 AutoCAD는 테이블에 새로운 데이터 행을 추가하려고 할 때 충돌이 발생합니다. tr.commit
콜 이후에 쓰기 및 읽기를 다시 활성화하거나 쓰기 및 읽기가 비활성화되지 않도록 설정해야합니다.
이것을 허용으로 표시해야 하는가? – Mike
나는 3 시간 동안은 더 이상 할 수 없다는 것을 제외하고는 사랑하고 싶다. –