|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Последовательный перенос текста из ячеек Excel в указываемый текст в AutoCAD
Регистрация: 13.10.2014
Сообщений: 7
|
||
Просмотров: 6563
|
|
||||
Moderator
Конструктор (машиностроение) Регистрация: 23.10.2006
Россия
Сообщений: 23,283
![]() |
Надо запаковать в архив
|
|||
![]() |
|
||||
Регистрация: 13.10.2014
Сообщений: 7
|
Civil конечно было бы интересно освоить ... но врядли получится быстрее чем вбивать значения уже полученные в другой программе
![]() Знаю что задача глупая, но не вижу пока другого варианта как найти какоенибудь решение упростить вставку с экселя в КАД |
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Очевидно, что задачу можно нааамного больше автоматизировать... но в такой постановке, если вы готовы много кликать мышкой по текстам, то могу предложить вот такой вариант:
1) Создаем связь с данныx c Exel. 2) Вставляем таблицу в автокад. 3) Разрушаем таблицу. 4) Пользуемся например таким копировщиком (VBA) (Работает по принципу, кликнул на первый текст, кликнул на 2й текст): Код:
Автоматизатия на ахти какая, все равно лучше чем от руки вбивать значения... Но, если объекты текста куда нужно вставлять всегда расположены в одних и тех же местах, то лучше создать блок с атрибутами, и туда уже пакетно вставлять данные, можно и прямяком из Excel. Вообще вариантов куча, все зависит от необходимости и возможных трудозатрат. |
|||
![]() |
|
||||
Регистрация: 13.10.2014
Сообщений: 7
|
большой мерси, попробовал Ваш "копировщик (VBA)" - работает, приколько. Уже упрощает ситуацию.
минус в том что мне придется мотаться между своими поперечниками (чертежиками профилей дороги) и местом где я взорвал табличку... Это решается разбитием окна чертежа на два, но кликаний конечно чуток увеличивается за счет перехода между окнами. Но это конечно уже намного быстрее чем то как я это делал вручную с клавы. Спасибо!!! === Первый вариант про Пакетный Файл не понимаю... Поясните пожта как им пользоваться? |
|||
![]() |
|
||||
Регистрация: 13.10.2014
Сообщений: 7
|
ПАКЕТ это я так понимаю SCRIPT ? сорри я всю жизнь только на английской версии акада работал (
Пункты 2 и 3 вроде понятны ( третий пункт это запустить скрипт - RUN SCRIPT команда). но пожалуйста подскажите как будт выглядеть нижеследующее для английского акада: ? (command "-ТЕКСТ" "В" "СЛ" '(<dist> -20) 2 -90 "<dist>") (command "-ТЕКСТ" "В" "СЛ" '(<dist> 20) 2 -90 "<otm>") шаг первый: "В Excel'е формулой поставить нужные значения вместо <dist> и <otm> ". Значения в экселе вписаны цифрами, не совсем понимаю что значит и куда поставить эти значения? |
|||
![]() |
|
||||
Регистрация: 13.10.2014
Сообщений: 7
|
Ок, с этим вроде понятно "-ТЕКСТ" "В" "СЛ" = "-TEXT" "J" "L" (повидимому речь о Justify to the Left)
но про вторую часть команды пока не понял ... '(<dist> -20) 2 -90 "<dist>" читаю про написание скриптов, попробую разобраться что куда втыкать |
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Цитата:
Код:
PS. Я записывал информацию в ексель много раз, а вот чтоб прочитать из него впервые и буду очень рад, если кто-то посмотрит код и покритикует его ![]() |
|||
![]() |
|
||||
Регистрация: 13.10.2014
Сообщений: 7
|
Салют! спасибо за помощь )
С кодом предоставленным Вами ошибка возникает на строке Call SetAttr(blObj, CStr(j), a(j)) видимо надо чтото подправить или я делаю не в той последовательности... Моя задача проста: 1. имею табличку с отметками в Экселе (см в приложении) 2. открываю АКАД и в однострочный текст вставляю эти значения последовательно от пикета к пикету. (АКАД файл также в приложенном архиве). На данный момент я это делаю кодом который предоставил art_rrc по принципу, кликнул на первый текст, кликнул на 2й текст из таблицы которую предварительно затакиваю в акад и там взрываю до однострочного текста. Ваш вариант выглядит интересно в плане того, что если код самостоятельно будет перебирать строки\ячейки из моего экселя и лишь давать мне кликать по тексту в акаде от пикета к пикету (переодически сообщая "следующий пикет" в то время как переходит на новую строку в экселе). Тут я гораздо больше времени сохраню только на кликании по исходному тексту, так как буду делать это только в начале. к сожалени, пока что, в написании кодов я полный пень ![]() |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
2. Совет: все методы получения данных от пользователя с экрана типа GetEntity оборачивайте в проверку On Error Goto. Когда в свое время начинал писать на VBA - просто делал отдельную функцию ввода типа: Function GetEntityExt(ByVal aPrompt As String) As Entity Dim basePnt as Point3d On error goto ErrGet ThisDrawing.Utility.GetEntity GetEntityExt, basePnt, aPrompt Exit Function ErrGet: GetEntityExt = Null End Function Код писал на коленке, просто для иллюстрации. Доведете до ума сами. Чтобы если куда то не туда ткнул: программа спросила о том, хотите ли завершить работу и если нет - снова запросила бы ввод. Программа должна быть дружественная к пользователю, а не вылетать при первом неправильном вводе. 2. Совет: если файл данных экселя имеет фиксированный формат, а количество строк не запредельно - имеет смысл развязывать операции чтения данных из экселя и обработку блоков на чертежах, имхо. Сделать динамический массив записей (структур Type), туда отдельной функцией загонять данные из экселя. Потом эксель закрывается и если все данные корректны - начинать процесс выбора блоков. Тогда выбор нужного "стартового" пикета можно делать в визуальной форме в списке. p.s. Не бойтесь экспериментировать. VBA очень дружественный к пользователю. И можно использовать множество примеров кода для Office для решения сопутствующих задач. Последний раз редактировалось Сергей812, 18.10.2014 в 10:59. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Cstr - это не массив, а преобразование в строку
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Проглядел, спасибо) Но в любом случае реализации метода SetAttr нет. Да и не совпадает он с требуемым - там подразумевается инициализация атрибутов блока, а нужно просто текст, судя по ветке. Еще что заметил в коде поста №15 - что нет проверки на тип выбранного примитива (если, конечно, эта проверка не внутри SetAttr). А проверка неправильного ввода есть вроде, но тихая - ничего не сообщая, при первой же ошибке отключается от экселя.
|
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Цитата:
Вот это нужно добавить в код: Код:
ps. Атрибуты в блоке называются "1","2","3","4". Добавлено: Цитата:
Последний раз редактировалось art_rrc, 18.10.2014 в 20:55. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |
Однострочный текст в AutoCAD 2007 Угол поворота текста | Татьянка Смешная | AutoCAD | 6 | 13.02.2009 15:24 |
Координаты текста из AutoCAD в Excel | Rus2007 | AutoCAD | 11 | 23.10.2007 16:36 |
Перебор ячеек в Excel из VBA AutoCAD | SVitaliy | Программирование | 6 | 10.10.2007 23:45 |