doctorraz Posted April 12 Report Share Posted April 12 Надо подсветить таблицу для передачи ее штатной команде экспорт в Excel (defun C:drz_ExpotrSumRepSS () (setq ss1 (ssget "_A" '((0 . "SPDSTABLE2")(300 . "Отчет сводный")))) (sssetfirst nil ss1) (command "TABLEEXCELEXPORT") ; (princ) ) если таблица одна, то экспортируется нормально, а вот если несколько, то набор слетает и нана просит выбрать таблицу.. Собственно вопрос, как подсветить только один объект из выбора? Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 12 Report Share Posted April 12 Ну преобразовывай набор в список ename-указателей и передавай их по одному, делов-то. Код писать (учитывая что я не знаю насколько корректно будут работать команды)? 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 1 минуту назад, kpblc сказал: преобразовывай набор в список ename-указателей Спасибо, почитаю Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 блиин (setq ss1 (ssget "_A" '((410 . (getvar "CTAB"))))) ;неверный тип аргумента: STRINGP: SCTAB ;или (setq ss1 (ssget "_A" '((cons 410 (getvar "CTAB"))))) ;неверный тип аргумента: INT: CONS как так то?? ""Model" ищет исправно((( Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 12 Report Share Posted April 12 У меня в библиотеке на гитхабе есть что-то типа _kpblc-conv-selset-to-ename - оно "само по себе", ничего больше, насколько я помню, не требует. P.S. В цикле попробуй нечто типа (command "TABLEEXCELEXPORT" entity) - вдруг сработает? добавлено через 0 минут 1 минуту назад, doctorraz сказал: блиин Эммм... (setq ss1 (ssget "_A" (list (cons 410 (getvar "ctab"))))) добавлено через 1 минуту Че-то ты заработался. "Отдыхать вам нужно, таищ майор!"(с) 1 Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 12 Report Share Posted April 12 57 минут назад, doctorraz сказал: Собственно вопрос, как подсветить только один объект из выбора? В любом случае нужно из набора удалить все, что не нужно. Для этого необходим критерий. А из примера непонятно, что собственно хотелось бы подсветить. Спойлер (defun C:drz_ExpotrSumRepSS ( / ss1 i nab el ) (setq ss1 (ssget "_A" '((0 . "SPDSTABLE2")))) (setq i 0) (repeat (sslength ss1) (setq el (ssname ss1 i)) (setq nab (ssadd)) (setq nab (ssadd el nab)) ;(sssetfirst nil nab) ;непонятно зачем (command "TABLEEXCELEXPORT" nab) (setq i (1+ i))) (princ) ) Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 (edited) 3 часа назад, kpblc сказал: вдруг сработает Если таблиц больше одной, ине пофих, нужна любая одна, там будут одинаковые данные 3 часа назад, kpblc сказал: Че-то ты заработался Дома проверю, но в АК это работает upd нет конечно)))) Edited April 12 by doctorraz Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 12 Report Share Posted April 12 12 минут назад, EdwardSt сказал: (defun C:drz_ExpotrSumRepSS ( / ss1 i nab el ) (setq ss1 (ssget "_A" '((0 . "SPDSTABLE2")))) (setq i 0) (repeat (sslength ss1) (setq el (ssname ss1 i)) (setq nab (ssadd)) (setq nab (ssadd el nab)) ;(sssetfirst nil nab) ;непонятно зачем (command "TABLEEXCELEXPORT" nab) (setq i (1+ i))) (princ) ) Я бы сто раз подумал, прежде чем так поступать. Общее количество наборов не может превышать 256 (по крайней мере в ACAD). А тут с наборами какая-то жесть творится. --- Добавлю: ключ "_A", насколько я помню, тем и отличается от "_X", что выбирает в активном пространстве. Так что дополнительная фильтрация по 410 группе не совсем нужна. --- Добавлю: Если все же использовать мои _kpblc-*.lsp, то можно сделать нечто типа: (defun c:123( / selset) (if (setq selset (ssget "_A" '((0 . "SPDSTABLE2")))) (foreach item (_Kpblc-conv-selset-to-ename selset) (command "tableexport" (handent (cdr(assoc 5 (entget item)))) "") ) ) 1 Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 12 Report Share Posted April 12 Или Спойлер (defun C:drz_ExpotrSumRepSS ( / ss1 nab ) (setq ss1 (ssget "_A" '((0 . "SPDSTABLE2") (300 . "Отчет сводный")))) (if ss1 (progn (setq nab (ssadd)) (setq nab (ssadd (ssname ss1 0) nab)) (command "TABLEEXCELEXPORT" nab) (sssetfirst nil nab) ;непонятно зачем )) (princ) ) 1 Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 12 Report Share Posted April 12 Ну если совсем уж извращаться, то и набор можно сформировать повеселее: (setq ss1 (ssget "_.+:L:S:E" '((0 . "SPDSTABLE2") (300 . "Отчет сводный")))) Как-то так примерно. Будет в нано работать или нет- не представляю 1 Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 12 Report Share Posted April 12 25 минут назад, kpblc сказал: Я бы сто раз подумал, прежде чем так поступать. Общее количество наборов не может превышать 256 (по крайней мере в ACAD). А тут с наборами какая-то жесть творится. В данном примере после каждой итерации набор "зануляется". Потому превышения быть не должно. А подсветка в любом случае предполагает создание набора. Тут уж только ограничивать хотелку нужно. А создание первоначального набора вроде вообще не было предметом вопроса. Не? Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 25 минут назад, kpblc сказал: не может превышать 256 (по крайней мере в ACAD) В нк дошел до 600)) 25 минут назад, kpblc сказал: ключ "_A", насколько я помню, тем и отличается от "_X", что выбирает в активном пространстве В нк по всему чертежу, насколько я понял, а надо по активному, иначе на экспорт не передать 23 минуты назад, kpblc сказал: Будет в нано работать или нет- не представляю Проверю добавлено через 3 минут 2 минуты назад, EdwardSt сказал: создание первоначального набора вроде вообще не было предметом вопроса. Не? Сперва нет, но чот ssget c CTAB не дружит(( у меня в нано добавлено через 6 минут 32 минуты назад, EdwardSt сказал: непонятно зачем На строчку выше поднять... Упсс а что TABLEEXCELEXPORT набор принимает??? Ооо, тогда подсветка не нужна конечно Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 12 Report Share Posted April 12 5 минут назад, doctorraz сказал: Сперва нет, но чот ssget c CTAB не дружит(( у меня в нано тогда может более точно конкретизировать, что именно нужно выбрать? (ssget очень уж заморочная функция... Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 4 минуты назад, EdwardSt сказал: может более точно конкретизировать, что именно нужно выбрать? Одну таблицу с заданным именем в текущем пространстве PS почему одну и любую, юзер может их сколько хошь напихать, но в пределах пространства эти таблицы одинаковые, поэтому любую Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 12 Report Share Posted April 12 8 минут назад, doctorraz сказал: На строчку выше поднять... Упсс а что TABLEEXCELEXPORT набор принимает??? Ооо, тогда подсветка не нужна конечно Кстати, предварительный выбор (предполагаю, это то, что хотелось подсветить) для команды TABLEEXCELEXPORT у меня не работает. Только указание таблицы сразу после команды. Это существенное отличие от многих других команд. Т.е., в данном случае подсветка просто бессмысленна. добавлено через 1 минуту Только что, doctorraz сказал: поэтому любую значит можно первую в наборе. Тогда остается исследовать и подобрать работоспособную комбинацию для (ssget ... добавлено через 5 минут 15 минут назад, doctorraz сказал: Упсс а что TABLEEXCELEXPORT набор принимает??? принимает и набор, и просто имя элемента. Т.е. в моем примере эти команды были бы равносильны (command "TABLEEXCELEXPORT" nab) и (command "TABLEEXCELEXPORT" (ssname ss1 0) ) Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 28 минут назад, EdwardSt сказал: Т.е., в данном случае подсветка просто бессмысленна код из первого поста если одна таблица у меня работает до дома доберусь, буду разбираться дальше Quote Link to comment Share on other sites More sharing options...
Maksim Yablokv Posted April 12 Report Share Posted April 12 2 часа назад, kpblc сказал: Ну если совсем уж извращаться, то и набор можно сформировать повеселее: (setq ss1 (ssget "_.+:L:S:E" '((0 . "SPDSTABLE2") (300 . "Отчет сводный")))) Как-то так примерно. Будет в нано работать или нет- не представляю В nanoCAD, так нельзя! И это ещё одно отличие от AC. Можно использовать только один метод выбора. Иначе выкинет исключение. 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted April 12 Author Report Share Posted April 12 (edited) Огромное всем СПАСИБО!!! у LeeMac http://lee-mac.com/ssget.html ключ Х ищет по всей базе чертежа, на всех слоях А тоже но исключает замороженные слои --------------------------- в итоге получилось вот такое: ;отчет в эксель (defun C:drz_ExpotrSumRep ( / ss1 sexo ) (setq sexo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq ss1 (ssget "_X" (list (cons 410 (getvar "ctab"))(cons 0 "SPDSTABLE2")(cons 300 "Отчет сводный")))) (if ss1 (progn (command "TABLEEXCELEXPORT" (ssname ss1 0)) ) (progn ; добавим таблицу из БД "Отчет сводный" в @@пу мира (command "spStdSelected" "55DFC3682ED43A72" "1000000000,1000000000") ;поищем ее (setq ss1 (ssget "_X" (list (cons 410 (getvar "ctab"))(cons 0 "SPDSTABLE2")(cons 300 "Отчет сводный")))) (if ss1 (progn ;экспортируем из нее в эксель (command "TABLEEXCELEXPORT" (ssname ss1 0)) ;и прибьем (command "erase" (ssname ss1 0) "") ) (princ "\n Отчета нет ни в базе ни в чертеже") ) ) ) (setvar "CMDECHO" sexo) (princ) ) как раньше люди без интернета программировали????)))))) Edited April 12 by doctorraz улучшайзинг Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 13 Report Share Posted April 13 12 часов назад, Maksim Yablokv сказал: В nanoCAD, так нельзя! И это ещё одно отличие от AC. Не знал. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.