10/08/2015
Установка положения MText для каждого из масштабов аннотаций
Для аннотативного MText его положение можно менять при помощи ручек. Это положение специфическое для каждого из масштабов аннотаций чертежа. В данный момент не существует публичного API для установки положения аннотативного примитива для каждого масштаба программным путём. В качестве альтернативного метода можно использовать установку масштаба перед установкой положения. Этот пример кода проходит по коллекции масштабов и устанавливает позицию MText для каждого из масштабов.
Код - C#: [Выделить]
- Document doc =
- Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptEntityOptions peo
- = new PromptEntityOptions("\nВыберите MText : " );
- peo.SetRejectMessage("\nДолжен быть MText ..." );
- peo.AddAllowedClass(typeof (MText), true );
- PromptEntityResult per = ed.GetEntity(peo);
- if (per.Status != PromptStatus.OK)
- return ;
- ObjectId mtId = per.ObjectId;
- ObjectContextManager ocm = db.ObjectContextManager;
- ObjectContextCollection occ
- = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES" );
- if (ocm == null )
- return ;
- foreach (ObjectContext oc in occ)
- {
- using (Transaction tr
- = db.TransactionManager.StartTransaction())
- {
- MText mt
- = tr.GetObject(mtId, OpenMode.ForRead) as MText;
- Point3d pos = mt.Location;
- if (mt.HasContext(oc))
- {
- AnnotationScale annoScale
- = oc as AnnotationScale;
- if (annoScale != null )
- db.Cannoscale = annoScale;
- mt.UpgradeOpen();
- mt.Location = pos
- + Vector3d.XAxis * 3
- + Vector3d.YAxis * 3;
- }
- tr.Commit();
- }
- }
Вот две картинки показывающие зависящие от масштаба позиции текстов до и после изменения:
Автор перевода: Александр Ривилис
Обсуждение: http://adn-cis.org/forum/index.php?topic=2904
Опубликовано 10.08.2015