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

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

Очередная попытка опустить LISP.

Закрытая тема
Поиск в этой теме
Непрочитано 02.11.2018, 11:26 #1
Очередная попытка опустить LISP.
Setvar
 
Москва
Регистрация: 10.02.2007
Сообщений: 611

Для любителей C# и .Net есть свои разделы. Нет, им надо было здесь, в разделе LISP всё обгадить.

Последний раз редактировалось Setvar, 07.11.2018 в 14:20.
Просмотров: 4901
 
Непрочитано 02.11.2018, 11:33
#2
Кулик Алексей aka kpblc
Moderator

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


Копирования куда?

----- добавлено через 23 сек. -----
В таблицу? Новый однострочный / многострочный текст?

----- добавлено через ~2 мин. -----
Что будет, если в мультивыноске используется блок, а не текст? Почему игнорируется обычная выноска?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.11.2018, 11:40
#3
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Zero

Последний раз редактировалось Setvar, 07.11.2018 в 09:22.
Setvar вне форума  
 
Непрочитано 05.11.2018, 12:29
#4
ИН}|{ЕНЕР


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


Изначально, хотелось бы, чтобы текст из мультивыноски копировался в буфер.
ИН}|{ЕНЕР вне форума  
 
Автор темы   Непрочитано 05.11.2018, 12:57
#5
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Zero

Последний раз редактировалось Setvar, 07.11.2018 в 09:22.
Setvar вне форума  
 
Непрочитано 05.11.2018, 13:51
#6
Сергей812


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


Цитата:
Сообщение от Setvar Посмотреть сообщение
В буфер обмена в самом AutoCAD'е (а не внутри встроенного редактора текста) копируется ОБЪЕКТ.
Offtop: чтож вы так, не оправдали надежд ИН}|{ЕНЕР )
Решение от Mac Lee
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.11.2018, 15:52
#7
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Zero

Последний раз редактировалось Setvar, 07.11.2018 в 09:22.
Setvar вне форума  
 
Непрочитано 05.11.2018, 16:25
1 | #8
Сергей812


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


Цитата:
Сообщение от Setvar Посмотреть сообщение
Содержимое в виде МТекста записывается в буфер, однако в новую мультивыноску не вставляется.
вставить в буфер обмена Windows и вставить в мультитекст выноски - это две совершенно разные задачи)

Цитата:
Сообщение от Setvar Посмотреть сообщение
А где решение от Сергей 12? Паясничать легко.
Легко писать на "нормальных" языках, где не требуется изобретать велосипед на каждый чих. Набросал по быстрому на .Net пример копирования содержимого выделенной мультивыноски в буфер обмена Windows:

Код:
[Выделить все]
// Windows
using System.Linq;
using wf = System.Windows.Forms;

// AutoCAD
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;


namespace CopyTextMLeaderInClipboard
{
    public class CommandsClass
    {
        /// <summary>
        /// Копирование содержимого выделенное мультивыноски в буфер обмена 
        /// </summary>
        [CommandMethod("Копировать_текст_из_выноски_в_буфер", 
            CommandFlags.Redraw | CommandFlags.UsePickSet)]
        public void CopyTextMLeaderInClipboard()
        {
            // Получаем текущий документ, его БД и редактор
            Document lAcadDoc = Application.DocumentManager.MdiActiveDocument;
            Database lAcadDb = lAcadDoc.Database;
            Editor lAcadEd = lAcadDoc.Editor;
            // Получаем выбранные пользователем примитивы в случае их наличия
            PromptSelectionResult lPrompSelRes = lAcadEd.SelectImplied();
            // Если выборка успешна
            if (lPrompSelRes.Status == PromptStatus.OK)
            {
                // Получаем массив идентификаторов выделенных объектов
                ObjectId[] lListSelObjectIDs = lPrompSelRes.Value.GetObjectIds();
                // Если один выбранный примитив
                if (lListSelObjectIDs.Count() == 1)
                {
                    // Открываем транзакцию
                    using (Transaction lAcadTrans = lAcadDoc.TransactionManager.StartTransaction())
                    {
                        // Получаем объект по его идентификатору из БД
                        DBObject lDBObject = lAcadTrans.GetObject(
                            lListSelObjectIDs[0], OpenMode.ForRead);
                        // Пытаемся привести к типу мультивыноски
                        MLeader lMLeader = lDBObject as MLeader;
                        // Если не удалось
                        if (lMLeader == null)
                        {
                            lAcadEd.WriteMessage(
                                "\nБыла выделена не мультивыноска перед вызовом команды!\n");
                        }
                        else
                        {
                            // Если тип содержимого мультивыноски - мультитекст
                            if (lMLeader.ContentType == ContentType.MTextContent)
                            {
                                try
                                {
                                    // То копируем в буфер
                                    wf.Clipboard.SetText(lMLeader.MText.Text,
                                        wf.TextDataFormat.UnicodeText);
                                }
                                catch (System.Exception)
                                {
                                    lAcadEd.WriteMessage(
                                        "\nПроизошла  ошибка при копировании в буфер!\n");
                                }
                            }
                            else
                            {
                                lAcadEd.WriteMessage("\nСодержимое мультивыноски - не текст!\n");
                            }
                        }
                        lAcadTrans.Commit();
                    } 
                }
                else
                {
                    lAcadEd.WriteMessage("\nВыделено более одного примитива!\n");
                }
            } 
            else
            {
                lAcadEd.WriteMessage("\nВыделите мультивыноску перед вызовом команды!\n");
            }
        }

    }
}


