NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги

NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги

Ответ
Поиск в этой теме
Непрочитано 15.03.2024, 16:50 #1
NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 613

Всем привет!

Писал я под AutoCAD на LISP'е всё, что нужно было, использовал
библиотеку DOSLIB и всё было замечательно.

Но пришлось переходить на nanoCAD - тут всё и началось... :-(

Видимо, дальше нужно будет использовать C#

Теперь вопрос - как начать (да, просто начать !) писать программы
в этой самой MS VS 2022 ?

Вот прямо по шагам.

0. Запустил /это я уже умею/.

А дальше?

Нужно выбрать в VS какой-то шаблон, куда-то установить поставляемый
c nanoCAD'ом SDK, добраться до окна, куда буду вводить текст программы,
скомпилировать его, как загружаемое в nanoCAD приложение...

Т.е. нужны эти 10 ... 15 начальных шагов, чтобы потом просто ввести в командную
строку nanoCAD'а новую команду "new_command" и там же получить в ответ
"Привет, мир!" :-)))
__________________
Счастливо, Алексей!
Просмотров: 6910
 
Непрочитано 15.03.2024, 16:55
1 | #2
Boxa

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


Increase Size Decrease Size Нажмите для просмотра
https://www.youtube.com/watch?v=MM66bRKDQoU&list=PLRBcOuMyzIoPTMJIphrvNqlQaO0GtXHqA
Тут все очень подробно. просто нужно вместо автокадовских библиотек подключить библиотеки нанокада
Boxa вне форума  
 
Непрочитано 15.03.2024, 17:25
#3
Кулик Алексей aka kpblc
Moderator

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


Если писать под наник версий до 22 включительно - то да.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2024, 20:56
#4
Сергей812


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


Клуб разработчиков от нано чем не подходит?
Сергей812 вне форума  
 
Непрочитано 15.03.2024, 21:08
#5
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Клуб разработчиков от нано чем не подходит?
?? А какое это имеет отношение к "началу разработки"?
Offtop: Тем не менее, по состоянию на сегодня:
Сильно низкой активностью.
Практически половина вопросов закрывается не разработчиками.
Хреновенькая документация (почти все разыскивается в гугле с заменой nanocad на autocad).

По мне этого уже достаточно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2024, 22:56
#6
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
?? А какое это имеет отношение к "началу разработки"?
т.е. нормальной русскоязычной документации с примерами нет? у того же акада в справке и примеры есть простые. Как раз для Hеllo, World)
Сергей812 вне форума  
 
Непрочитано 15.03.2024, 23:07
#7
Кулик Алексей aka kpblc
Moderator

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


Каэшн нет! Почти всурьез раздумываю то ли ролик запилить, то ли статью
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.03.2024, 03:07
#8
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
10 ... 15 начальных шагов
Шагов там сильно меньше:
  1. Создать проект
    Шаблон проекта - бибилиотека классов.
    Такой шаблон создает dll на выходе.
  2. Подключить зависимости в проект
    Обозреватель решений/Ссылки/Добавить ссылку/Обзор.
    Для нанокада выбрать hostmgd.dll и hostdbmgd.dll.
    Для автокада - AcCoreMgd.dll, AcDbMgd.dll, AcMgd.dll.
    В обоих случаях формально даже SDK не нужен, эти библиотеки лежат в одной папке с установленной программой.
    Их даже можно распаковать из дистрибутива программы, ничего не устанавливая.
  3. Подключить зависимости в коде
    Код:
    [Выделить все]
     
    using Teigha.DatabaseServices;
    using Teigha.Runtime;
    using Teigha.Geometry;
    using HostMgd.ApplicationServices;
    using HostMgd.EditorInput;
    
    Код:
    [Выделить все]
    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.EditorInput;
    using Autodesk.AutoCAD.Geometry;
    using Autodesk.AutoCAD.Runtime;
    Если нужно, чтобы программа собиралась и под автокад, и под нанокад, подключения надо завернуть в условную компиляцию:
    Код:
    [Выделить все]
     
    #if NANOCAD
    	using Teigha.DatabaseServices;
    	using Teigha.Runtime;
    	using Teigha.Geometry;
    	using HostMgd.ApplicationServices;
    	using HostMgd.EditorInput;
    #endif
    
    #if AUTOCAD
    	using Autodesk.AutoCAD.ApplicationServices;
    	using Autodesk.AutoCAD.DatabaseServices;
    	using Autodesk.AutoCAD.EditorInput;
    	using Autodesk.AutoCAD.Geometry;
    	using Autodesk.AutoCAD.Runtime;
    #endif
    
    А в свойствах проекта, в разделе "Построение", задать нужный символ условной компиляции - NANOCAD или AUTOCAD.
  4. Написать класс с методом-командой
    Код:
    [Выделить все]
     
    using ...
    
    namespace Test
    {
        public class Test
        {
            [CommandMethod("Hello")]
            public void Hello()
            {
                Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Hello!");
            }
        }
    }
    
  5. Запустить
    Собрать проект.
    Полученную dll можно загрузить в нанокаде или автокаде командой NETLOAD.
    После загрузки в каде можно выполнить команду Hello.
