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

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

Переменные блоков в autocad

Ответ
Поиск в этой теме
Непрочитано 08.01.2016, 04:39
Переменные блоков в autocad
zenija2007
 
Регистрация: 18.09.2015
Сообщений: 120

Наверное, я слишком ленивый, но перед тем, как начать изучать lisp, хочу выяснить некоторые возможности данного языка.
В объектно-ориентированном программировании каждая копия одного объекта имеет свой набор внутренних переменных. Создали новую копию объекта - и присваиваем его локальным переменным свои значения, отличные от значений других копий объекта (терминология наверняка хромает).
Теперь о блоках. Вставляем из библиотеки блоков некий блок и несколько раз вставляем его в чертеж - таким образом, имеем несколько копий одного блока. Теперь о работе с ним посредством lisp. Если я средствами этого языка изменю некоторые размеры блока или текст внутри него - изменятся все блоки? Или можно работать с каждой копией отдельно? По аналогии с объектно-ориентированным программированием - все копии блока имеют один набор переменных, или у каждой копии свой набор переменных, каждый из которых можно менять отдельно? (под переменными здесь можно понимать, например, атрибуты блока).
Надеюсь, сильно ничего не напутал и смысл вопроса знающим программистам lisp понятен.
Просмотров: 11295
 
Непрочитано 14.01.2016, 21:29
#21
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Оффтоп про AutoLisp и .Net:
1. Я бы не сказал что автолисп проще в изучении чем .Net - "порог входа" там безусловно ниже (можно через час чего-то самому написать), но для написания чего-то нормального - требуется достаточно приличная подготовительная работа + для использования приемуществ лисп программирования - надо писать в соответствующей парадигме - а она сильно не похожа на классику мейнстрима. ИХМО для человека знакомого с .Net гораздо быстрее освоить .Net Api нежели лисп (хотя для человека знакомого с не авто лиспом - последний покажется детской игрушкой - но таких людей меньше).
2. В автолиспе есть проблемы с рядом вышеописанных "функционалов". Но, хоть и криво - они решаются, и самое главное - не стоит сравнивать в этом аспекте "общие" языки со скриптовым диалектом программы - хоть и хорошо сделанном.
3. Если нужен "инструмент под автокад" - автолисп идеален для его разработки - в большинстве случаев все требования красоты и окон - это больше придирки чем необходимость - "большая половина" штатных команд автокада работает без них - и думаю если все их "разукрасить" получиться "винегрет" который хорош для рекламных роликов - а не для работы.
Другое дело если речь идет о специалазированном приложении которое "для удобства" работает из-под автокада, но основная его работа это "математика" (в автолиспе с ней кстати все совсем не плохо - за исключением того, что медленно), общение с СУБД, формирование отчетов во всевозможных форматах ну и конечно GUI. У меня например одно из таких, если мерить в процентах строк кода - то "автокадных" там - 2% - jig, чтение данных, публикация + еще по мелочи (к слову публикацию автокад делает одинаково отвратительно во всех вариантах - что лисп, что .Net - и все что можно печатать без него - формирую автоматом в PDF через .Net библиотеки - в общем львинная доля печати - опять-же не в нем). Если сразу понятно что пишется и в каких масштабах - то это сильно облегчит будущую работу и стратегии выбора, не забываем кстати - что автолисп и .Net это в общем не исключающие друг-друга технологии - которые могут прекрасно взаимодействовать между собой в "обе стороны".
Резюме - часто почему-то не берут в расчет один из наиважнейших параметров ПО - скорость разработки (то есть, с некоторыми коэффицентами - ее себестоимость) и по этому, повторюсь, крайне важному параметру лично я не могу выделить фаворита - зависит от ТЗ - возможны сильные перекосы в ту или иную сторону.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.01.2016, 21:41
#22
Кулик Алексей aka kpblc
Moderator

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


Offtop: Добавлю только одно: совместимость по версиям. .NET библиотеки приходится компилировать под определенные требования; lisp-приложения (если, конечно, они написаны более-менее нормально) будут работать и в 2004, и в 2016 версиях
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.01.2016, 09:30
#23
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Даже не смешно...
Что именно с помощью лиспа невозможно сделать с чертежом, который в данный момент не открыт?
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 16.01.2016, 13:37
#24
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ciril Посмотреть сообщение
Что именно с помощью лиспа невозможно сделать с чертежом, который в данный момент не открыт?
Да даже простейшая операция вызовет кучу сложностей - создать новый чертеж, сделать его активным и закрыть тот, который был до этого активным.
Или, не открывая чертеж в AutoCAD, пересохранить его в другой версии.
Или, опять же, не открывая чертеж в AutoCAD, получить список блоков из чертежа с их картинками-превьюшками и вывести этот список в диалог.
Много примеров придумать можно.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 16.01.2016, 14:33
#25
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от ciril Посмотреть сообщение
Что именно с помощью лиспа невозможно сделать с чертежом, который в данный момент не открыт?
Легче написать что можно сделать...
Ну, например, определи при помощи лиспа что чертеж создан в Учебной версии AutoCAD.
Или определи в какой версии AutoCAD или вертикального приложения чертеж был сохранён (не путай только с версией dwg-файла).
Александр Ривилис вне форума  
 
