| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите с инструментом для работы с мультивыносками

Помогите с инструментом для работы с мультивыносками

Ответ
Поиск в этой теме
Непрочитано 26.03.2018, 21:28
Помогите с инструментом для работы с мультивыносками
Бали
 
Инженер
 
Уфа
Регистрация: 23.03.2007
Сообщений: 197

Добрый день уважаемые эксперты! В Vetcad+ есть удобный инструмент для работы с текстами и мультитекстами (команда tv). С однострочными текстами эта команда работает наизамечательнейшим образом. Все тексты она выводит в один список, последовательность строк формируется в жестком и определенном логическом порядке (сверху-вниз и слева-направо). Потом в EXCEL с этим списком можно творить чудеса, редактировать его , после чего вставлять обратно в чертеж с помощью той же команды Tv. Можно ли сделать такой лисп, который будет делать тоже самое с мульвыносками? (лисп, который будет собирать весь текст с выбранных мультивыносок, и складывать их для редактирования в список упорядоченный по логике указанной выше)

Последний раз редактировалось Бали, 26.03.2018 в 21:33.
Просмотров: 6332
 
Непрочитано 27.03.2018, 10:23
#21
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,054


Цитата:
Сообщение от Бали Посмотреть сообщение
Я считаю это самый универсальный метод. Подходит для кучи задач. Работать в экселе с массивом значений - это очень универсально. Эксель для этого и предназначен.
Посмотрите:
https://youtu.be/wMtlWTmD554

Разве так не быстрее?
ProjectMaster вне форума  
 
Автор темы   Непрочитано 27.03.2018, 10:29
#22
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Посмотрел, для частного случая вполне даже и быстрее. Но только для частного. А если позиции разбросаны по чертежу в рандомном порядке ?
Бали вне форума  
 
Непрочитано 27.03.2018, 10:33
#23
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,054


Цитата:
Сообщение от Бали Посмотреть сообщение
Посмотрел, для частного случая вполне даже и быстрее. Но только для частного. А если позиции разбросаны по чертежу в рандомном порядке ?
При нумерации достаточно прощелкать позиции в нужном порядке по одной или группами. Я не понимаю смысла загонять данные в эксел. Есть куча автонумераторов.

Если нумерация сдвигается на единицу - можно к выделенным текстам прибавить число (программ куча).

Если Вы что-то делаете через ексель - это очень долго. Обычно есть вариант намного быстрее.
ProjectMaster вне форума  
 
Непрочитано 27.03.2018, 14:00
| 1 #24
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
ATTIN / ATTOUT, только для мультивыносок... тут предлагается СРАЗУ в doc/xls... если делать не на коленке, а по уму, количество кода будет не сильно меньше
Цитата:
Мультивыноска может содержать мтекст или блок...Как это обрабатывать и что со всем этим делать? Вот по пунктам, при каждом возможном варианте
Вставлю дилетантские 5 коп.:
1) передача данных из Акада в сразу excel - дело непростое. Работа через COM или промежуточные файлы типа CSV - тоже. А сбор данных из мультивыносок в таблицу Акада, имеющую встроенные средства связи с Excel - вопрос решаемый. Во вторую колонку таблицы можно собрать handl'ы мультивыносок. Вот и получается колхозная версия ATTIN / ATTOUT;
2) создается впечатление, что автор и не ждет законченное решение "по уму", с обработкой всевозможных и невозможных вариантов, исключений и защитой от дурака. Вариант "сделано на коленке, как-то работает" вполне сойдет.

Цитата:
Сообщение от ProjectMaster Посмотреть сообщение
Я не понимаю смысла загонять данные в эксел. Есть куча автонумераторов.
Все автонумераторы решают узкие задачи. Например, если есть в наличии автонумератор, с помощью которого решается задача нумерации, условно говоря, "от забора до обеда сплошняком", а надо "с обеда до забора через два; при двух нечетных через один", то не исключено, что автонумератор надо переделывать или даже писать заново. Excel же - более универсальный инструмент.

Последний раз редактировалось kp+, 27.03.2018 в 14:25.
kp+ вне форума  
 
Автор темы   Непрочитано 27.03.2018, 22:29
#25
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Вот вы прям в точку про коленку сказали. Мне главное шоб в эксель вставить.

