Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
В этот список можно было бы внести книгу Мартина Фаулера "Шаблоны корпоративных приложений", а также книгу Шевчука/Охрименко/Касьянова Design Patterns via C# (Приёмы объектно - ориентированного проектирования)
2
VBA / Re: Вставка статичного блока в ячейку таблицы Autocad
« Последний ответ от pavka_97 18-01-2018, 22:45:59 »
ssName = "ssName".
Дьявол кроется в деталях. Заработало абсолютно все. Я был в шаге от отчаяния:). Спасибо вам огромное за участие, пошел усложнять дальше:)
3
pavka_97
Посмотрел я более внимательно код. Так он у тебя и не должен работать. Ты не задаёшь значение ssName. И так как обработчик ошибок блокирует все ошибки, то ты и не видишь что код ничего не делает.
Например, твой ChangeValue должен выглядеть как-то так:

Код - Visual Basic [Выбрать]
  1. Sub ChangeValue()
  2.   Dim ssName As String
  3.   Dim ssetobj As AcadSelectionSet
  4.   Dim blk2 As AcadBlockReference
  5.   Dim Attributes As Variant
  6.   ssName = "ssName" ' задали значение ssName
  7.  On Error Resume Next
  8.   ThisDrawing.SelectionSets.Item(ssName).Delete
  9.   On Error GoTo 0
  10.   Set ssetobj = ThisDrawing.SelectionSets.Add(ssName)
  11.  
  12.   Dim gpCode(0 To 1) As Integer
  13.   Dim dataValue(0 To 1) As Variant
  14.  
  15.   gpCode(0) = 0: dataValue(0) = "INSERT"
  16.   gpCode(1) = 2: dataValue(1) = "111"
  17.   ssetobj.Select acSelectionSetAll, , , gpCode, dataValue
  18.      
  19.   For Each blk2 In ssetobj
  20.      
  21.      Attributes = blk2.GetAttributes
  22.      Attributes(0).TextString = "4"
  23.   Next
  24.        
  25. End Sub