Net вообще-то вредный, если его один раз загрузить, он не уже выгрузится, надо закрывать кад и запускать по новой. Это сильно затягивает отладку.
Поэтому я свои команды писал под пятый нанокад, потому что он загружается моментально. А уже отлаженное можно собрать под другие кады.
Нубий-IV вне форума  
 
Непрочитано 16.03.2024, 09:03
#9
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Дополню малехо
Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Шаблон проекта - бибилиотека классов.
Такой шаблон создает dll на выходе.
Для нанокад включая 22 библиотека классов net framework 4.0. и новее
Если будем использовать мультикад, то нужен минимум
Net framework 4.5
Начиная с нанокад 23 библиотека классов . NET
Версия 6
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 16.03.2024, 09:30
#10
Сергей812


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


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Net вообще-то вредный, если его один раз загрузить, он не уже выгрузится, надо закрывать кад и запускать по новой. Это сильно затягивает отладку.
с другой стороны, это дисциплинирует - заставляет продумывать структуру кода, а не как во встроенных языках - написал кусочек кода и сразу тестить)
Сергей812 вне форума  
 
Непрочитано 16.03.2024, 09:37
#11
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
написал кусочек кода и сразу тестить)
Если ресурсов достаточно, можно и так
Запустил несколько кадов и подключайся по очереди тести)))
Кончаются еще назапускал
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 16.03.2024 в 09:42.
doctorraz вне форума  
 
Непрочитано 16.03.2024, 11:30
#12
Сергей812


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Если ресурсов достаточно, можно и так
Запустил несколько кадов и подключайся по очереди тести)))
Кончаются еще назапускал
или пока не запутаешься - что в каком из запущенных экземпляров *када тестил)

В .Net проще - можно те же диалоги, взаимодействие с внешними хранилищами (БД) и т.д. отладить во вспомогательном десктопном приложении (включить в решение WinForms|WPF приложение). А в самом *каде отлаживать зависимый от него код, а файлы с уже рабочим кодом из десктопного вспомогательного приложения подключить через ссылки внутри решения и только вызывать в *кад коде.
Сергей812 вне форума  
 
Непрочитано 16.03.2024, 11:52
#13
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


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

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в самом *каде отлаживать зависимый от него код, а файлы с уже рабочим кодом из десктопного вспомогательного приложения подключить через ссылки внутри решения и только вызывать в *кад коде.
Так и делается, только в отладочный exe ссылками
Файлами в декстопном только заглушки кад вызовов
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 16.03.2024, 12:13
#14
Сергей812


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Так и делается, только в отладочный exe ссылками
ссылки в отладочный исполняемый файл?

