09/06/2014
Создание анонимного слоя
Чтобы создать анонимный слой необходимо вызвать метод AcDbLayerTableRecord::setIsHidden()как показано ниже в коде. Анонимные слои не видны в диспетчере слоёв и соответственно пользователь не может редактировать/удалить анонимный слой.
Код - C++: [Выделить]
- void CreateAnonymousLayer()
- {
- AcDbObjectId layerId = AcDbObjectId::kNull;
- AcDbLayerTable* lTable = NULL;
- AcDbDatabase *pDb = acdbHostApplicationServices()->
- workingDatabase();
- Acad::ErrorStatus es =
- pDb->getSymbolTable(lTable, AcDb::kForWrite);
- if(Acad::eOk == es && lTable)
- {
- AcDbLayerTableRecord* lTblRec =
- new AcDbLayerTableRecord();
- lTblRec->setName(ACRX_T("TEST"));
- lTblRec->setIsHidden(true);
- if (lTable->add(layerId, lTblRec) != Acad::eOk)
- ::acutPrintf(_T("Ошибка создания слоя \n"));
- else
- lTblRec->close();
- lTable->close();
- }
- }
AutoCAD .NET API
Код - C#: [Выделить]
- [CommandMethod("Hiddenlayer")]
- public void Hiddenlayer()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- using (Transaction tr =
- db.TransactionManager.StartTransaction())
- {
- LayerTable table =
- tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
- LayerTableRecord Anonymous = new LayerTableRecord();
- Anonymous.Name = "Test";
- Anonymous.IsHidden = true;
- table.Add(Anonymous);
- tr.AddNewlyCreatedDBObject(Anonymous, true);
- tr.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/05/creating-a-anonymous-layer.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=792
Опубликовано 09.06.2014Отредактировано 11.06.2014 в 03:17:19