4
P.s.Как запустить код под отладчиком и проанализировать то что он покажет я пока не умею :-[.
Тогда как минимум печатай все промежуточные значения.
5
VBA / Re: Вставка статичного блока в ячейку таблицы Autocad
« Последний ответ от pavka_97 18-01-2018, 18:55:30 »
Я прогнозировал выполнение так: имеется таблица в одной ячейке которой значение "1", имеется статичный блок с одним атрибутом у которого значение (text string) скажем "2", впоследствии оно меняется на значение "1",при запуске кода сопоставляются значение ячейки и значение атрибута блока и этот блок вставляется в определенную ячейку (может это и бредовая идея конечно). Но это сейчас это уже не столь важно.
 Мне непонятно почему не выполняется отдельно кусок кода где извлекается атрибут из одной конкретной вставки блока и его text string записывается в переменную:
Код - Visual Basic [Выбрать]
  1. Sub Attinvar()
  2.       Dim ssName As String
  3.       Dim ssetobj As AcadSelectionSet
  4.       Dim blk2 As AcadBlockReference
  5.       Dim Attributes As Variant
  6.          
  7.          On Error Resume Next
  8.          ThisDrawing.SelectionSets.Item(ssName).Delete
  9.          Set ssetobj = ThisDrawing.SelectionSets.Add(ssName)
  10.      
  11.       Dim gpCode(0 To 1) As Integer
  12.       Dim dataValue(0 To 1) As Variant
  13.      
  14.          gpCode(0) = 0: dataValue(0) = "INSERT"
  15.          gpCode(1) = 2: dataValue(1) = "111"
  16.          ssetobj.Select acSelectionSetAll, , , gpCode, dataValue
  17.          
  18.          For Each blk2 In ssetobj
  19.          
  20.          Attributes = blk2.GetAttributes
  21.          t1 = Attributes(0).TextString
  22.  Next
  23. End Sub
или наоборот требуется изменить значение самого text string:
Код - Visual Basic [Выбрать]
  1. Sub ChangeValue()      
  2.       Dim ssName As String
  3.       Dim ssetobj As AcadSelectionSet
  4.       Dim blk2 As AcadBlockReference
  5.       Dim Attributes As Variant
  6.  
  7.          On Error Resume Next
  8.          ThisDrawing.SelectionSets.Item(ssName).Delete
  9.          Set ssetobj = ThisDrawing.SelectionSets.Add(ssName)
  10.      
  11.       Dim gpCode(0 To 1) As Integer
  12.       Dim dataValue(0 To 1) As Variant
  13.      
  14.          gpCode(0) = 0: dataValue(0) = "INSERT"
  15.          gpCode(1) = 2: dataValue(1) = "111"
  16.          ssetobj.Select acSelectionSetAll, , , gpCode, dataValue
  17.          
  18.          For Each blk2 In ssetobj
  19.          
  20.          Attributes = blk2.GetAttributes
  21.          Attributes(0).TextString = "4"
  22. Next
  23. End Sub
Может что то нужно обновить, синхронизировать,регенерировать чтобы увидеть изменения (если код верный) или у меня вообще фундаментальные ошибки?

P.s.Как запустить код под отладчиком и проанализировать то что он покажет я пока не умею :-[.
6
pavka_97
Извини, но тут даже на уровне идеи какая-то глупость. Причем тут значение атрибута вставленного отдельно блока к появлению или не появлению в ячейке таблицы блока?
И вообще запусти код под отладчиком и посмотри что у тебя получается.
7
VBA / Re: Вставка статичного блока в ячейку таблицы Autocad
« Последний ответ от pavka_97 18-01-2018, 15:18:28 »
Матчасть конечно хромает, это да. Добавил фильтр и вставку, но снова что то не так.
Код - Visual Basic [Выбрать]
  1. Sub BlockIntoAcadtable2()
  2.       Dim ssName As String
  3.       Dim ssetobj As AcadSelectionSet
  4.       Dim blk2 As AcadBlockReference
  5.       Dim name1 As String
  6.       Dim block As AcadBlock
  7.       Dim t1 As String
  8.       Dim n1 As String
  9.       Dim ID As LONG_PTR
  10.       Dim Attributes As Variant
  11.       Dim table As AcadTable
  12.      
  13.          On Error Resume Next
  14.          
  15.          name1 = "111"
  16.          Set block = ThisDrawing.Blocks.Item(name1)
  17.          ID = block.ObjectID
  18.          
  19.          ThisDrawing.SelectionSets.Item(ssName).Delete
  20.          Set ssetobj = ThisDrawing.SelectionSets.Add(ssName)
  21.      
  22.       Dim gpCode(0 To 1) As Integer
  23.       Dim dataValue(0 To 1) As Variant
  24.      
  25.          gpCode(0) = 0: dataValue(0) = "INSERT"
  26.          gpCode(1) = 2: dataValue(1) = "111"
  27.          ssetobj.Select acSelectionSetAll, , , gpCode, dataValue
  28.          
  29.          For Each blk2 In ssetobj
  30.          
  31.          Attributes = blk2.GetAttributes
  32.          t1 = Attributes(0).TextString
  33.          
  34.          Next
  35.                                    
  36.          ThisDrawing.SelectionSets("ss").Delete
  37.          Set ss = ThisDrawing.SelectionSets.Add("ss")
  38.          ss.SelectOnScreen
  39.          
  40.          For Each table In ss
  41.          n1 = table.GetCellValue(7, 0)
  42.          If n1 = t1 Then
  43.          table.SetBlockTableRecordId 7, 5, ID, True
  44.          End If
  45.       Next
  46. End Sub
8
Абсолютно нормально. Почитай про precompiled headers.
Теперь понятно :)
Спасибо!
9
Коллеги, а это нормально, что после перестроения в проекте есть файлы:
\OPMNetExt.VC.db
\ipch\OPMNETEXT-3f21b66b\ASDKOPMNETEXT-ef141531.ipch
Соответственно 144 и 120 Мб? Причем сама итоговая DLL весит всего 54 Кб.
Абсолютно нормально. Почитай про precompiled headers.
10
Коллеги, а это нормально, что после перестроения в проекте есть файлы:
\OPMNetExt.VC.db
\ipch\OPMNETEXT-3f21b66b\ASDKOPMNETEXT-ef141531.ipch
Соответственно 144 и 120 Мб? Причем сама итоговая DLL весит всего 54 Кб.
Страницы: [1] 2 3 ... 10