Jump to content

vba и содержимое ячейки таблицы


Recommended Posts

Мне надо для скрипта vba вытащить значение из таблицы спдс.

GetText(row, col) не работает =(

Вообще есть такая возможность?

 

Скрипт примерно такой:

 

Dim ut
Set ut = ThisDrawing.Utility
Dim sSet, cnt
set sSet = ThisDrawing.ActiveSelectionSet
sSet.SelectOnScreen
cnt = sSet.Count
Dim i
for i=0 to cnt-1
set myObj = sSet.Item(i)
if (myObj.ObjectName = "mcsDbObjectTable2") then
 ut.prompt myObj.GetText(1,1) 'не работает!'
end if
next
sSet.Clear

Edited by swell{d}
Link to comment
Share on other sites

попробовал такой скрипт:

 

Dim ut

Set ut = ThisDrawing.Utility

 

Dim ent, pt0, ppt0

 

ThisDrawing.Utility.GetEntity ent, pt0, "Укажите объект"

ppt0 = ut.CreateSafeArrayFromVector(pt0)

ut.Prompt ppt0(0) & ", " & ppt0(1)

 

в командной строке мне возвращается точка, в которой я кликнул мышкой.

 

_http://vbamodel.narod.ru/AutoCAD/idh_getentity.htm

Точка указки, возвращенная GetEntity не обязательно лежит на выбранном объекте. Возвращенная точка представляет местоположение перекрестий во время выбора. Отношения между этой точкой и объектом изменяются в зависимости от размера маркера и текущего масштаба.

Edited by swell{d}
Link to comment
Share on other sites

Да... Остается включить объектную привязку и нажимать в левый верхний угол.

Вообще с таблицами мало информации в SDK, сам пытаюсь понять как получить значения ячеек и где вообще свойства объекта

"таблица" посмотреть.

Link to comment
Share on other sites

  • 3 months later...

Создаём таблицу, выполняем скрипт:

 

Sub spds_table()

Dim pServer 'As McCOM2.server

Set pServer = CreateObject("McCOM2.Server")

 

Dim objects As McCOM2.ObjectsCollection

Set objects = pServer.Query()

objects.item(1).Cell(1, 1).text = "123"

End Sub

 

в левой верхней ячейке получаем 123

Link to comment
Share on other sites

  • 1 year later...

Так все таки где найти описание таблиц нанокад?

Какие методы и свойства у них есть как к ним обращаться?

Хочу программно изменить кол-во строк в таблице нанокад, не получается.

Подскажите как?

Опыта у меня маловато.

Link to comment
Share on other sites

Так все таки где найти описание таблиц нанокад?

Какие методы и свойства у них есть как к ним обращаться?

Хочу программно изменить кол-во строк в таблице нанокад, не получается.

Подскажите как?

Опыта у меня маловато.

McCOM2.chm, там немного есть

хотя то же не все так просто например:

у таблицы свойство Insertion point-угол вставки таблицы есть, а в McCom2 об этом нет ничего.

но для начала справки по McCom2 наверное хватит.

Edited by raz
Link to comment
Share on other sites

читай тут http://forum.nanocad...hp?showforum=87

а тут рабочие примеры от уважаемого MCAD http://forum.dwg.ru/showthread.php?t=32516

Edited by raz
Link to comment
Share on other sites

  • 7 years later...

Добрый день!

Не стал плодить тему, решил написать здесь.

Необходимо из таблицы СПДС средствами VBA достать данные, это можно сделать так

Sub Tables_SPDS()

Dim server As McCOM2.IServer
Set server = CreateObject("McCOM2.Server")
Dim spdsObjects As Object
Set spdsObjects = server.Query()

For i = 1 To spdsObjects.Count
    If spdsObjects.Item(i).ClassName = "McCom2.SymTable" Then
        For ii = 1 To spdsObjects.Item(i).RowCount
            Debug.Print spdsObjects.Item(i).Cell(ii, 1).Text & " " & spdsObjects.Item(i).Cell(ii, 2).Text
        Next ii
    End If
Next i

End Sub

Но проблема в том, что таблица сделана "отчетом" и в ячейках формулы, и данный код выводит мне формулу, а не ее результат.

Собственно вопрос как мне достать значение ячейки.

Link to comment
Share on other sites

1 час назад, Paul3225 сказал:
Text

 DisplayText

-------------

 полезно смотреть, что в локалс

Set ccc= spdsObjects.Item(i).Cell(ii, 1)

ты б и сам тогда увидел

 

  • Like 2
Link to comment
Share on other sites

16 часов назад, doctorraz сказал:

 DisplayText

-------------

 полезно смотреть, что в локалс

Set ccc= spdsObjects.Item(i).Cell(ii, 1)

ты б и сам тогда увидел

 

Спасибо большое за наводку, все получилось.

 

Ну раз пошла такая пьянка, то еще вопросик можно?

Как достать весь текст из модели я понимаю, возможно ли достать только тот текст который попадает в видовой экран листа.

Попробую объяснить: в модели чертежные рамки, далее сформированы листы (сколько рамок, столь и листов), мне нужно достать текст чтоб я понимал, какой текст с какого листа.

 

Link to comment
Share on other sites

30 минут назад, MCAD сказал:

Для перевода?

походу загнал форматки в модель и хочет получить "Ведомость рабочих чертежей"..

через листы)))

