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

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

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

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

Наверное, я слишком ленивый, но перед тем, как начать изучать lisp, хочу выяснить некоторые возможности данного языка.
В объектно-ориентированном программировании каждая копия одного объекта имеет свой набор внутренних переменных. Создали новую копию объекта - и присваиваем его локальным переменным свои значения, отличные от значений других копий объекта (терминология наверняка хромает).
Теперь о блоках. Вставляем из библиотеки блоков некий блок и несколько раз вставляем его в чертеж - таким образом, имеем несколько копий одного блока. Теперь о работе с ним посредством lisp. Если я средствами этого языка изменю некоторые размеры блока или текст внутри него - изменятся все блоки? Или можно работать с каждой копией отдельно? По аналогии с объектно-ориентированным программированием - все копии блока имеют один набор переменных, или у каждой копии свой набор переменных, каждый из которых можно менять отдельно? (под переменными здесь можно понимать, например, атрибуты блока).
Надеюсь, сильно ничего не напутал и смысл вопроса знающим программистам lisp понятен.
Просмотров: 11283
 
Непрочитано 08.01.2016, 07:59
#2
Кулик Алексей aka kpblc
Moderator

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


zenija2007, у тебя какая-то каша в голове. Во-первых, "переменных" объектов не бывает - есть методы и свойства (и, соответственно, их значения). Во-вторых, изучи разницу между описанием блока и его вхождением.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.01.2016, 13:09
#3
Сергей812


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


до того, как что-то будете автоматизировать в акаде - сначала "покрутите" данный объект автоматизации ручками, поймите возможности самой программы. Чтобы не возникало вопросов типа:

Цитата:
Сообщение от zenija2007 Посмотреть сообщение
Если я средствами этого языка изменю некоторые размеры блока или текст внутри него - изменятся все блоки? Или можно работать с каждой копией отдельно?
Сергей812 вне форума  
 
Непрочитано 08.01.2016, 15:44
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Да он ведь слишком ленивый.
Profan вне форума  
 
Непрочитано 08.01.2016, 16:21
#5
Сергей812


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


Ну можно полистать настольную книгу начинающих лисповцев "AutoLISP и Visual LISP в среде AutoCAD" от Полещука.. чтобы понять возможности языка..
Сергей812 вне форума  
 
Непрочитано 11.01.2016, 14:36
#6
AlexZh


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну можно полистать настольную книгу начинающих лисповцев "AutoLISP и Visual LISP в среде AutoCAD" от Полещука.. чтобы понять возможности языка..
шикарная книга для программирования. теперь у меня настольная.
AlexZh вне форума  
 
Непрочитано 12.01.2016, 12:19
#7
allrather


 
Регистрация: 27.02.2011
Минск
Сообщений: 169
Отправить сообщение для allrather с помощью Skype™


zenija2007, дружище, нет смысла изучать лисп, пока ты не понимаешь, как работают блоки в автокад. Начни с изучения автокада.

Цитата:
Сообщение от zenija2007 Посмотреть сообщение
Надеюсь, сильно ничего не напутал и смысл вопроса знающим программистам lisp понятен.
Я, вообще, Лиспа не знаю, но Вы мне напоминаете человека, который где-то увидел 1-й раз, как можно управлять блоками при помощи языка программирования и даже не подумав о том, что да как и где это может пригодиться, начал писать сюда.

Цитата:
Сообщение от zenija2007 Посмотреть сообщение
Наверное, я слишком ленивый, но перед тем, как начать изучать lisp, хочу выяснить некоторые возможности данного языка.
Возможности безграничны. Думаю, не открыл тебе секрет.
allrather вне форума  
 
Непрочитано 12.01.2016, 14:54
#8
Do$

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


Цитата:
Сообщение от allrather Посмотреть сообщение
Возможности безграничны. Думаю, не открыл тебе секрет.
Это не так. Возможности Auto- и VisualLISP довольно ограничены и сильно уступают возможностям .NET и ObjectARX.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 12.01.2016, 15:05
#9
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Do$ Посмотреть сообщение
Это не так. Возможности Auto- и VisualLISP довольно ограничены и сильно уступают возможностям .NET и ObjectARX.
Они конечно ограничены, но за примерно 10 лет работы с Автокадом в разных областях, я не видел принципиального преимущества .NET перед лиспом. Скорость, безусловно, в разы больше, но зачастую она не имеет особого смысла. ObjectARX способен создавать свои объекты, это огромный плюс. Но опять же в 99% случаев этого не требуется. ActiveX значительно расширил инструментарий, так что связь с Виндавс тоже налаживается довольно неплохо, так что можно смело работать с лиспом. Он прост и, как правило, не требует перекомпиляции в отличии от других языков. Хоть в 2008-й его втыкай, хоть в 2016-й. Это кстати, как показывает практика, огромнейший плюс.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 12.01.2016, 15:07
#10
allrather


 
Регистрация: 27.02.2011
Минск
Сообщений: 169
Отправить сообщение для allrather с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
Это не так. Возможности Auto- и VisualLISP довольно ограничены и сильно уступают возможностям .NET и ObjectARX.
Серьезно? Просто, мне пока, вообще, VBA хватает..
Я был бы очень признателен за хоть один какой-нибудь конкретный жизненный пример?
allrather вне форума  
 