Непрочитано 16.01.2016, 15:08
#26
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,035


Или у меня пробел в знаниях, или такое ощущение - что немного терминология не точна. Под:
Цитата:
Сообщение от Do$ Посмотреть сообщение
Или, опять же, не открывая чертеж в AutoCAD, получить список блоков из чертежа с их картинками-превьюшками и вывести этот список в диалог.
подразумевается, что не загружается визуально чертеж (открытие документа), но в сам файл dwg то влезаем (т.е. просто напрямую работаем с БД чертежа через соответствующие функции)?
Сергей812 вне форума  
 
Непрочитано 16.01.2016, 17:45
#27
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
подразумевается, что не загружается визуально чертеж (открытие документа), но в сам файл dwg то влезаем (т.е. просто напрямую работаем с БД чертежа через соответствующие функции)?
Да. В VisualLisp есть очень "обрезанная" возможность для этого - ObjectDBX: http://autolisp.ru/2010/04/08/procee...tive-document/
Александр Ривилис вне форума  
 
Непрочитано 17.01.2016, 23:39
#28
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
но в сам файл dwg то влезаем (т.е. просто напрямую работаем с БД чертежа через соответствующие функции)
Да, именно так. Просто, насколько я помню, в Auto-,VisualLISP API нет такого понятия, как "база данных чертежа". Поэтому, я его и не использовал.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 18.01.2016, 02:00
#29
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Почему нет, если мы под базой данных принимаем реляционный вид данных (что не является таковым - но терминологически так сложилось), то в таком виде ее нет ни в каком из представленных автодеском API (хотя написать конечно можно). COM имеет "чистое" ООП представление, в том-же виде и .Net API, просто для более низкоуровневой "сишной" совместимости моделей вывели наружу еще и указатели. В лиспе представлена разновидность очень мощной списочной базы данных - DXF. Свою эффективность и гибкость она доказала годами использования и с абстрактной точки зрения именно она лежит в основе представления данных чертежа - а как раз низкоуровневое "сишное" представления - это только вариант ее реализации.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.01.2016, 02:16
#30
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
В лиспе представлена разновидность очень мощной списочной базы данных - DXF. Свою эффективность и гибкость она доказала годами использования и с абстрактной точки зрения именно она лежит в основе представления данных чертежа - а как раз низкоуровневое "сишное" представления - это только вариант ее реализации.
А вот тут ты не прав, т.к. есть множество вещей, которые с базой через DXF сделать нельзя, а вот при помощи "сишного" представления - можно. Особенно хорошо это заметно с объектами вертикальных приложений.
Александр Ривилис вне форума  
 
Непрочитано 18.01.2016, 11:16
#31
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Почему нет, если мы под базой данных принимаем реляционный вид данных (что не является таковым - но терминологически так сложилось), то в таком виде ее нет ни в каком из представленных автодеском API (хотя написать конечно можно). COM имеет "чистое" ООП представление, в том-же виде и .Net API, просто для более низкоуровневой "сишной" совместимости моделей вывели наружу еще и указатели. В лиспе представлена разновидность очень мощной списочной базы данных - DXF. Свою эффективность и гибкость она доказала годами использования и с абстрактной точки зрения именно она лежит в основе представления данных чертежа - а как раз низкоуровневое "сишное" представления - это только вариант ее реализации.
Блин-блинский Тяжело с умными людьми Я имел в виду, что LISP программисты не знакомы с термином "база данных чертежа". В .NET есть отдельный объект Database и связанный с ним объект Document. В LISP такого разделения нет. Я помню, как при переходе с LISP на .NET мне было сложно понять, что это за база данных и как с ней работать.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 18.01.2016, 11:21
#32
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Вот я когда перечитал, что сам написал - сразу подумал что именно Вы меня будете "подлавливать". Тем не менее - базовое представление чертежа это именно dxf - что не все выраженно непосредственно в нем (но тем не менее все сохраниться если сохранить-прочитать в dxf) это факт - чего-то просто решили не выносить в формат - а оставлять в "сыром" виде. Но, например, у меня самого есть функция для сериализации, запаковки и занесении в расширенные данные готового объекта который при "оверрулях" распаковывается (или читается из кеша по ключу ObjectId) и исполняется - что это в данном случае? ARX в "голом" виде Вам тут тоже не поможет.
з.ы. В вышеупомянутых реляционных СУБД - основой является SQL представление - именно через него выраженна вся абстракция данных, но тем не менее в каждой конкретной физической реализации есть "потроха" недоступные для SQL представления, что кстати противоречит нулевому (то есть самому первому) правилу Кодда, но реальность такова. ИХМО здесь аналогичная ситуация.
з.з.ы. to Dos - На .Net так-же мало знакомы с тем-же DXF - и ничего.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.01.2016, 12:25
#33
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,035