Пример рабочий, удаляет при копировании в буфер все форматирование кроме символов переноса.
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.11.2018, 16:40
#9
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Zero

Последний раз редактировалось Setvar, 07.11.2018 в 09:22.
Setvar вне форума  
 
Непрочитано 05.11.2018, 17:24
#10
Сергей812


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


Цитата:
Сообщение от Setvar Посмотреть сообщение
Зря ты это сделал. Раздел про LISP.
а может перестать трястись над лиспом, и начать осваивать те языки и средства разработки - которые не остановились в развитии много лет назад? И которые обеспечивают "из коробки" функционал, который в лиспе надо реализовать в виде библиотек функций? Кто уже давно на лиспе пишет - у тех эти наработки уже есть, а вот начинающим программистам-самоучкам под большим вопросом - нужен ли вообще этот лисп...
Сергей812 вне форума  
 
Непрочитано 06.11.2018, 09:21
| 1 #11
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Решение от Mac Lee
да и не его это вовсе решение)

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Легко писать на "нормальных" языках, где не требуется изобретать велосипед на каждый чих.
LISP идеально подходит для решения рутинных задач в автокаде, для которых писать на c-подобных языках не имеет никакого смысла: 1. пишешь и тут же видишь результат, 2. не нужно ничего собирать, компилиировать, отслеживать версии продукта и т.д. и т.п. 3. и самое главное - нет необходимости устанавливать на компе среду написания на этом самом NET.
если же конечно необходимо решать более сложниые задачи, то тогда наверное стоит, но Сергей812, не следует спамить в теме LISP постоянными отсылками на простоту нета, на то как в нём это просто делается и тому подобное. здесь люди спрашивают и пытаются решить/получить ответы на свои вопросы, используя строго LISP. ну и если же вы являетесь таким уж бескомпромиссным апологетом нета, так для вас специально и создана ветка про нет, занимайтесь своим рекрутированием там)

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
нужен ли вообще этот лисп...
да как же без него) и потом выбор языка программирования - это ЛИЧНОЕ ДЕЛО КАЖДОГО начинающего программиста!

Цитата:
Сообщение от Setvar Посмотреть сообщение
Зря ты это сделал. Раздел про LISP. Здесь достаточно было сообщения #1.
koMon вне форума  
 
Непрочитано 06.11.2018, 09:58
#12
Сергей812


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


Offtop:
Цитата:
Сообщение от koMon Посмотреть сообщение
1. пишешь и тут же видишь результат,
заодно это отучает начинающего программиста продумывать архитектуру программы, а не писать "быдлокод".

Цитата:
Сообщение от koMon Посмотреть сообщение
не нужно ничего собирать, компилиировать, отслеживать версии продукта и т.д. и т.п. 3. и самое главное - нет необходимости устанавливать на компе среду написания на этом самом NET.
На скольких версиях акада обычно одновременно работает средний пользователь?) А зачастую изменение версии программы .Net сводится к подключению нескольких библиотек из нужной версии акада и нажатием кнопки пересобрать проект - это конечно "огромная" работа) А студий разработки бесплатных более чем достаточно.