Цитата:
Сообщение от doctorraz Посмотреть сообщение
Файлами в декстопном только заглушки кад вызовов
взаимодействие с *кадом выделить в отдельное пространство. Ну будут некоторая потеря производительности и ресурсов на передачу данных между интерфейсной (GUI) и *кадной частью, но учитывая производительность .Net - в большинстве случаев некритично, имхо.
Сергей812 вне форума  
 
Непрочитано 16.03.2024, 12:42
#15
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ссылки в отладочный исполняемый файл?
Да link *. cs

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
взаимодействие с *кадом выделить в отдельное пространство
Ну в решении для кад одни CS
В отладочном другие CS, иногда надо, в форму вернуть что-то из кад
Заглушка эмулирует этот возврат, чисто для отладки интерфейса
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 16.03.2024, 12:48
#16
Сергей812


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Да link *. cs
так это ссылки на файлы проекта внутри решения, а не на исполняемый файл. А то подумал - что-то новенькое появилось)
Сергей812 вне форума  
 
Непрочитано 16.03.2024, 12:50
#17
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
так это ссылки на файлы проекта внутри решения, а не на исполняемый файл
Ну да
Offtop: Я только разбираюсь, поэтому формулировки могут быть неточны)
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 17.03.2024, 17:02
#18
Кулик Алексей aka kpblc
Moderator

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


Offtop: На раздраконивание : https://autolisp.ru/2024/03/17/pervo...ya-nanocad-23/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2024, 19:54
#19
Сергей812


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


интересно, кстати - гитхаб облачный продукт или нет?
Сергей812 вне форума  
 
Непрочитано 17.03.2024, 19:54
#20
Кулик Алексей aka kpblc
Moderator

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


Вроде да, а что?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2024, 20:08
#21
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вроде да, а что?
его владелец MS, а он собирается ограничить доступ к своим облачным решениям..
Сергей812 вне форума  
 
Непрочитано 17.03.2024, 20:22
#22
Кулик Алексей aka kpblc
Moderator

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


Для корпоративных клиентов, насколько я слышал. Частные лица под подобные ограничения не попадают вроде бы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2024, 20:25
#23
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Не проверял, но вроде чот такое наши сделали
https://gitflic.ru/public/project
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 17.03.2024, 20:26
#24
Кулик Алексей aka kpblc
Moderator

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


Да, я видел - но пока не тестировал, не регистрировался, не смотрел. Китайские варианты смотреть как-то не хоцца.

----- добавлено через ~10 мин. -----
То ли лыжи, то ли я - но отправить в туда репозиторий у меня не получилось. Так что пока похороню этот вариант
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2024, 20:46
#25
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Offtop: Решать вопросы по мере поступления
Иначе ваще ни на что время не хватит
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 18.03.2024, 08:25
#26
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


а) А если у меня в VS только ".NET 8.0" доступен, мне ".NET 6.0" доустановить нужно?
б) Где в VS можно изменить цвет экрана с черного на другой и увеличить размер
шрифта в поле ввода текста программы?
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 18.03.2024 в 08:31.
===AAA=== вне форума  
 
Непрочитано 18.03.2024, 08:57
1 | 1 #27
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
а) А если у меня в VS только ".NET 8.0" доступен, мне ".NET 6.0" доустановить нужно?
да

Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
б) Где в VS можно изменить цвет экрана с черного на другой и увеличить размер
шрифта в поле ввода текста программы?
в параметрах
Средства->параметры
Окружение-общие (там тема)
Шрифты и цвета там шрифты и цвета
ну и поиск по настройкам работает
И из самой IDE работает поиск в том числе и по параметрам
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 18.03.2024, 09:14
1 | #28
Кулик Алексей aka kpblc
Moderator

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


Если NET6 не установлен, то надо запустить Visual Studio Installer, нажать кнопку "Изменить" - и дальше "Дополнительные компоненты". Ну или отдельно скачивать NET6 SDK и пытаться его воткнуть. Но вариант установки через студию ИМХО самый простой.
Оформление студии - чистой воды вкусовщина. Просто я подустал от светлого фона в VBA и VLIDE
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.03.2024, 10:26
#29
avatarez


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


