Построение выноски из excel
Здравствуйте Уважаемые программисты!
Подскажите пожалуйста, как через vba-excel обратиться к объектам "Позиционной выноски": ?
- точка позиционирования
- 1строка
- 2строка
Задача:
в Excel есть:
-столбцы A B - соответственно с координатами x y для точки выноски
-столбец C D - 1 и 2 строки выноски.
Нужно автоматизировать построение позиционной выноски.
Ответы
-
както так надо)
Sub note()
Set SPDS = CreateObject("McCOM2.Server")
Set note1 = SPDS.CreateObject("McCOM2.SymSpdsNotePosition")
note1.ViewScale = SPDS.ViewScale
note1.Text = "Первая строка"
note1.Footer = "Вторая строка" note1.Leaders.Add Array(100, 100)
note1.TextPosition = Array(20, 30)
note1.Place False, False End Subupd отдельное "спасибо" за редактор сообщений форума
0 -
Ниже код для вставки блока с 2мя атрибутами, но хотелось бы Позиционной выноской?
И возможно ли в NanoCAD (не СПДС), т.к. в нем тоже есть объект Позиционная выноска?
Sub NANO_Block_2attrib()
Dim wrksht As Worksheet
Dim lastRow As Long
Dim firstRow As Long
Dim blockRefObj As AcadBlockReference
Dim Attr As Variant
Dim i As Long
Dim j As LongOn Error GoTo ERRORHANDLER
Set app = GetObject(, "nanoCAD.Application")ERRORHANDLER:
If Err.Description <> "" Then
Set app = CreateObject("nanoCAD.Application")
End If
app.Visible = Trueapp.Visible = True
Set ThisDrawing = app.ActiveDocumentSet wrksht = ActiveWorkbook.Worksheets("5_Блок-с-Атр_2")
wrksht.Activate
With wrksht
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
firstRow = 2Dim InsPoint(0 To 2) As Double
For i = firstRow To lastRow
InsPoint(0) = Range("B" & i).Value: InsPoint(1) = Range("C" & i).Value: InsPoint(2) = 0On Error Resume Next
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(InsPoint, Range("A" & i).Value, Range("D" & i).Value, Range("D" & i).Value, Range("D" & i).Value, Range("E" & i).Value)Attr = blockRefObj.GetAttributes
For j = 0 To UBound(Attr)
If Attr(j).TagString = "ТЕКСТ1" Then Attr(j).TextString = Range("F" & i).Value
If Attr(j).TagString = "ТЕКСТ2" Then Attr(j).TextString = Range("G" & i).Value
Next j
Next iThisDrawing.Regen acAllViewports
app.ZoomExtentsSet blockRefObj = Nothing
Set ThisDrawing = Nothing
Set app = Nothing
MsgBox "Блоки вставлены!", vbInformation, "Finished"End Sub
1 -
Ты код выше пробовала?
0 -
нет, ругается на SPDS
нужно переменные как-то объявить
0 -
проверил все работает в платформе, кроме добавления лидера
0 -
может dll надо добавить в референс?
у меня добавлены только odax и ncauto
0 -
и без референсов все работает
====
но если хочется, то подключи
0 -
поправил второй пост, теперь и лидер вставляется
2 -
Спасибо за помощь!
Получилось сделать в excel макрос для простановки множества позиц выносок (фрагмент ниже).
Dim SPDS As McCOM2.IServer
Dim note As McCOM2.Object
Set SPDS = CreateObject("McCOM2.Server")
For i = firstRow To lastRow
Set note = SPDS.CreateObject("McCOM2.SymSpdsNotePosition")
note.ViewScale = SPDS.ViewScalenote.Text = Range("F" & i).Value
note.Footer = Range("G" & i).Value
note.Leaders.Add Array(Range("B" & i).Value, Range("C" & i).Value) 'коорд точки вставки
note.TextPosition = Array(Range("B" & i).Value - 30, Range("C" & i).Value - 10) 'коорд точки полки
note.Place False, False
Next i2 -
Можно еще вопрос:
Если на компьютере установлен только NanoCAD или NanoCAD СПДС, и нужно запустить макрос excel и требуется библиотека McCOM2.dll (из механики), то нужно устанавливаться саму механику или можно этот dll (dll с com) подключать из внешней папки при старте excel?
Если подключать из внешней папки, положив в нее этот dll, то как это сделать? (*просто добавить в референс нельзя, нужно как-то еще регистрировать)?
0 -
McCOM идет в составе голого нанокада
Нанотаблицы, нановыноски это все он
Можно вообще референсы не подключать
Больше скажу код из п. 2 будет работать даже из vbs
PS Просто это библиотека изначально была механикой, это уже потом из нее нанодевы сто шапок нашили
0 -
McCOM (McCOM2.dll) из голого нанокад- не добавляется в рефернс.
Может надо другой dll добавлять?
0 -
>Если подключать из внешней папки, положив в нее этот dll, то как это сделать? (*просто добавить в референс нельзя, нужно как-то еще регистрировать)?
Из ком строки системы
Reqsvr32 "путь к длл"
С правами админа
Но имхо излишне, нана сам все регистрирует
1 -
Без McCOM2.dll из механики ошибка на "Dim SPDS As McCOM2.IServer".
Механику ставить конечно не хотелось бы.
0 -
>McCOM (McCOM2.dll) из голого нанокад- не добавляется в рефернс.
Емнип В Референс можно добавить только зарегистрированную библиотеку
Встречный вопрос:
Зачем ставить голую платформу? Лишая себя доступа к объектам механики и спдс через энаблер?
1 -
Согласна. Можно ставить "полный" нанокад.
0 -
Но можно ли как-то обойтись стандартными библиотеками голого нанокада, чтобы работал макрос excel?
судя по всему при установке голой платформы McCOM.server недоступен
сделано это умышленно или бага, я не знаю(((
при полной установке (возможно достаточно только СПДС,
но лень проверять), при запуске голой платформы McCOM.server работаетupd таки проверил, если доставить СПДС (или механику), то внешний ActiveX работает
0
Разделы
- Все разделы
- 31 Общие вопросы
- 11 Работа nanoCAD в ОС Linux
- 222 Платформа nanoCAD
- 5 nanoCAD GeoniCS
- 19 nanoCAD BIM Конструкции
- 3 nanoCAD Механика PRO
- 34 nanoCAD BIM Электро
- 9 nanoCAD BIM Вентиляция
- 4 nanoCAD BIM ВК
- nanoCAD BIM Отопление
- 5 nanoCAD BIM СКС
- 26 nanoCAD BIM ОПС
- 2 nanoCAD Стройплощадка
- 2 nanoCAD Металлоконструкции
- 1 nanoCAD Конструкции PS
- 2 TDMS Фарватер
- ReClouds
- NSR Specification
- Учебным заведениям и учащимся