Цитата:
Сообщение от koMon Посмотреть сообщение
не следует спамить в теме LISP постоянными отсылками на простоту нета,
я показал работающий пример под катом для сравнения, с подробными комментариями - у вас пока только демонстрация понтов идет с раздачей никому не нужных ЦУ)
Сергей812 вне форума  
 
Непрочитано 06.11.2018, 11:08
#13
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Offtop: удивительное дело - а ведь существует устоявшееся мнение, что это культурная столица)))
koMon вне форума  
 
Непрочитано 06.11.2018, 23:13
#14
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 178


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
я показал работающий пример под катом для сравнения,
Спасибо за код, надо у себя попробовать повешу отдельной командной.

Offtop: Сергей812 мне как и Вам жалко что очень много народу на этом форуме пишут на ЛИСПе, я не могу понять почему? есть же хотя бы VBA. Я уж молчу о чуде Net-e.
veb86 вне форума  
 
Непрочитано 06.11.2018, 23:34
#15
Сергей812


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


Offtop:
Цитата:
Сообщение от veb86 Посмотреть сообщение
очень много народу на этом форуме пишут на ЛИСПе,
исторически сложилось: кто начинал программировать под акад с момента его появления на отечественном рынке - выбора особого не было) Сейчас выбор есть и есть русскоязычные источники (не все способны воспринимать информацию с англоязычных ресурсов).
Сергей812 вне форума  
 
Непрочитано 07.11.2018, 01:29
#16
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от veb86 Посмотреть сообщение
пишут на ЛИСПе, я не могу понять почему?
Offtop: потому что лисп перекрывает 90% потребностей пользователя
еще 5%, это если не устраивает быстродействие лиспа
и еще 5% для каких-то низкоуровневых функций или автокада или ОС
и в том и в другом случае целесообрознее будет использовать ObjectArx

зы http://forum.dwg.ru/showpost.php?p=182562&postcount=3
Vov.Ka вне форума  
 
Непрочитано 07.11.2018, 02:03
#17
Сергей812


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


Offtop:
Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
потому что лисп перекрывает 90% потребностей пользователя
если быть точнее, 99% пользователей способны только запустить чужой лисп) Естественно, для них скомпилировать сборку для их версии акада даже из готового .net кода по подробнейшим инструкциям с инета - это уже фантастика..

Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
еще 5%, это если не устраивает быстродействие лиспа
и еще 5% для каких-то низкоуровневых функций или автокада или ОС
и в том и в другом случае целесообрознее будет использовать ObjectArx
чем целесообразнее - отказ от использования множества языков с поддержкой .Net в пользу только одного С++? Без Фреймворка акад просто не запустится, а NetApi по сути является обертками над соответствующими функциями ObjectARX. Ну там где-то процентов 5% вроде теряется по производительности, зато взамен функции обертки дополнительно страхуют за счет внутренних проверок и вызовов соответствующих исключений "косяки" программиста.


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
http://forum.dwg.ru/showpost.php?p=182562&postcount=3
до сих пор не понимаю - зачем информацию между выносками перегонять через буфер обмена. Дополнительный потенциальный источник ошибки - ведь он (clipboard) может быть просто занят другим процессом.
Сергей812 вне форума  
 
Непрочитано 07.11.2018, 08:31
#18
Boxa

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


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
Offtop: потому что лисп перекрывает 90% потребностей пользователя
еще 5%, это если не устраивает быстродействие лиспа
и еще 5% для каких-то низкоуровневых функций или автокада или ОС
и в том и в другом случае целесообрознее будет использовать ObjectArx
Простите великодушно, но это утверждение отражает только Ваше окружение, не более того. Это как после выборов одаренные личности кричат, что выборы подтасованы, так как они и их знакомые не голосовали за некоего кандидата... Эгоцентризм, как он есть.
Намекну, лисп не развивается уже десятилетиями, в то же время .NET API развивается и очень резво, в развитие этого API автодеск вкладывает кучу денег, значит есть большой спрос и соответственно этот спрос не закрыт Lisp-ом. Просто так тратить деньги в кап. системе никто не будет, нужна прибыль...
Думаю любой грамотный человек способен сделать выводы.

