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