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

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

LISP для изменения настраиваемых (Custom) параметров динамических блоков

Ответ
Поиск в этой теме
Непрочитано 09.10.2017, 05:28 #1
LISP для изменения настраиваемых (Custom) параметров динамических блоков
EfiRoMan
 
Проектирование систем ТГВ
 
Хабаровск
Регистрация: 30.01.2013
Сообщений: 17

Здравствуйте, уважаемые знатоки и гуру LISPа!

Предисловие и суть задачи вполне простые:
Для экспорта/импорта атрибутов есть всем давно известные ATTOUT/ATTIN в EXPRESS TOOLS.
А вот с динамическими свойствами (Сustom) все обстоит гораздо хуже...
Извлечь их еще можно при помощи DATAEXTRACTION (но без HANDLE, их приходится с помощью ATTOUT добывать, а потом еще и объединять два извлечения между собой - тот еще "эротизм"). Далее мы можем их откорректировать, но соответствующей команды для импорта дин. свойств, как в ATTIN нет, а очень хочется, чтобы она была...
Таким образом, задача состоит в том, чтобы доработать стандартный attout.lsp, чтобы он не только атрибуты, но заодно и динамические свойства блоков экспортировал в txt файл и импортировал из него после изменений в чертеж.

Не стал размещать данное сообщение в разделе "поиск исполнителей", т.к. тема может оказаться полезной не только для меня. При этом я с превеликим удовольствием отблагодарю того героя-знатока LISP, который придет на помощь с решением поставленной задачи.

Думаю, что проще и лучше всего будет дополнить LISP attout.lsp (код приводить не буду - он итак всем доступен) из EXPRESS TOOLS функциями многоуважаемого Кулика Алексея aka Kpblc "get-dyn-block-list-prop-and-values" и "change-dyn-block-prop", но возможны и другие варианты, например по аналогии с кодом kakt00z - через EXCEL. Лично меня вполне устроит и первый вариант - перекинуть данные из текстового файла в EXCEL и обратно труда не составит, а вот код для работы напрямую через EXCEL по-любому окажется сложнее.

http://autolisp.ru/2014/06/27/dynblocks-parameters/ - получение и установка параметров динамических блоков от Kpblc
http://forum.dwg.ru/showthread.php?t=121361 - экспорт/импорт содержимого аттрибутов блоков в Excel от kakt00z

Как можно будет использовать данную функцию? Например, при построении профилей - чтобы проставив дин. блоки с основанием и трубой в нужных точках (прилагаются в примере) легко растянуть их друг до друга. На коротких профилях это, конечно, не особо актуально - быстрее протыкать, а вот когда несколько километров разветвленной трассы с большим количеством диаметров делаешь в масштабе 1:1000 да со стыковкой исключительно на листах А3, то начинаешь задумываться об упрощении процесса. Можно и вручную потаскать, но это не так интересно, да и подобный файлик слегка подтормаживает во время редактирования дин.блоков. Вполне возможно, что кто-то придумает и другие применения для данной расширенной функции.

Дополнительно прикладываю самый примитивный пример (в формате 2013 г.) "до" и "после", чтобы задача была более наглядной и было на чем проверять.

Вложения
Тип файла: dwg
DWG 2013
Профиль 2013.dwg (308.6 Кб, 163 просмотров)


Последний раз редактировалось EfiRoMan, 10.10.2017 в 04:49. Причина: Более четкое описание задачи и варианты решения
Просмотров: 17139
 