Непрочитано 12.01.2016, 15:31
#11
Boxa

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


Цитата:
Сообщение от allrather Посмотреть сообщение
Я был бы очень признателен за хоть один какой-нибудь конкретный жизненный пример?
Любое действие связанное с интерактивным взаимодействием с пользователем.
К примеру, увы, но в VBA добавить мультивыноску Вы сможете только указав пару точек, в .net Вы видите что и куда добавляете.
Ну маленький пример, это писалось на C# под акад с использованием библиотеки MultiCAD: Видео
Boxa вне форума  
 
Непрочитано 12.01.2016, 15:36
#12
Сергей812


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


И не забывайте, что при использовании .NET получаете доступ к самой технологии программирования. А там есть немало интересных вещей в принципе)
Сергей812 вне форума  
 
Непрочитано 12.01.2016, 15:56
#13
allrather


 
Регистрация: 27.02.2011
Минск
Сообщений: 169
Отправить сообщение для allrather с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Любое действие связанное с интерактивным взаимодействием с пользователем.
К примеру, увы, но в VBA добавить мультивыноску Вы сможете только указав пару точек, в .net Вы видите что и куда добавляете.
Интерактивного взаимодействия в VBA полно. Я могу указать пару точек, могу указать одну, а вторую высчитать в зависимости от масштаба. Также, я могу, вообще высчитать все координаты. Блин, ну все же то же самое! Разве нет?

Цитата:
Сообщение от Boxa Посмотреть сообщение
Ну маленький пример, это писалось на C# под акад с использованием библиотеки MultiCAD: Видео
Я Вам верю, уповая на Ваш опыт. Но, честно сказать, до конца не понимаю, что из данного видео я не смогу сделать на VBA. Конечно, есть моменты. Например, с зеркальным отображением выноски! Согласен, тут волшебство. Это то самое влияние на технологию, о которой чуть выше писал Сергей812??

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И не забывайте, что при использовании .NET получаете доступ к самой технологии программирования. А там есть немало интересных вещей в принципе)
Но просто я не вижу здесь сверхплюшек, которые бы заставили меня перейти на нет. Видимо, не созрел еще.

Offtop: По жизни всегда работает баланс энергии. Например, в данной ситуации он выглядит так:
Пока энергия, затрачиваемая при переходе на .Net, будет меньше энергии, затрачиваемой на преодоление неудобств при работе с VBA, до тех пор того самого перехода и не будет.

Прошу прощения, братцы. Чет за жизнь уже начал.
allrather вне форума  
 
Непрочитано 12.01.2016, 16:07
#14
Boxa

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


Offtop:
Цитата:
Сообщение от allrather Посмотреть сообщение
Интерактивного взаимодействия в VBA полно. Я могу указать пару точек, могу указать одну, а вторую высчитать в зависимости от масштаба. Также, я могу, вообще высчитать все координаты. Блин, ну все же то же самое! Разве нет?
нет, совсем не одно и тоже, смотри видео, при вставке выноски я вижу ее содержимое и соответственно вставляю не в слепую, я знаю как это будет выглядеть после завершения команды.
Да и в видео, ссылку на которое я давал ранее, есть момент выноса видового экрана на лист, заметь, перетаскивая видовой экран в рамках одной команды, я прекрасно вижу его содержание и могу корректно расположить его на листе.
Увы, такое взаимодействие с пользователем в рамках VBA невозможно.
Но это все оффтоп, а потому надо заканчивать...
Boxa вне форума  
 
Непрочитано 12.01.2016, 16:23
#15
allrather


 
Регистрация: 27.02.2011
Минск
Сообщений: 169
Отправить сообщение для allrather с помощью Skype™


Offtop:
Цитата:
Сообщение от Boxa Посмотреть сообщение
Offtop:
Цитата:
Сообщение от allrather
Интерактивного взаимодействия в VBA полно. Я могу указать пару точек, могу указать одну, а вторую высчитать в зависимости от масштаба. Также, я могу, вообще высчитать все координаты. Блин, ну все же то же самое! Разве нет?
нет, совсем не одно и тоже, смотри видео, при вставке выноски я вижу ее содержимое и соответственно вставляю не в слепую, я знаю как это будет выглядеть после завершения команды.
Да и в видео, ссылку на которое я давал ранее, есть момент выноса видового экрана на лист, заметь, перетаскивая видовой экран в рамках одной команды, я прекрасно вижу его содержание и могу корректно расположить его на листе.
Увы, такое взаимодействие с пользователем в рамках VBA невозможно.
Но это все оффтоп, а потому надо заканчивать...
Да, Вы правы, заканчивать надо. Спасибо за информацию, несколько важных моментов я уяснил! Спасибо!
allrather вне форума  
 
Непрочитано 12.01.2016, 18:24
#16
Do$

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