На мой взгляд не профессионального программиста, который пробовал писать на VBA, lisp и Net -> ObjectARX как был изначально средой разработки приложений для AutoCAD для профессиональных программистов (в данном случае под профессиональными понимаю - те, у кого это один из основных, а не прикладной вид деятельности), так ею и остался. Net очень много вещей скрывает внутри своей среды исполнения, и сравнивать его с С++
Цитата:
Сообщение от Дима_ Посмотреть сообщение
Но, например, у меня самого есть функция для сериализации, запаковки и занесении в расширенные данные готового объекта который при "оверрулях" распаковывается (или читается из кеша по ключу ObjectId) и исполняется - что это в данном случае? ARX в "голом" виде Вам тут тоже не поможет.
вообще бессмысленно, имхо)
Сергей812 вне форума  
 
Непрочитано 18.01.2016, 12:50
#34
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в данном случае под профессиональными понимаю - те, у кого это один из основных, а не прикладной вид деятельности
Ну тогда, в вашей терминологии, я профессионал - но на ARX я не пишу, хоть иногда и пишу на Си - но не под автокад - как это сочетается с Вашей теорией?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.01.2016, 13:23
#35
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,035


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Ну тогда, в вашей терминологии, я профессионал - но на ARX я не пишу, хоть иногда и пишу на Си - но не под автокад - как это сочетается с Вашей теорией?
Вы спутали язык программирования и сферу (вид) деятельности) Здесь чисто логически - если человек занимается основную часть рабочего времени определенным видом деятельности (за которую ему платят деньги) и у него есть желание развиваться - то со временем он достигнет определенного профессионального уровня. Он может достичь этого в нескольких областях (если хватит силы воли и будет время и возможность). А есть люди интересующиеся и думающие, которые не просто делают свои работу, а стараются изучить и применить на практике что то новенькое для себя, включая и другие области.
Сергей812 вне форума  
 
Непрочитано 18.01.2016, 15:32
#36
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
(но тем не менее все сохраниться если сохранить-прочитать в dxf)
Нет. Неоднократно сталкивался с тем, что dxf-файл, сохранённый из вертикального приложения (конкретно AutoCAD Architecture), не открывается ни в этом вертикальном приложении, ни в чистом AutoCAD той же версии. Т.е. dxf-файл не является достаточно полным отображением dwg-файла. Причина в том, что многие методы dxfOutFields оставляют пустыми (в отличие от dwgOutFields) в Custom objects.
Александр Ривилис вне форума  
 
Непрочитано 18.01.2016, 18:24
#37
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Кстати, да. Объекты Civil тоже не сохраняются в DXF файле.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 19.01.2016, 03:05
#38
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Причина в том, что многие методы dxfOutFields оставляют пустыми...
Лентяи... Хотя конечно ничто не вечно под луной и быть может в этом виде оно уже действительно не актуально, расстраивает что другой абстрактной модели данных такого-же уровня не предложенно.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переменные блоков в autocad

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2012 Поиск по атрибутам блоков yurka52rus AutoCAD 8 17.07.2020 12:09
Выгрузка данных SQL server в значения атрибутов блоков Autocad Cosmosila Прочее. Программное обеспечение 14 05.03.2013 13:04
Копирование блоков из AutoCad Civil 2010 в AutoCad 2007 BoTTePa3 AutoCAD 2 13.02.2012 18:50
Извлечение значений атрибутов блоков AutoCAD Electrical с помощью AutoLisp zaraki_kenpachi LISP 16 19.02.2011 15:30
Системные переменные для AutoCAD Architecture? Павлюкас Программирование 6 09.06.2009 08:23