Объектную модель для мультикада можно выдернуть при помощи ILSpy из соответствующих dll. Там даже комментарии в коде кое где есть.
На работе мне VS никто бы не поставил, так что приходилось код писать в Notepad++ и батником компилировать

Код:
[Выделить все]
chcp 1251 >nul

::ИМЯ БИБЛИОТЕКИ
set "name=compiled"

::ЧТЕНИЕ КОМАНДНОЙ СТРОКИ
if not "%~nx1" == "" (
	set "name=%~n1"
)

::КОМПИЛЯЦИЯ
echo f | xcopy "output\%name%.dll" "output\%name%.bak" /r /y /h
del "output\%name%.dll" /q /f
"%SYSTEMROOT%\Microsoft.NET\Framework\v3.5\csc.exe" ^
-reference:"bin\hostdbmgd.dll" ^
-reference:"bin\hostmgd.dll" ^
-reference:"bin\imapimgd.dll" ^
-reference:"bin\mapibasetypes.dll" ^
-reference:"bin\mapimgd.dll" ^
-target:library ^
-optimize ^
-out:"output\%name%.dll" ^
"cs\*.cs"
avatarez вне форума  
 
Непрочитано 18.03.2024, 10:36
#30
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от avatarez Посмотреть сообщение
код писать в Notepad++
Не, до такого я не дорос. И вряд ли дорасту ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.03.2024, 11:12
| 1 #31
trir


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


Цитата:
На работе мне VS никто бы не поставил
https://vscode.dev/
trir вне форума  
 
Автор темы   Непрочитано 22.03.2024, 16:15
#32
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Добрался до момента, когда только средствами LISP задачу в nanoCAD решить не получится.
Нужно создать аналог функции (dos_processes) из библиотеки DOSLIB.

Функция запускается без параметров и возвращает список работающих в данный момент
приложений Windows, типа:

(... "msedge.exe" "ShellExperienceHost.exe" "RuntimeBroker.exe" "UcMapi.exe" "plan.exe" "EXCEL.EXE"
"NOTEPAD.EXE" "splwow64.exe" "DllHost.exe" "msedge.exe" "WINPROJ.EXE" "iexplore.exe" "IEXPLORE.EXE"
"IESettingSync.exe" "lynchtmlconv.exe" "msedge.exe" "SearchProtocolHost.exe" "acad.exe" ну и т.д.)

который может быть передал в программу на LISP и обработан.

Сформулируем так: нужно из программы на LISP узнать, запущен ли "Блокнот" и если да, то сколько
копий его сейчас открыто.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 22.03.2024, 16:33
#33
Сергей812


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


а нано поддерживает атрибут LispFunction? А так через Windows API типа FindWindow скорее всего искать. Или, например, Process класс Net фреймворка.

Последний раз редактировалось Сергей812, 22.03.2024 в 16:39.
Сергей812 вне форума  
 
Непрочитано 22.03.2024, 16:44
#34
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
нано поддерживает атрибут LispFunction?
В 24й версии добавили
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 22.03.2024, 16:45
#35
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Цитата:
а нано поддерживает атрибут LispFunction?
Я бы знал?

Это для меня пока вообще тёмный лес от слова "совсем". :-)
Я только на ЛИСПе умею.

----- добавлено через ~3 мин. -----
Отсутствие этого атрибута в 23-й нане не позволяет запустить из
лиспа программу на дотнет или передать в неё полученные данные?

Если только второе - не беда. Пусть в файл результат выбросит,
я из него заберу.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 22.03.2024, 18:26
#36
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Я только на ЛИСПе умею.
ветка .Net все таки - поэтому тыц, и там смотрим метод GetProcessesByName(String) и пример к нему.
Сергей812 вне форума  
 