----- добавлено через ~2 мин. -----
И не обязательно создавать файл экселя. Вполне удобно будет вставлять из буфера в уже открытый эксель
Бали вне форума  
 
Непрочитано 01.04.2018, 02:28
1 | #26
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Всех с 1 апреля!
Вот мой колхозный панк лисп, то самое "решение на коленке". Написан низким штилем без каких-либо проверок и защит. Работает только с текстовыми мультивыносками.
В нем две команды:
ml_out - выписывает хендлы и текстовые строки мультивыносок в первый и второй столбец заранее созданной таблицы (мне было лень создавать ее программно). Еще раз, таблица должна быть создана заранее, в ней должно быть не менее двух столбцов. Количество строк подгоняется автоматически по числу выносок. Таблицу потом можно экспортировать в ексель, импортировать обратно в Акад и вообще делать с ней что угодно, кроме двух ограничений:
- нельзя менять значения в первом столбце (хендлы), иначе теряется связь выписанной в таблицу текстовой строки с текстовой строкой самой мультивыноски;
- при сортировках текстовых строк нельзя отрывать значения в первом столбце от значений во втором, иначе все перепутается.

ml_in - записывает измененные текстовые строки из второго столбца таблицы обратно в мультивыноски согласно купленным билетам хендлам в первом столбце

Пример чертежа и запись работы прилагаю.

