24/10/2013
Добавление поля, содержащего данные другого примитива
Следующий код показывает как можно добавить поле, которое показывает данные другого примитива (в данном случае площадь полилинии). От пользователя требуется выбрать полилинию и местоположение, в котором создается примитив MText. Этот MText и будет показывать площадь выбранной полилинии.
Код - C#: [Выделить]
- [CommandMethod("AddAreaField")]
- public void AddAreaField()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptEntityOptions options =
- new PromptEntityOptions("\nВыберите полилинию ");
- options.SetRejectMessage("\nЭто не полилиния ");
- options.AddAllowedClass(
- typeof(Autodesk.AutoCAD.DatabaseServices.Polyline), false);
- PromptEntityResult acSSPrompt = ed.GetEntity(options);
- if (acSSPrompt.Status != PromptStatus.OK)
- return;
- PromptPointOptions ppo = new
- PromptPointOptions("\nУкажите точку вставки: ");
- PromptPointResult ppr = ed.GetPoint(ppo);
- if (ppr.Status != PromptStatus.OK)
- return;
- using (Transaction Tx = db.TransactionManager.StartTransaction())
- {
- //%<\AcObjProp Object(%<\_ObjId 2128995688>%).Area \f "%lu2">%
- string strId = acSSPrompt.ObjectId.OldIdPtr.ToString();
- string str1 = "%<\\AcObjProp Object(%<\\_ObjId ";
- string str2 = ">%).Area \\f \"%lu2\">%";
- string format = str1 + strId + str2;
- MText text = new MText();
- text.Location = ppr.Value;
- ObjectId ModelSpaceId =
- SymbolUtilityServices.GetBlockModelSpaceId(db);
- BlockTableRecord record = Tx.GetObject(ModelSpaceId,
- OpenMode.ForWrite) as BlockTableRecord;
- record.AppendEntity(text);
- Tx.AddNewlyCreatedDBObject(text, true);
- Field entField =
- new Field(format);
- entField.Evaluate();
- text.SetField(entField);
- Tx.AddNewlyCreatedDBObject(entField, true);
- Tx.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/07/adding-field-with-entity-data.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=286
Опубликовано 24.10.2013Отредактировано 25.10.2013 в 02:22:31