Непрочитано 22.03.2024, 20:11
#37
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Пусть в файл результат выбросит,
я из него заберу.
Offtop: Да будет так...
Шарп учи, и тогда так будет и лисп не сильно нужен будет
Если уж. kpblc Гуру лиспа Шарп учит, остальным тем более)) не помешает
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 23.03.2024, 11:43
#38
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Насчёт необходимости изучения C# согласен, поэтому и тему эму создал.
Возможно, что она со временем даже превратится в "песочницу", подобную
теме, висящую в топе подфорума "программирование на LISP" :-)

Поясните, плиз, базовую вещь - на C# возможно создать для nanoCAD 23.1
DLL-ку, содержащую функции, которые, будучи вызванными из программы на
лиспе, смогут возвращать в неё информацию или для этого нужен nanoCAD 24+ ?

Т.е. будет ли работать в nanoCAD 23.1 конструкция типа:

(defun a1 ()

(setq b1 5 b2 (функция_из_dll b1))

(print b2)

)

?

Цель - "для начала" мне нужно написать (с помощью уважаемых гуру форума)
некоторые функции, ранее присутствовавшие в DOSLIB, но которые стали
недоступны в nanoCAD'e. В основном это функции интерфейса, работы с внешним
окружением nanoCAD'a и другие вещи, которые невозможно сделать на Лиспе.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 23.03.2024, 13:01
#39
Сергей812


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


Ну если
Цитата:
Сообщение от doctorraz Посмотреть сообщение
В 24й версии добавили
то уже не будет "естественного" вызова в лиспе методов, определенных в .Net сборках. Но если методы в .Net сборке оформлены как команды - ничто не мешает их из комстроки в лиспе вызвать) Если нанокадовцы это реализовали, конечно...

Последний раз редактировалось Сергей812, 23.03.2024 в 13:08.
Сергей812 вне форума  
 
Непрочитано 23.03.2024, 13:29
#40
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Если нанокадовцы это реализовали, конечно...
Команды реализовали, иначе б обсуждать было бессмысленно

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
некоторые функции, ранее присутствовавшие в DOSLIB, но которые стали
недоступны в nanoCAD'e
Имха проще сделать реализацию полностью на net
Это будет работать значительно быстрее
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 23.03.2024, 14:40
#41
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Цитата:
Имха проще сделать реализацию полностью на net
Это будет работать значительно быстрее
Совсем новые вещи - почему бы и нет.

Когда и если научусь писать на C#
так же быстро и легко, как на Лиспе. :-)

Пока же стоит задача перетащить из
Автокада в наноКад уже сделанное.

Однако я так и не понял из обсуждения
выше - версия nanoCAD 23.1 уже позволяет
делать связки LISP + C# или нужен 24+ ?

Можно просто - "да" или "нет" ? :-)
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 23.03.2024 в 14:51.
===AAA=== вне форума  
 
Непрочитано 23.03.2024, 15:37
1 | #42
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
версия nanoCAD 23.1 уже позволяет
делать связки LISP + C# или нужен 24+ ?
Команды с ключами - да
Функции возврат значения в липсе - нет
Но ты выше писал что тебя устроит возврат значения в файл, тоже - да
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 23.03.2024, 16:45
1 | #43
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Хорошо. Тогда ещё одно уточнение.

Эту новую команду из LISP функции, как я понимаю,
нужно будет запускать через (command ...) ?