Непрочитано 09.10.2017, 06:31
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от EfiRoMan Посмотреть сообщение
С лиспом я вообще не знаком и ни разу его не применял, т.к. хватало ранее дин. блоков, таблиц и связи с xls, полей, експресс тулсов и прочих доступных инструментов для автоматизации своей работы, а вот в этом вопросе, на мой взгляд, кроме лиспа вариантов нет
Цитата:
Сообщение от EfiRoMan Посмотреть сообщение
Думаю, что через лисп это легко осуществить, но знания этого языка у меня близки к нулю ( помогите кто чем сможет, пожалуйста!
Я догадываюсь про ответ на свой вопрос, но все таки его задам (за 4 года можно неплохо научиться писать программы): Вы хотите что бы Вам ПОМОГЛИ написать такую программу или Вы хотите, что бы ее НАПИСАЛИ за Вас и тем самым выполнили Вашу работу, за которую Вам работодатель платит деньги?

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

ЗЫ.
Чтение и задание динамических параметров хоть с ручками, хоть без, ничем принципиально не отличаются.
Boxa вне форума  
 
Автор темы   Непрочитано 09.10.2017, 08:08
#3
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Я догадываюсь про ответ на свой вопрос, но все таки его задам (за 4 года можно неплохо научиться писать программы): Вы хотите что бы Вам ПОМОГЛИ написать такую программу или Вы хотите, что бы ее НАПИСАЛИ за Вас и тем самым выполнили Вашу работу, за которую Вам работодатель платит деньги?
Я сам не программист, а инженер и работодатель мне за экономию своего времени не доплачивает ((( И за 4 года это всего 2ой раз, когда я не смог справиться своими силами...
При этом я готов оплатить данную доработку отозвавшемуся человеку, но данный вопрос уместнее решать в ЛС.

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

Цитата:
Сообщение от Boxa Посмотреть сообщение
Чтение и задание динамических параметров хоть с ручками, хоть без, ничем принципиально не отличаются.
И я это прекрасно понимаю! Потому и попросил доработать существующую программу, т.к. сам сделать это не в состоянии.
EfiRoMan вне форума  
 
Непрочитано 09.10.2017, 08:35
#4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от EfiRoMan Посмотреть сообщение
Я сам не программист, а инженер и работодатель мне за экономию своего времени не доплачивает
Я тоже не программист и мне так же не доплачивают. Однако, почему не подойти к начальству и не рассказать, о ситуации? Мол есть такая операция в работе, она отнимает столько то часов в месяц, нанять программиста и написать программу будет стоить N рублей, окупаемость Y месяцев, дальше только в плюсе. Начальник же не идиот и при такой подачи примет правильное решение.

Цитата:
Сообщение от EfiRoMan Посмотреть сообщение
При этом я готов оплатить данную доработку отозвавшемуся человеку, но данный вопрос уместнее решать в ЛС.
Для этого есть целый раздел на форуме: http://forum.dwg.ru/forumdisplay.php?f=33
Boxa вне форума  
 
Непрочитано 09.10.2017, 09:01
1 | 1 #5
kp+

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


Цитата:
Подобное делалось вот в этой теме, но только применительно к аттрибутам, а надо - к настройке ручек. Своего кода нет, но я специально сделал ссылку на похожую задачу - требуется только его доработать.
Еще по теме есть код уважаемого Алексея Кулика aka kpblc - как раз по программной настройке параметров дин. блоков: http://autolisp.ru/2014/06/27/dynblocks-parameters/
Остались "сущие пустяки" - объединить этот код с тем, что по ссылке в #1, да так, чтобы работало
kp+ вне форума  
 
Непрочитано 09.10.2017, 12:54
1 | #6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от kp+ Посмотреть сообщение
как раз по программной настройке параметров дин. блоков
Еще одна ссылка на сайт Lee Mac'a Dynamic Block Functions
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 09.10.2017, 19:15
#7
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Я тоже не программист и мне так же не доплачивают. Однако, почему не подойти к начальству и не рассказать, о ситуации? Мол есть такая операция в работе, она отнимает столько то часов в месяц, нанять программиста и написать программу будет стоить N рублей, окупаемость Y месяцев, дальше только в плюсе. Начальник же не идиот и при такой подачи примет правильное решение.
Спасибо, за ваше мнение, но по-моему, вы "немного" с масштабами проблемы ошибаетесь. Не реально без хронометража сопоставить затраты времени на ручное редактирование, а тем более - спрогнозировать объем работ по данной операции. И никакая организация не будет специально искать и нанимать программиста на решение такой мелкой задачи, которую грамотный в данном вопросе спец может решить в течение дня.

Поэтому я и готов отозвавшемуся заплатить со своего кармана, т.к. мания у меня такая - максимально исключать из работы рутинные операции и окупаемость данного мероприятия посчитать очень не просто. Обычно справляюсь своими силами, но что касается LISPа - к сожалению, нет столько свободного времени, чтобы ради раз в 4 года возникающей необходимости его изучать, а другими путями я уже пробовал (вставка обычных блоков и элементов с заранее рассчитанными параметры) - тоже есть некоторые нюансы.

kp+, спасибо что напомнили про эти функции, их тоже находил и это действительно один из основных ингредиентов решения поставленной задачи, добавил в стартовый топик, только вот решил упростить и за основу взять всем известный attout.lsp.

VVA, тоже благодарю за ссылку, но приведенные там функции, на мой далеко не профессиональный взгляд - лишь база в сравнении с функциями kpblc.
EfiRoMan вне форума  
 
Непрочитано 09.10.2017, 22:52
#8
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


EfiRoMan
Описание поставленной задачи - сумбур.
Приложите два файла, в одно что есть, в другом что надо, тогда хоть понятнее будет.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Автор темы   Непрочитано 10.10.2017, 04:56
#9
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Цитата:
Сообщение от maratovich Посмотреть сообщение
EfiRoMan
Описание поставленной задачи - сумбур.
Приложите два файла, в одно что есть, в другом что надо, тогда хоть понятнее будет.
Почему же? Описание задачи простое - доработать attout.lsp, чтобы он не только с атрибутами, но и с дин. свойствами работал.
Просто много сопутствующих букв написал, чтобы понятно зачем это и каким путем можно решить.
Файл приложил в стартовом посте, т.к. он действительно понадобится для проверки работы и улучшит восприятие вопроса.
В любом случае - спасибо за ваш комментарий, он был полезен для дополнительного уточнения задачи.
EfiRoMan вне форума  
 
Непрочитано 10.10.2017, 07:42
1 | #10
Кулик Алексей aka kpblc
Moderator

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


Сегодня утром нарисовал, тестируйте: http://autolisp.ru/2017/10/10/attr-a...rt-and-import/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2017, 09:17
#11
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Сегодня утром нарисовал, тестируйте: http://autolisp.ru/2017/10/10/attr-a...rt-and-import/
Алексей, большое спасибо, что откликнулись!
Пока экспорт не работает - только все заголовки в файле создает и пишет:
; ошибка: неверный тип аргумента: stringp 20.0

Если я правильно понял, то проблема в том что переменной назначили текстовый тип, а у нас у линейных параметров тип данных числовой. У отражения по-идее будет 2 состояния - без отражения (0) и отражено (1), но проблема в том, что в блоках в этих свойствах присутствуют текстовые заданные пользователем наименования состояния. Хотя вам наверняка это гораздо лучше меня известно и вполне возможно, что эта проблема ранее была решена.

Импорт вообще ничего не пишет, но это возможно потому, что я входной файл сам делал добавив данные по дин. свойствам к результату ATTOUT.
EfiRoMan вне форума  
 
Непрочитано 10.10.2017, 09:31
#12
Кулик Алексей aka kpblc
Moderator

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


Образец файла, плиз. Поскольку я тестировал на стандартных дин.блоках, поставляемых вместе с ACAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2017, 15:07
#13
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Кулик Алексей aka kpblc, так файл к стартовому топику приложен - на нем же и проверял.
EfiRoMan вне форума  
 
Непрочитано 10.10.2017, 15:41
#14
Кулик Алексей aka kpblc
Moderator

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


Код подправил, лежит на сайте, версия 1.1
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2017, 16:44
#15
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Кулик Алексей aka kpblc, ничего не изменилось ( результат прежний... проверил на блоках из палитры - та же самая проблема при экспорте:
; ошибка: неверный тип аргумента: stringp ...
Ну и в выходном файле только шапка
EfiRoMan вне форума  
 
Непрочитано 10.10.2017, 17:18
#16
Кулик Алексей aka kpblc
Moderator

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


Домой приеду, попробую снять видео для версии 1.1. У меня почему-то на твоем файле сработало. На штатных блоках тоже все хорошо. ACAD2016x64Eng+все обновления.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2017, 17:32
#17
EfiRoMan

Проектирование систем ТГВ
 
Регистрация: 30.01.2013
Хабаровск
Сообщений: 17
Отправить сообщение для EfiRoMan с помощью Skype™


Кулик Алексей aka kpblc, странно... первоначальный вариант я на 2017х64Rus проверял, завтра на работе запущу на 2017х64Eng, но разницы от языка точно не должно быть... Дома вообще 2013х32 стоит - все никак руки не дойдут все снести и переустановить... Хотя могу сейчас на удаленке на русской версии проверить, отпишусь, если результат изменится.
Ничего не изменилось... завтра еще посмотрю стоит ли последний SP, но боюсь, что есть какая-то другая причина...

Последний раз редактировалось EfiRoMan, 10.10.2017 в 17:42.
EfiRoMan вне форума  
 
Непрочитано 10.10.2017, 22:56
#18
Кулик Алексей aka kpblc
Moderator

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


Забыл одну функцию, прошу прощения. Обновил, см.1.2
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.10.2017, 02:01
#19
Омская птица


 
Регистрация: 20.03.2012
Сообщений: 833


Пробовал лисп 1.2 на акаде 2012 х 64 экспортирует шапку, без значений
Из Комстроки

DP-ATT-EXPORT
Выберите объекты: Противоположный угол: найдено: 8
Выберите объекты:
; ошибка: неверный тип аргумента: stringp 6243.94:

Менял значение числа на целое 6244 не помогло

шапка:

Name Handle ПОЛОЖЕНИЕ1 X ПОЛОЖЕНИЕ1 Y РАССТОЯНИЕ1
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 168
Размер:	69.8 Кб
ID:	194580  

Последний раз редактировалось Омская птица, 11.10.2017 в 02:11.
Омская птица вне форума  
 
Непрочитано 11.10.2017, 08:53
#20
Кулик Алексей aka kpblc
Moderator

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


То ли лыжи, то ли я: http://autode.sk/2zdCyWJ
Почему у меня-то все работает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP для изменения настраиваемых (Custom) параметров динамических блоков

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор динамических блоков по значению линейного параметра aso3 Программирование 30 26.08.2021 10:27
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Слетают размеры динамических блоков при копировании abnmt Динамические блоки 6 10.10.2014 11:04
Lisp. Как вставить описания всех блоков библиотеки блоков? Kirill_Ja LISP 5 11.04.2013 10:22
Вхождение динамических блоков Zorroko Динамические блоки 2 29.06.2011 17:57