Еще раз прошу прощения за вмешательство.
Boxa вне форума  
 
Автор темы   Непрочитано 07.11.2018, 09:20
| 1 #19
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Молодцы! Загубили тему.
Setvar вне форума  
 
Непрочитано 07.11.2018, 11:39
#20
Сергей812


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Сообщение от Setvar А где решение от Сергей 12? Паясничать легко.
Так вы сами ее и загубили - а сейчас трусливо стерли тот пост, и пытаетесь на других стрелки перевести)

----- добавлено через ~10 мин. -----
а функциональность решения по копированию выносок возрастет - если запоминать несколько последних значений выносок и иметь еще одну команду, которая предлагает выбрать текст из списка, а не "метаться" по чертежу в поисках выноски-оригинала. Это на случай - если забыли/пропустили выноски, а потом их увидели в процессе обработки других выносок.
Сергей812 вне форума  
 
Непрочитано 07.11.2018, 13:54
#21
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


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

Offtop:
Цитата:
Сообщение от Boxa Посмотреть сообщение
лисп не развивается уже десятилетиями, в то же время .NET API развивается и очень резво
точно то же десятилетие назад писали о VBA

мне вот больше всего непонятно почему некоторые пользователи в разделе LISP любят писАть "зачем тебе лисп переходи на .net"
и при этом почти никогда не выкладывают готовых решений
Vov.Ka вне форума  
 
Непрочитано 07.11.2018, 14:14
#22
Сергей812


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


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
откуда мне знать, но ведь это ты первым опубликовал код для работы с буфером?
Ну как написали ранее:
Цитата:
Сообщение от ИН}|{ЕНЕР Посмотреть сообщение
Изначально, хотелось бы, чтобы текст из мультивыноски копировался в буфер.
----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
мне вот больше всего непонятно почему некоторые пользователи в разделе LISP любят писАть "зачем тебе лисп переходи на .net"
и при этом почти никогда не выкладывают готовых решений
готовые решения - это, наверно, откомпилированные сборки под все мыслимые версии и разрядности акада?)
Сергей812 вне форума  
 
Непрочитано 07.11.2018, 14:25
#23
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
мне вот больше всего непонятно почему некоторые пользователи в разделе LISP любят писАть "зачем тебе лисп переходи на .net"
и при этом почти никогда не выкладывают готовых решений
смысл переходить на NET появляется тогда, когда приложение становится слишком сложным...
смысл выкладовать на форум несколько файлов листингов вместе с XAML?
trir вне форума  
 
Непрочитано 07.11.2018, 14:40
#24
Сергей812


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


И как уже неоднократно говорил, необязательно сразу переходить полностью на .Net - можно начать с реализации тех вещей, которые трудно/невозможно реализовать на лиспе. И оформлять их в виде lisp-функций, вызываемых из уже написанного и отлаженного вашего lisp кода. Не надо уже возиться с вызовами тех же COM-объектов, которые сами по себе не так уж быстры.

----- добавлено через ~2 мин. -----
p.s. Setvar , может научитесь аргументировано отвечать, а не посты стирать и темы переименовать?)
Сергей812 вне форума  
 
Непрочитано 07.11.2018, 15:09
| 1 #25
Кулик Алексей aka kpblc
Moderator

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


Тема закрыта. Смысловой нагрузки теперь (благодаря усилиям ТС) она не несет вообще никакой.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Очередная попытка опустить LISP.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Копирование, сортировка, переименование листов (layout) VVA Готовые программы 115 28.03.2025 20:59
LISP. Не отображается часть полки мультивыноски kacugu LISP 2 16.05.2016 08:52
Копирование блоков с автоматической ссылкой на атрибут pobat Программирование 10 31.07.2014 20:50
Копирование Мтекста с изменением №-ра копии Positron AutoCAD 4 17.08.2012 00:44
Создание слоя с названием содержимого текстового блока и копирование в него линий с других слоев antiponf Программирование 7 27.01.2012 19:43