Код:
[Выделить все]
 (defun c:ml_out (/ I ML_LIST SS TABLE_CONTENTS TABLE_STRING TBL_OBJ)
  (vl-load-com)
  (princ "выбрать мультивыноски:\n")
  (setq ss (ssget  '((0 . "MULTILEADER"))))
  (setq ml_list (ssnamex ss));преобразование набора в список
  (setq ss nil)
  (setq ml_list (mapcar 'cadr ml_list));выкидывание номеров набора из списка
  (setq ml_list (vl-remove-if-not '(lambda (x) (eq (type x) 'ENAME)) ml_list))    ;выкидывание способов набора из списка

  (foreach x ml_list
    (setq table_string (list
			 (cdr (assoc 5 (entget x)))
			 (vla-get-textstring (vlax-ename->vla-object x))
		       )
    )
    (setq table_contents (append table_contents (list table_string)))
  )
  
  (princ "выбрать таблицу:\n")
  (setq ss (ssget "_:S" '((0 . "ACAD_TABLE"))))
  (setq tbl_obj (ssnamex ss))
  (setq ss nil)
  (setq tbl_obj (vlax-ename->vla-object (cadar tbl_obj)))
  (vla-put-regenerateTableSuppressed tbl_obj :vlax-true)
  (vla-put-rows tbl_obj (length ml_list))
  (setq i 0)

  (foreach x table_contents
    (vla-setcellvalue tbl_obj i 0  (car x))
    (vla-setcellvalue tbl_obj i 1  (cadr x))
    (setq i (1+ i))
  )

  (vla-put-regenerateTableSuppressed tbl_obj :vlax-false)
  (vla-RecomputeTableBlock tbl_obj :vlax-true)

  
  (princ)
 )
;;;;;;;;;;;;;;;;;;;
(defun c:ml_in (/ I K ML_HANDLE ML_LIST SS TBL_OBJ)
  (vl-load-com)
  (princ "выбрать мультивыноски:\n")
  (setq ss (ssget  '((0 . "MULTILEADER"))))
  (setq ml_list (ssnamex ss));преобразование набора в список
  (setq ss nil)
  (setq ml_list (mapcar 'cadr ml_list));выкидывание номеров набора из списка
  (setq ml_list (vl-remove-if-not '(lambda (x) (eq (type x) 'ENAME)) ml_list))    ;выкидывание способов набора из списка

  (princ "выбрать таблицу:\n")
  (setq ss (ssget "_:S" '((0 . "ACAD_TABLE"))))
  (setq tbl_obj (ssnamex ss))
  (setq ss nil)
  (setq tbl_obj (vlax-ename->vla-object (cadar tbl_obj)))
  (setq k (vla-get-rows tbl_obj))
  (setq i 0)

  (while (< i k)
    (setq ml_handle (vlax-variant-value (vla-getcellvalue tbl_obj i 0)))
    (foreach x ml_list
      (if (= ml_handle (cdr (assoc 5 (entget x))))
	(vla-put-textstring (vlax-ename->vla-object x) (vlax-variant-value (vla-getcellvalue tbl_obj i 1)))
      )
    )
    (setq i (1+ i))
  )
  
  
  (princ)
 )
Вложения
Тип файла: zip NewFilm.zip (1.79 Мб, 24 просмотров)
Тип файла: dwg
DWG 2010
выноски.dwg (83.0 Кб, 28 просмотров)
kp+ вне форума  
 
Автор темы   Непрочитано 01.04.2018, 21:18
#27
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


kp+, это даже лучше, чем я хотел! Отличный лисп!

----- добавлено через ~33 мин. -----
только эксель букву E воспринимает как знак степени и при эксорте переписывает все значения из первого столбца(
Бали вне форума  
 
Непрочитано 01.04.2018, 22:46
#28
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


http://autolisp.ru/2016/09/29/anothe...-attout-attin/ не поможет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.04.2018, 23:22
1 | #29
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
http://autolisp.ru/2016/09/29/anothe...-attout-attin/ не поможет?
Ну не работает эта прога с текстовыми мультивыносками. Наверное, ее можно "немного модифицировать" и переориентировать с блоков на мультивыноски. Но для этого надо разобраться в профессионально написанном коде с полным комплексом проверок и как будто на отдельном диалекте LISP'а (это я о семействе функций _kpblc-***). Короче, с ходу у меня ничего не получилось Поэтому написал свою, колхозную версию.
Цитата:
Сообщение от Бали Посмотреть сообщение
только эксель букву E воспринимает как знак степени и при эксорте переписывает все значения из первого столбца(
Переименовать csv в txt Это не шутка, несмотря на 1 апреля. Тогда ексель при открытии текстового файла будет меньше умничать с форматами данных, а спросит, что ему делать и можно задать формат столбцов - текстовый.

Последний раз редактировалось kp+, 01.04.2018 в 23:29.
kp+ вне форума  
 
Автор темы   Непрочитано 02.04.2018, 04:59
#30
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от kp+ Посмотреть сообщение

Переименовать csv в txt Это не шутка, несмотря на 1 апреля. Тогда ексель при открытии текстового файла будет меньше умничать с форматами данных, а спросит, что ему делать и можно задать формат столбцов - текстовый.
Это работает!!!!!!!

----- добавлено через ~24 мин. -----
Я протестил, всё работает на 100%. С помощью этого инструмента можно выгружать данные мультивыносок в EXCEL, редактировать их в EXCELe, и вставлять обратно в автокад.

Кстати, можно обойтись и без txt, просто при работе со связью с данными, нужно работать только со столбцом значений. Столбец с идентификационными номерами трогать нельзя.
kp+, Вам огромный респект и уважуха!
Бали вне форума  
 
Непрочитано 02.04.2018, 09:04
#31
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от Бали Посмотреть сообщение
Кстати, можно обойтись и без txt, просто при работе со связью с данными, нужно работать только со столбцом значений. Столбец с идентификационными номерами трогать нельзя.
В таком случае главное - не смешивать сортировать данные, о чем уже говорил в #26.
Offtop: Сегодня у меня день варенья, выпейте рюмку чая за мое здоровье!
kp+ вне форума  
 
Автор темы   Непрочитано 02.04.2018, 09:15
#32
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


kp+, с днём варенья !!
Бали вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите с инструментом для работы с мультивыносками

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто понесет уголовную (или прочую) ответственность в случае разрушиния здания/сооружения? VAV Прочее. Архитектура и строительство 317 18.12.2012 03:13
Помогите оценить стоимости разработки ППР на кровельные работы DIM-87 Технология и организация строительства 10 04.07.2012 23:13
Помогите студенту )! Нужен интересный, креативный план дома для Дипломной работы. dengrits1 Поиск литературы, чертежей, моделей и прочих материалов 4 07.02.2012 14:04
Помогите найти "Общемашиностроительные укрупнёные нормативы времени на работы выполняемые на токарно-револьверных станках" kent1ukr Поиск литературы, чертежей, моделей и прочих материалов 3 26.01.2012 21:11
SW2010: Трудности работы с инструментом сварная конструкция Creator SolidWorks 7 25.08.2011 16:47