-------------

46 минут назад, Paul3225 сказал:

возможно ли достать только тот текст который попадает в видовой экран листа.

можно

расскажи зачем такоеее потребовалось

Link to comment
Share on other sites

21 минуту назад, Paul3225 сказал:

Извините, не понял

Значит я не угадал. Есть пользователь, который оформляет чертежи на двух, трёх языках. Им нужно было такое для переводчиков. 

 

13 минут назад, doctorraz сказал:

чертежей"..

через листы)))

Очень сложно что-то

Link to comment
Share on other sites

6 минут назад, doctorraz сказал:

походу загнал форматки в модель и хочет получить "Ведомость рабочих чертежей"..

через листы)))

-------------

можно

расскажи зачем такоеее потребовалось

На листах схема кабельной сети, каждый кабель подписан как длинна-тип_кабеля, (например: 250-7x2(2)), я достаю это все в Ecxel чтоб посчитать общую длину по типу кабеля, разделку, муфты, и тд и тп. Но бываю опечатки и прочее, просто чтоб видеть на каком листе косяк.

Link to comment
Share on other sites

43 минуты назад, Paul3225 сказал:

Но бываю опечатки и прочее, просто чтоб видеть на каком листе косяк.

ну и собери кабели по листам в табличные отчеты, помести на непечатаемый слой и контролируй

===============

имха, что бы через ВЭ собирать объекты в модели по простому

определяем проекции углов ВЭ на модель https://adn-cis.org/preobrazovanie-koordinat-tochki-iz-prostranstva-lista-v-prostranstvo-modeli-net-api.html

в получившемся прямоугольнике в модели селсетом выбираем объекты

обрабатываем что получилось((((

если ВЭ не прямоугольный то ой....

---------------

Возможно есть способ попроще, но в этой теме это оффтоп

Edited by doctorraz
  • Thanks 1
Link to comment
Share on other sites

2 часа назад, MCAD сказал:

Так может исключить возможность ошибки на этапе ввода данных?

...

Универсальный маркер интересный вариант, надо буде попробовать реализовать, но как-то громоздко. И все равно мне нужен номер листа.

2 часа назад, doctorraz сказал:

ну и собери кабели по листам в табличные отчеты, помести на непечатаемый слой и контролируй

===============

сейчас так и сделано, но нет придела совершенству

2 часа назад, doctorraz сказал:

имха, что бы через ВЭ собирать объекты в модели по простому

определяем проекции углов ВЭ на модель https://adn-cis.org/preobrazovanie-koordinat-tochki-iz-prostranstva-lista-v-prostranstvo-modeli-net-api.html

в получившемся прямоугольнике в модели селсетом выбираем объекты

обрабатываем что получилось((((

если ВЭ не прямоугольный то ой....

---------------

Буду копать в эту сторону. Спасибо большое!

  • Like 1
Link to comment
Share on other sites

1 час назад, Paul3225 сказал:

Буду копать в эту сторону.

офф имха овчинка выделки не стоит по трудоемкости, да еще и на бейсике(((

Возможно есть смысл посмотреть в сторону оптимизации "бизнес процессов"

  • Like 1
Link to comment
Share on other sites

Если и тратить силы, то на автоматизацию заполнения кж, а не автоматическую проверку после ручного заполнения

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...