Цитата:
Сообщение от ProPeller Посмотреть сообщение
Они конечно ограничены, но за примерно 10 лет работы с Автокадом в разных областях, я не видел принципиального преимущества .NET перед лиспом. Скорость, безусловно, в разы больше, но зачастую она не имеет особого смысла. ObjectARX способен создавать свои объекты, это огромный плюс. Но опять же в 99% случаев этого не требуется. ActiveX значительно расширил инструментарий, так что связь с Виндавс тоже налаживается довольно неплохо, так что можно смело работать с лиспом. Он прост и, как правило, не требует перекомпиляции в отличии от других языков. Хоть в 2008-й его втыкай, хоть в 2016-й. Это кстати, как показывает практика, огромнейший плюс.
Это странно. Да, у LISP есть преимущества - он прост в освоении "с нуля" и приложения LISP практически не привязаны к версии AutoCAD и его разрядности. Но чем сложнее появляются задачи, тем очевиднее, что его возможностей недостаточно для серьезной разработки приложений под AutoCAD. Я уже после трех лет работы с LISP столкнулся с кучей ограничений. Основные:
  • Диалоги только по устаревшей технологии DCL. Технологии Windows Forms и WPF, которые можно использовать в .NET - это космос по сравнению с DCL.
  • В LISP нет возможности создавать немодальные диалоги.
  • LISP программа работает только в контексте текущего чертежа. То есть, в принципе, с текущим чертежом можно делать многое, но когда нужно работать с несколькими документами - тут уже LSIPа мало.
  • Отрисовка временной графики. В LISP приходилось очень сильно извращаться, чтобы добиться более-менее подходящего результата, в частности - использовать DynDraw от А.Ривилиса. В .NET с этим все гораздо проще.
  • Возможности по адаптации инструментов выбора. Попробуйте, например, в LISP сделать выбор нескольких объектов с собственным сообщением около курсора при выборе (при включенном динамическом вводе).
  • Среда разработки VLIDE уже сильно устарела, а Visual Studio активно развивается. В ней гораздо комфортнее работать.
  • Масштабные приложения на LISP писать сложно, т.к. это функциональный язык. Объектно-ориентированный язык (C#, VB.NET...) для этого больше подходит.
Скорость работы приложений - она не в разы больше, а на порядки! Это очень хорошо чувствуется при переводе LISP программ на .NET. То, что у меня выполнялось несколько минут и требовало различных индикаторов длительного процесса, стало выполняться мгновенно. Минуты против миллисекунд! Особенно "тормозят" в LISP наборы объектов (объекты SELSET, функция SSGET), но без них автоматически обработать объекты чертежа невозможно.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 14.01.2016, 13:38
#17
ciril

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Но чем сложнее появляются задачи, тем очевиднее, что его возможностей недостаточно для серьезной разработки приложений под AutoCAD.
Не соглашусь. Возможностей недостаточно почти только в тех случаях, когда API акада не реализованы для вызова из лиспа и в написании пользовательских примитивов. Все остальные выведенные недостатки, по моему мнению, исключительно дело вкуса или уж очень специфичности задач, а уж никак не их сложности И не совсем понятно, чем мало средств лиспа для работы с несколькими чертежами
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 14.01.2016, 16:35
#18
Do$

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


Цитата:
Сообщение от ciril Посмотреть сообщение
Все остальные выведенные недостатки, по моему мнению, исключительно дело вкуса или уж очень специфичности задач, а уж никак не их сложности
Ну как сказать специфичность... Диалоговые окна, например, очень часто нужны. Отрисовка временной графики - тоже. Надо же иметь представление об объекте, прежде, чем он будет вставлен в чертеж и оценить его размещение. Ну т.д. Думаю, что Ваши суждения основываются на том, что с LISP Вы хорошо знакомы, а про .NET читали и слышали, но сами не пробовали. Или я ошибаюсь?
Цитата:
Сообщение от ciril Посмотреть сообщение
И не совсем понятно, чем мало средств лиспа для работы с несколькими чертежами
Ну, скажем так: когда я писал на LISP и передо мною вставали вопросы обработки нескольких чертежей на LISP (открытие/создание чертежей, перенос объектов между ними), то приходилось очень сильно напрягаться и в результате не всегда получалось именно так, как мне хотелось. В .NET с этим проблем нет никаких - практически абсолютная свобода действий.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 14.01.2016, 17:28
#19
ciril

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


Действительно, .NET не пробовал ни разу Сам, опять же с диалоговые обхожу, а отрисовку временной графики реализую лиспом, не скажу, что это не извращение, но хватает По моему опыту, такая же абсолютная свобода действий в обработке нескольких чертежей, не важно открытых или закрытых.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 14.01.2016, 18:01
#20
Александр Ривилис

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


Цитата:
Сообщение от ciril Посмотреть сообщение
По моему опыту, такая же абсолютная свобода действий в обработке нескольких чертежей, не важно открытых или закрытых.
Даже не смешно...
Александр Ривилис вне форума  
Ответ
Вернуться   Форум 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