А последующие строчки функции, "дождутся", пока эта
dll-команда отработает, запишет информацию в файл и
закроет его или они начнут выполняться раньше, чем
файл-передатчик будет сформирован?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 23.03.2024, 17:02
#44
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Думаю дождутся))
Если специально не запускать в асинхронном режиме
Все будет идти по очереди,
Т. Е. По окончании работы команды DLL, можно поднимать файл и вынимать из него инфу..
Но как тэ это очень уж костыльно((
На net можно делать много круче вещи чем лисп , единственное неудобство по сравнению с лисп и vbs, надо компилировать
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 23.03.2024 в 17:22.
doctorraz вне форума  
 
Непрочитано 23.03.2024, 19:43
#45
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055


Есть вариант на плюсах писать. Там точно можно создавать команды, которые работают из-под лиспа, в том числе возвращая значение. Но это если удастся их освоить за 21 день.
Код:
[Выделить все]
 
#include <arxHeaders.h>

// Код команды
const int CMD_SUM = 0;

// Команда "Сумма"
int Sum()
{
	double result = 0.0;

	// Получение списка аргументов, переданных из лиспа
	struct resbuf* rb = acedGetArgs();
	
	// Перебор списка
	while(rb) {
		// Добавление очередного слагаемого
		switch(rb->restype) {
		case RTSHORT:
			result += rb->resval.rint;
			break;
		case RTLONG:
			result += rb->resval.rlong;
			break;
		case RTREAL:
			result += rb->resval.rreal;
			break;
		default:
			acutPrintf(_ACRX_T("; ошибка: неправильный тип аргумента"));
			acedRetVoid();
			return RTERROR;
		}
		// Следующий аргумент в списке
		rb = rb->rbnext;
	}

	// Возвращение результата
	acedRetReal(result);
	return RTNORM;
}

// Класс приложения
class CSum: public AcRxArxApp {
public:
	// Регистрация Лисп-команды при загрузке чертежа
	AcRx::AppRetCode On_kLoadDwgMsg(void *pkt) override
	{
		acedDefun(_ACRX_T("Sum"), CMD_SUM);
		return AcRx::kRetOK;
	}
	
	// Удаление регистрации Лисп-команды при выгрузке чертежа
	AcRx::AppRetCode On_kUnloadDwgMsg(void *pkt) override
	{
		acedUndef(_ACRX_T("Sum"), CMD_SUM);
		return AcRx::kRetOK;

	}
	
	// Обработка запроса на вызов команды из Лиспа
	AcRx::AppRetCode On_kInvkSubrMsg(void *pkt) override
	{
		if(acedGetFunCode() == CMD_SUM)
			Sum();
		return AcRx::kRetOK;
	}

	// ХЗ зачем, но надо
	void RegisterServerComponents() override {}
};

// Экспорт точки входа в DLL
IMPLEMENT_ARX_ENTRYPOINT(CTest)
Вообще, судя по наличию атрибута LispCommand, и на C# должно быть можно. Надо поискать такие же имена функций, и примеры под акад.
Миниатюры
Нажмите на изображение для увеличения
Название: nc5.PNG
Просмотров: 225
Размер:	40.4 Кб
ID:	262270  
Нубий-IV вне форума  
 
Автор темы   Непрочитано 24.03.2024, 07:24
#46
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Кстати, да - DOSLIB же на плюсах написана. И даже было
сообщение, что автор исходник в публичный доступ отдал.
Где-то в сети лежит...

И функция, выдающая список работающих в данный момент
приложений Windows в ней есть.
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 24.03.2024 в 07:54.
===AAA=== вне форума  
 
Непрочитано 24.03.2024, 07:46
#47
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
DOSLIB
Проблема только в том, что она под нанокад не собрана?
Сама-то она вроде на гитхабе лежит: https://github.com/dalefugier/DOSLib
А так там и добавлять нечего, только запустить надо?
Нубий-IV вне форума  
 
Автор темы   Непрочитано 24.03.2024, 08:03
#48
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Цитата:
Проблема только в том, что она под нанокад не собрана?
Именно так. Если бы кто-то, понимающий в этом деле, смог пересобрать её
под нанокад 23.1 - отпала бы куча проблем!
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 24.03.2024, 10:02
#49
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Именно так. Если бы кто-то, понимающий в этом деле, смог пересобрать её
под нанокад 23.1 - отпала бы куча проблем!
ну так в чем проблемы: объявляете краудфандинг на адаптацию DOSLib, нанимаете профессионального программиста...
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.03.2024, 10:23
#50
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Ну, лично мне из неё и нужно-то менее десятка функций.
Какой там краудфандинг ...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 24.03.2024, 10:31
#51
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Ну, лично мне из неё и нужно-то менее десятка функций.
которые с вероятностью 99% реализованы в .Net. Не хотите учить .Net - перетаскивайте из акада в нано урезанный вариант готового кода с исключением вызовов функций DosLib. Ну или ждать перехода на 24 нано, чтобы хотя бы весь код не переписывать, а только вставки на .Net сделать. Хотя для этого все равно придется основы .Net изучить.
Сергей812 вне форума  
 
Непрочитано 24.03.2024, 13:15
1 | #52
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055


Посмотрел. Технически оно собирается под нанокад с небольшими правками.
Местами пришлось откатить код под старые стандарты плюсов и поправить макросы. Некоторые части пришлось закомментировать, потому что в пятом нанокаде не были реализованы полностью функции автокада. В результате потеряны dos_lisplist, dos_cleardbmod, dos_summaryinfo, dos_custominfo, dos_olelist, dos_proxycount, dos_proxyclean. Возможно, в более поздних версиях нанокада оно заведется. Остальное на первый взгляд работает, но без гарантий, все надо тестить.

У меня есть только старая бесплатная пятерка, современных 23-24 нет ни самих, ни их SDK. Даже если соберу - проверить не смогу. SDK под плюсы (папки include и lib) под 23 ставятся с программой, или их надо качать отдельно? На сайте нет ссылок, только регистрация со сдачей анализов и обещанием рассмотреть их в течение года. Если есть возможность закинуть архив с SDK куда-нибудь, саму сборку можно сделать быстро.
Миниатюры
Нажмите на изображение для увеличения
Название: DL.PNG
Просмотров: 203
Размер:	37.8 Кб
ID:	262274  
Нубий-IV вне форума  
 
Автор темы   Непрочитано 26.03.2024, 05:28
#53
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Добрый день!

Цитата:
Если есть возможность закинуть архив с SDK куда-нибудь, саму сборку можно сделать быстро.
Ответил в личку.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 26.03.2024, 08:40
#54
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055


Чота собралося. Пришлось закомментировать:

* GetOSDisplayString, IsVistaOrHigher (в vs2022 почему-то недоступны функуции GetVersionEx. Кто знает, что случилось - старые версии SDK надо ставить, или еще что?)
* ads_dos_cleardbmod (использует недокументированную функцию акада, которой, видимо, в нанокаде нет)

Остальное без изменений, теперь надо тестить. В комплекте слегка поправленные исходники и проект под vs2022.
Вложения
Тип файла: zip DOSLib.zip (658.7 Кб, 10 просмотров)
Нубий-IV вне форума  
 
Автор темы   Непрочитано 26.03.2024, 14:09
#55
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 613


Замечательный комплект!
Нубий-IV - огромное спасибо!

Из того, что проверил, запустилось всё, кроме
(dos_progbar p1 p2), где p1 и p2 - аргументы.
Без аргументов работает штатно.

Если "коллективный разум" сумеет допилить
эту библиотеку, будет вообще круто!
__________________
Счастливо, Алексей!
===AAA=== вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите вернуть обычный AutoLisp вместо Visual Studio Code МишаИнженер LISP 2 04.12.2022 16:06
Первые шаги в мир программирования под nanoCAD dows Другие CAD системы 15 26.05.2022 19:38
Как Visual Studio создавая проект библиотеки классов (dotnet.dll) подключить форму (Windows Forms) gizmo_zx Программирование 4 17.02.2015 10:35
Поссорились Visual Studio 2010 и Acad 2013 gizmo_zx Программирование 3 12.02.2014 10:05
Microsoft Visual Studio: Инициатива по лицензированию разработчиков ПО Кулик Алексей aka kpblc Разное 6 05.09.2009 18:16