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

ADN Club => AutoCAD .NET API => Тема начата: Захаров Максим от 13-12-2016, 09:17:01

Название: Прочитать все стили мультивысок
Отправлено: Захаров Максим от 13-12-2016, 09:17:01
Здравствуйте.
Помогите прочитать стили мультивыносок, которые содержатся в активном чертеже.
Спасибо.
Название: Re: Прочитать все стили мультивысок
Отправлено: Александр Ривилис от 13-12-2016, 09:51:54
http://adndevblog.typepad.com/autocad/2012/07/edit-mleader-style.html
http://adndevblog.typepad.com/autocad/2012/07/adding-mleader-style-.html
Ну и картинка для лучшего понимания:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F96770%2F7842324.7%2F0_1475a5_12304a1d_orig.png&hash=7756f02211d5ceb932686855e4faccc6)

Название: Re: Прочитать все стили мультивысок
Отправлено: Захаров Максим от 13-12-2016, 10:17:02
Спасибо Александр. Но эти примеры я видел, и попытался сделать аналог. Но в этих примерах указывается в качестве имени уже известный стиль мультивыноски, а как получить ВСЕ названия стилей из активного чертежа. Я попытался как то так:
Код - vb.net [Выбрать]
  1. Try
  2.             Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
  3.                 Dim mlstyles As DBDictionary = acTrans.GetObject(acCurDb.MLStyleDictionaryId, OpenMode.ForRead)
  4.  
  5.                 'For i As Integer = 0 To mlstyles.Count - 1
  6.                 '    Dim MLeader1 As DBDictionary = mlstyles.Item()
  7.  
  8.                 '    ReDim Preserve MLeaderStyleArray(Count)
  9.                 '    MLeaderStyleArray(Count) = MLeader1.Name
  10.                 '    Count += 1
  11.                 'Next i
  12.                 acTrans.Commit()
  13.             End Using
  14.         Catch
Название: Re: Прочитать все стили мультивысок
Отправлено: Александр Ривилис от 13-12-2016, 11:55:10
Код - vb.net [Выбрать]
  1. <CommandMethod("ListMLeaderStyles")> _
  2. Public Shared Sub ListMLeaderStyles()
  3.     Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  4.     Dim acCurDb As Database = acDoc.Database
  5.  
  6.     Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
  7.         Dim mlstyles As DBDictionary = _
  8.             acTrans.GetObject(acCurDb.MLStyleDictionaryId, OpenMode.ForRead)
  9.  
  10.         acDoc.Editor.WriteMessage(vbLf & "MLeaderStyles:")
  11.  
  12.         For Each item As DBDictionaryEntry In mlstyles
  13.             acDoc.Editor.WriteMessage(vbLf & "  " & item.Key)
  14.         Next
  15.  
  16.         acTrans.Commit()
  17.     End Using
  18. End Sub
Название: Re: Прочитать все стили мультивысок
Отправлено: Захаров Максим от 13-12-2016, 14:05:00
Спасибо за помощь.
Ошибочка не большая, вот так работает
Код - vb.net [Выбрать]
  1. Try
  2.             Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
  3.                 Dim mlstyles As DBDictionary = acTrans.GetObject(acCurDb.MLeaderStyleDictionaryId, OpenMode.ForRead)
  4.                 For Each item As DBDictionaryEntry In mlstyles
  5.                     ReDim Preserve MLeaderStyleArray(Count)
  6.                     MLeaderStyleArray(Count) = item.Key
  7.                     Count += 1
  8.                 Next
  9.                 acTrans.Commit()
  10.             End Using
  11.         Catch
  12.             MsgBox("Функция не смогла занести все стили мультивыносок в массив!!!")
  13.             Count = 0
  14.         End Try