Макрос именования видов киррилицей

Автор Тема: Макрос именования видов киррилицей  (Прочитано 4307 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн filat18Автор темы

  • ADN OPEN
  • Сообщений: 25
  • Карма: 1
Нужен макрос для именования видов чертежа кириллицей.

Оффлайн filat18Автор темы

  • ADN OPEN
  • Сообщений: 25
  • Карма: 1
Все ж сел, сам написал... Не без изъянов - число имен видов ограничено, да и число листов чертежа..., но мало кто до таких величин доберется...:
Код - Visual Basic [Выбрать]
  1. Public Sub NameView()
  2.     Dim dDoc As DrawingDocument
  3.     Set dDoc = ThisApplication.ActiveDocument
  4.     Dim sSheet As Sheet
  5.     Dim oView As DrawingView
  6.     'Set sSheet = dDoc.Sheets.Item(1) 'Обращаемся к первому листу сохраненного чертежа
  7.    Dim oName As String '
  8.    Dim Arr(115) As String
  9.     Dim i As Long
  10.     Dim n As Long ' номер добавляемой буквы вида
  11.    Dim nList As Long ' номер
  12.    Dim ArrS(100) As String ' Название листов в чертеже
  13.    n = 0
  14.     For Each sSheet In dDoc.Sheets
  15.         ArrS(n) = sSheet.Name
  16.         n = n + 1
  17.     Next
  18.     n = 0
  19.     For i = 192 To 223
  20.         Debug.Print (Chr(i))
  21.         If Chr(i) <> "З" And Chr(i) <> "Ь" And Chr(i) <> "Ъ" Then
  22.             Arr(n) = (Chr(i))
  23.             n = n + 1
  24.         End If
  25.     Next
  26.     For i = 192 To 223
  27.         If Chr(i) <> "З" And Chr(i) <> "Ь" And Chr(i) <> "Ъ" Then
  28.             Arr(n) = (Chr(i)) & "1"
  29.             n = n + 1
  30.         End If
  31.     Next
  32.     For i = 192 To 223
  33.         If Chr(i) <> "З" And Chr(i) <> "Ь" And Chr(i) <> "Ъ" Then
  34.             Arr(n) = (Chr(i)) & "2"
  35.             n = n + 1
  36.         End If
  37.     Next
  38.     For i = 192 To 223
  39.         If Chr(i) <> "З" And Chr(i) <> "Ь" And Chr(i) <> "Ъ" Then
  40.             Arr(n) = (Chr(i)) & "3"
  41.             n = n + 1
  42.         End If
  43.     Next
  44.     n = 0
  45.     For Each sSheet In dDoc.Sheets
  46.         For Each oView In sSheet.DrawingViews
  47.             If oView.ViewType <> kSectionDrawingViewType Or oView.ViewType <> kDetailDrawingViewType Or oView.ViewType <> kAuxiliaryDrawingViewType Then
  48.                 If oView.ShowLabel = True Then 'Len(oView.Name) < 3
  49.                    If sSheet.Name <> oView.ParentView.Parent.Name Then
  50.                          For i = 0 To dDoc.Sheets.Count
  51.                             nList = 0
  52.                             If ArrS(i) <> "" Then
  53.                                 If ArrS(i) = oView.ParentView.Parent.Name Then
  54.                                     nList = i + 1
  55.                                     Exit For
  56.                                 End If
  57.                             End If
  58.                            
  59.                          Next
  60.                          If nList <> 0 Then
  61.                             Dim oText As String
  62.                             oText = oView.Label.FormattedText
  63.                             If Right(oText, 1) = ")" Then
  64.                                 oView.Label.FormattedText = oView.Label.FormattedText & "(" & nList & ")"
  65.                             Else
  66.                                 oView.Label.FormattedText = oView.Label.FormattedText & " (" & nList & ")"
  67.                             End If
  68.                          End If
  69.                     End If
  70.                     oView.Name = Arr(n)
  71.                     n = n + 1
  72.                 End If
  73.             End If
  74.         Next
  75.     Next
  76. End Sub

Оффлайн filat18Автор темы

  • ADN OPEN
  • Сообщений: 25
  • Карма: 1
Не пойму, откуда взялся тренд номер листа в конце имени вида? В ГОСТе ничего об этом не нахожу...

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Свой я макрос так и не нашел, утром вот сел посмотреть а ты уже сам написал
Я помню что делал как то так:
Код - Visual Basic [Выбрать]
  1. Sub rename()
  2. Dim DrawDoc As DrawingDocument: Set DrawDoc = ThisApplication.ActiveDocument
  3. Dim DrawSheet As sheet: Set DrawSheet = DrawDoc.ActiveSheet
  4.  
  5. Dim n(1 To 4) As String
  6.  
  7. n(1) = "А"
  8. n(2) = "Б"
  9. n(3) = "С"
  10. n(4) = "Д"
  11. n(5) = "А1"
  12. n(6) = "Б1"
  13. n(7) = "С1"
  14. n(8) = "Д1"
  15.  
  16. Dim i As Integer
  17.  
  18. For i = 1 To DrawSheet.DrawingViews.Count
  19.  
  20. Dim DrawView As DrawingView: Set DrawView = DrawSheet.DrawingViews(i)
  21. DrawView.name = n(i)
  22.  
  23. Next
  24.  
  25. End Sub
  26.  

У тебя видимо очень много видов на чертеже проекта, у меня по скромнее

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Не пойму, откуда взялся тренд номер листа в конце имени вида? В ГОСТе ничего об этом не нахожу...
Это если ты со строителями бы поработал, у них там везде так, иначе в проекте где много листов не разберешся.

Оффлайн filat18Автор темы

  • ADN OPEN
  • Сообщений: 25
  • Карма: 1
Я понимаю, что вещь нужная, в отдельных случаях. Но "возводить ее в обязанность!" - хотелось бы понимать на основании чего?

Оффлайн filat18Автор темы

  • ADN OPEN
  • Сообщений: 25
  • Карма: 1
Свой я макрос так и не нашел, утром вот сел посмотреть а ты уже сам написал
да я спрашивал, потому что лень с нуля писать было... а потом подумал - почему бы и нет!? все ж разминка для ума

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Я понимаю, что вещь нужная, в отдельных случаях. Но "возводить ее в обязанность!" - хотелось бы понимать на основании чего?
Ну ты сам же говоришь: вещь нужная, потому как удобно ориентироваться в листах и видах