ADN Open CIS
Сообщество программистов Autodesk в СНГ

31/07/2013

Как поместить текст в нужное место, если текст имеет выравнивание?

Мы хотим поместить текст в определенное место с выравниванием СЦ (Середина-Центр). Но текст не помещается в нужно место несмотря на то, что выравнивание задано правильно.

Если вы хотите установить местоположение текста путем изменения его точка выравнивания, пожалуйста, воспользуйтесь кодом:

oTextEnt.AlignmentPoint = newPoint

Если вы хотите изменить положение текста, когда текст выровнен, пожалуйста воспользуйтесь следующим кодом

Код - VB.NET: [Выделить]
  1. Sub TextPosition()
  2.  
  3.    Dim doc As Document = Autodesk.AutoCAD. _
  4.         ApplicationServices.Application. _
  5.         DocumentManager.MdiActiveDocument
  6.  
  7.    Dim ed as Editor = doc.Editor
  8.    Dim selection As PromptSelectionResult = ed.GetSelection()
  9.  
  10.     Dim tm = Autodesk.AutoCAD.ApplicationServices.Application. _
  11.         DocumentManager.MdiActiveDocument.TransactionManager
  12.  
  13.     Dim objectID As ObjectId
  14.  
  15.     Dim ta As Transaction = tm.StartTransaction()
  16.  
  17.     Try
  18.         For Each objectID In selection.Value.GetObjectIds()
  19.             Dim  ent As Entity= tm.GetObject( _
  20.                 objectID, OpenMode.ForWrite)
  21.             If TypeOf ent is DBText then
  22.                Dim oText As DBText = ent
  23.                Dim textPosition = oText.Position
  24.                Dim transMatrix As Matrix3d  = _
  25.                    Matrix3d.Identity
  26.                Dim newPosition As New Point3d(10, 10, 10)
  27.                Dim transVec As Vector3d =  _
  28.                    newPosition -
  29.                    textPosition
  30.                ' трансформируем текст полностью
  31.                ' так чтобы и точка вставки и точка выравнивания
  32.                ' преобразовались.
  33.                transMatrix = _
  34.                    transMatrix.Displacement(transVec)
  35.               oText.TransformBy(transMatrix)
  36.             End If                           
  37.        Next     
  38.         ta.Commit()
  39.     Catch ex As System.Exception
  40.         MsgBox(ex.Message)
  41.     Finally
  42.         ta.Dispose()
  43.     End Try
  44.  
  45. End Sub

 

Источник: http://adndevblog.typepad.com/autocad/2012/05/how-to-set-a-text-to-a-specific-location-if-the-text-has-justification.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=141.0

Опубликовано 31.07.2013
Отредактировано 04.08.2013 в 17:26:42