Перейти к содержанию

Адаптация Lisp под Nanocad


Рекомендуемые сообщения

1 час назад, A.Kudrjashov сказал:

P.S. Вот как то не очень верится, что "большинство функций AutoCAD должно работать".
Но, можно проверять.

 

В целом, разделяю мнение, что многие функции, реализованные в АС, не работают в NC.

А еще хлеще ситуация, когда работают, но "не так", т.е. по-другому.

Список с функциями очень полезный и интересный, но и тут есть нюансы.

Конечно, на весь список меня не хватило, но навскидку практически сразу наткнулся на следующие примеры:

 

Спойлер

image.png.774a9773a3dff276902cb94a3c5046f5.png

Строго говоря, это команда из расширения АС, т.е. как бы стороннего приложения, хотя оно сейчас дефакто входит в стандартную поставку. Аналогичное замечание можно отнести ко многим функциям вида C:... (функции, оформленные в команды).

 

И обратный пример

Спойлер

image.png.e5996027c7f573d3597be502e5af04ed.png

 

Спойлер

image.png.c53a8c45bb3925f99032d710bc860fce.png

 

 

Поэтому, ситуация более многогранна, чем просто вывод о том работает определенная функция или не работает. Во многом зависит от стиля программирования, о чем сказали выше форумчане. Каждый сам для себя формирует некоторые принципы построения кода в части его совместимости. Например:

  1. С большой опаской в части совместимости необходимо относиться к функциям вида (command ...  и (vl-cmdf ...  , т.к. очень часто команды оболочки в NC и АС имеют похожий, но разный синтаксис, что естественно ведет к некорректной работе, а иногда к полной неработоспособности программ в одной из систем.
  2. Необходимо помнить, что все переменные в NC, незадекларированные в программе как локальные, являются глобальными для всех документов в сеансе. То же касается и загруженных функций.
  3. Функции вида vla- и vlax- напрямую завязаны на объектную модель САПР. При этом для АС такая модель хорошо прописана и проиллюстрирована, что подначивает разработчика использовать эти функции. Но в части совместимости это является зачастую тормозом, т.к. в NC в силу естественно другой объектной модели приложения могут использоваться собственные методы и свойства объектов.
  4. Практически все функции имеет смысл проверять на предмет их  не просто функционирования, а корректности результата. Особенно  в граничных случаях. И нарабатывать собственный пул таких "проверенных временем" функций. Все-таки даже здесь в обсуждениях попадались нестыковки в функционировании казалось бы совсем безобидных функций.

А вообще, не все столь мрачно. Хотя поиск тараканов может занимать достаточно много времени, но на выходе количество корректировок программ при их адаптации в большинстве случаев невелико. Для пользователя, конечно, это доставляет неудобства, но для программиста-разработчика это наоборот может быть стимулом писать красивый код, совместимый с обеими системами.

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 119
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

Есть еще txt-edit_Nc.lsp - удаляет форматирование для всего файла или выборочно.   Для сброса цвета - см. bgtools 3.11a_Nc_21.lsp - работающие команды отмечены + в BGINFO.   Насчет Stri

Попытался переписать функцию BounderyMText с применением входных параметров. В скрипте внес достаточно подробные комментарии, а также привел варианты вызова функции с различными параметрами. Запр

В продолжение темы. Конечно, победить метод 'Replace мне не удалось. Но, возможно, на наше счастье метод 'Execute работает штатно, что позволило внести некоторые изменения в код (извиняюсь з

Изображения в теме

13 минут назад, EdwardSt сказал:

А вообще, не все столь мрачно. Хотя поиск тараканов может занимать достаточно много времени, но на выходе количество корректировок программ при их адаптации в большинстве случаев невелико. Для пользователя, конечно, это доставляет неудобства, но для программиста-разработчика это наоборот может быть стимулом писать красивый код, совместимый с обеими системами.


Это да.
У нас на Южном Урале есть такая пещера "Сухая Атя". Она глиняная и "сухая" настолько, что на выходе глину вынимаешь "из трусов". Туда хорошо новичков загонять. Они после неё либо влюбляются в пещеры на всю жизнь, либо не ходят в пещеры больше никогда. :)
--------------

Конечно, нюансов много. Главное, чтобы "пул проблем" стабильно сокращался.

Изменено пользователем A.Kudrjashov
Ссылка на сообщение
Поделиться на другие сайты

1) Надо было выполнить (vl-load-com) перед запуском дампа под Nc, как и Ac, чтобы vl-, vla-, vlax-функции заработали

2) Функции, начинающиеся на VDGS, ACET-UI, ACETUCS, ecs, BNS отсутствуют в справке по AutoCAD 2019, т.к. это расширения

3) Функции, начинающиеся на 3DSMART отсутствуют в справке по AutoCAD 2019, устарели

4) Команды Express Tools реализованы не все, т.к. тоже частично устарели, либо не требуются

Изменено пользователем lidia.antipina.ru
Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, lidia.antipina.ru сказал:

1) Надо было выполнить (vl-load-com) перед запуском дампа под Nc, как и Ac, чтобы vl-, vla-, vlax-функции заработали

Кстати, издавна интересовал вопрос, почему эта функция вообще требуется?

Почему бы не включить ее функционал непосредственно в платформу?

Может кто в курсе, чем обоснован этот рудимент, как мантра навяливаемый поколениям программистов?

Какие ресурсы требуются дополнительно при вызове этой функции, что их нужно так ревностно экономить? 

Изменено пользователем EdwardSt
Ссылка на сообщение
Поделиться на другие сайты

Считается, что можно программировать на лисп без COM, но в большинстве случаев все равно получается винегрет

 

Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, lidia.antipina.ru сказал:

1) Надо было выполнить (vl-load-com) перед запуском дампа под Nc, как и Ac, чтобы vl-, vla-, vlax-функции заработали

2) Функции, начинающиеся на VDGS, ACET-UI, ACETUCS, ecs, BNS отсутствуют в справке по AutoCAD 2019, т.к. это расширения

3) Функции, начинающиеся на 3DSMART отсутствуют в справке по AutoCAD 2019, устарели

4) Команды Express Tools реализованы не все, т.к. тоже частично устарели, либо не требуются


1) Обсуждение идёт вокруг переносимости скриптов.
Опять же, предварительный запуск (vl-load-com) никак не объясняет катастрофическое "сокращение" функционала LISP с точки зрения конкретного скрипта при переходе от NC20.1 к NC21.0 и почему для NC21.0 (vl-load-com) требуется, а для NC20.1 не требуется.

2-4) Да есть ряд специфических функциональный расширений. Но когда мы получаем соотношение 2900 функций AutoCAD против 354 функции NC21 в данном конкретном тесте, хотя еще в NC20 было заявлено 2555, это тоже мало что объясняет и не сильно повышает оптимизм в отношении адаптации скриптов.

P.S.
Вот сейчас пытаюсь адаптировать LispBenchMark и обнаружил, что нужно калёным железом удалять/заменять ссылки на MILLISECS, а их там ..., ну в общем повыше колен будет.

Вопрос не в том, что под nanoCAD нельзя писать на LISP. Можно и нужно. Вопрос в том, что пользователи должны понимать, что просто взять и запустить готовое LISP приложение под nanoCAD, с высокой долей вероятности не получится. Надо разбираться и переделывать под nanoCAD или писать самому с нуля.

А информации по LISP API даже в SDK по сути нет.
Вот как то так.

P.S.2
Пересчитал с (vl-load-com) под nanoCAD 21.0

Свод:

Спойлер

image.png.2e2b09ec9e3f94741fec83c570d13164.png

 

Исчезло по пути от NC20.1 к NC21.0

Спойлер

image.thumb.png.25a0a7435b68b6b30528dc597b1bc080.png

 

Появилось в nanoCAD 21.0

Спойлер

image.thumb.png.314ff4c75acb29a55d8ad334dc5374da.png

 

 

Собственно, новый дамп и итоговый файл

NC21_0_LspDumpFile-2.log

 

ACAD_NC_Func_Comparison-2.xlsx

 

 

 

 

 

Ссылка на сообщение
Поделиться на другие сайты

(vl-load-com) всегда требуется, но он как правило уже добавлен в lisp-код до вызовов (defun) и молча по Run выполняется

 

добавлено через 3 минут

*PLxxx* - явно из не загруженного под Nc 21.0 пакета pltools

EQPREC и *NANO:DBUG* тоже поищите в автозагруженных приложениях

Изменено пользователем lidia.antipina.ru
Ссылка на сообщение
Поделиться на другие сайты
51 минуту назад, A.Kudrjashov сказал:

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

А что там не так:

Команда: (getvar "MILLISECS") 232835093

Команда: (setq ms (getvar "MILLISECS")) 232937062

Команда: (setq seconds (/ ms 1000.0)) 232937.0

добавлено через 6 минут

Примечание из Справки по AutoCAD 2019:

ПРИМЕЧАНИЕ:В продуктах на базе AutoCAD, начиная с версии AutoCAD 2017, значение времени в системных переменных CDATE и DATE больше не выражается в миллисекундах. Если требуется рассчитать разницу во времени с точностью до долей секунды, используйте системную переменную MILLISECS.

Ссылка на сообщение
Поделиться на другие сайты

B

2 часа назад, A.Kudrjashov сказал:

Свод:

  (1) (Показать контент)

image.png.2e2b09ec9e3f94741fec83c570d13164.png

 

Все-таки, сведения не совсем корректны.

Выше писал, что как минимум некоторые функции (например, C:LSP) в нанокаде работают, а в таблице стоит "Х".

Не подглючивает ли (atoms-family 1)?

Похоже, все команды нанокада упакованы не в обертки C:..., а в что-то другое. Поэтому, их только 2(!) .

Т.е. с этим префиксом идут только стандартные команды "C:VLISP" и "C:VLIDE", а также собственные команды, подгруженные из лиспов с использованием (defun C:...  

 

Короче, что-то не так в консерватории, то бишь в функции (atoms-family 1).

 

Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, lidia.antipina.ru сказал:

А что там не так:

Команда: (getvar "MILLISECS") 232835093

Команда: (setq ms (getvar "MILLISECS")) 232937062

Команда: (setq seconds (/ ms 1000.0)) 232937.0

 

Это в nanoCAD 21.x.

 

А в nanoCAD 20.x всё выглядит несколько иначе.

image.png.d143bfdfd1f10907fb2449dee2f0c673.png


А лицензии nanoCAD 20.x  к nanoCAD 21.x не подключаются. Это вроде как "другая старая жизнь", про которую уже и сайта то нет.

Вообще то, при таком количестве недоработок лицензии NC20 должны бы были автоматически перейти на лицензии NC21. Но не в нашей реальности.

Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, lidia.antipina.ru сказал:

(vl-load-com) всегда требуется, но он как правило уже добавлен в lisp-код до вызовов (defun) и молча по Run выполняется


... ещё раз.
Вопрос не в том, как выстроить процедуру. А в том, что обычные пользователи, не программисты, не должны думать о таких вещах. Они берут модуль или скрипт и дорабатывают его или напрямую используют в своей работе, тогда, когда у них возникает необходимость. Вопросы почему один и тот же текст работает под NC20 и не работает под NC21 их волновать не должен.

Вот сейчас совершенно конкретно поднимается вопрос о перспективах замены платформы Autodesk на отечественную. А у нас существенной частью технологии работы является наличие на рабочем месте:
- ПО Трубопровод 2012 (да есть вариант для NC, но в предыдущем протестированном релизе функционал под NC был слабее функционала под ACAD).
- Функциональных библиотек TriBuilder и SomeTools (есть вариант установки под NC, но глубоко не тестировали)
- Функциональных библиотек 3DService, MenuGEO, Topography (нет варианта установки под NC).

Плюс огромное число LISP скриптов, которые используются по случаю и не факт, что они заработают под NC.

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

Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, EdwardSt сказал:

Выше писал, что как минимум некоторые функции (например, C:LSP) в нанокаде работают, а в таблице стоит "Х".

Не подглючивает ли (atoms-family 1)?


Однозначно (atoms-family 1) выдаёт не вполне верную информацию. Но это базовая функция языка LISP, которая должна работать гарантировано и корректно.

Необходим механизм, который позволял бы на лету проверять наличие соответствующих функций или системных переменных и принимать обходные решения, при их отсутствии.
Например, в выше упомянутой LISPBenchMark это делается путём попытки получить значение системной переменной и, при её отсутствии, запуском процедур через другую системную переменную. Но это приводит к захламлению логов основной консоли, что само по себе очень плохо.

Можно было бы проверять через (atoms-family 1), но получается, что даже эта функция выдаёт не вполне корректный результат.
 

Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, A.Kudrjashov сказал:

Функциональных библиотек 3DService, MenuGEO, Topography (нет варианта установки под NC)

3DService - адаптировала под Nc 20 год назад по заказу ВНИПИГАздобыча, но к сожалению без обратной связи с разработчиком. Из лиц. соглашения:

"Пакет 3DService является собственностью ОАО "ВНИПИгаздобыча". Использование процедур данного пакета возможно только с письменного разрешения руководства ОАО "ВНИПИгаздобыча".

Вы всегда можете связаться с автором по адресу: 410760, Россия, г. Саратов, ул. Сакко и Ванцетти, 4. ОАО "ВНИПИгаздобыча", Управление инженерных изысканий. Никифоров Андрей Николаевич. Тел. 8-8452-74-39-03. mailto:NikiforovAN@vnipigaz.gazprom.ru".

MenuGeo избыточен (например, утилиты Ривилиса ExplodeProxy, RemoveAllProxy под Nc не нужны), представляет собой сборную солянку из чужих утилит, частично адаптирован. Требуется список наиболее часто используемых утилит. 

https://www.sites.google.com/site/topographyacad/ - что касается ресурсов, то их надо распаковать и прописать пути в Настройки-> Стандартные папки -> Общие файлы, особенно проверить наличие папки  Support:image.thumb.png.19f7d7ab722b163b7c5d2dd346a957a6.png

Изменено пользователем lidia.antipina.ru
Ссылка на сообщение
Поделиться на другие сайты

Кроме того, Nc 21 появился собственный модуль Топографии. Если давать полную свободу пользователям, то никогда не добиться достаточного уровня автоматизации проектирования в крупной организации. А недовольные будут всегда

Снимок.JPG

Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, A.Kudrjashov сказал:

Вот сейчас совершенно конкретно поднимается вопрос о перспективах замены платформы Autodesk на отечественную. ....

 

В любом случае, конкретный набор шагов будет включать следующие этапы внедрения:

1. Сбор сведений от проектировщиков об используемых сторонних приложениях и утилитах.

2. Анализ группой САПР (или аналогичной) совместимости приложений с новой платформой и ранжирование про критериям (Работает, имеет аналог, можно адаптировать, адаптация не целесообразна, адаптация невозможна)

3. Составление плана доработок 

4. Развертывание пула проверенных и адаптированных программ на новой платформе

5. Под жалобные всхлипы проектировщиков директивный запрет "старых" инструментов к использованию и продвижение вперед к сияющему будущему

 

В большей или меньшей степени эти шаги неизбежны.

Ну и по времени - месяцы, а то и годы

Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, lidia.antipina.ru сказал:

Если давать полную свободу пользователям, то никогда не добиться достаточного уровня автоматизации проектирования в крупной организации. А недовольные будут всегда


Те, кто "не дают свободу" берут на себя ответственность за последствия. Должны во всяком случае.

А у нас, к примеру, дорабатывать и устранять ошибки в официально купленных nanoCAD 11.x и 20.x кто-нибудь будет ?
Или их всем простили ?
Был проведён разбор полётов, форум полон сообщениями и обещаниями, люди заплатили, не украли, а теперь им говорят, что "пепельница заполнилась и надо машину поменять" ?

Можно закручивать гайки и ограничивать свободу выбора, если ты уверен в Инструменте, пусть не на 100%, но близко к этому.

Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, EdwardSt сказал:

В большей или меньшей степени эти шаги неизбежны.

Ну и по времени - месяцы, а то и годы

ИМХО. У нас нет многих лет, просто нет.

Я бы с огромным удовольствием сконцентрировался на одном максимально функциональном и надёжном программном продукте.

Но пока имеем то, что имеем. Текущая работа - Autodesk, перспективы 3D - Microstation, обработка результатов лазерного сканирования - Bentley + TerraSolid и где-то на горизонте - nanoCAD.

Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, A.Kudrjashov сказал:

ИМХО. У нас нет многих лет, просто нет

Про многие лета я не говорил:D

Ссылка на сообщение
Поделиться на другие сайты
22 часа назад, A.Kudrjashov сказал:

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

 LispBenchMark - специфическая вещь для ИТ-шников и разового представления руководству

В SCRIPTED можно сделать пакетную замену (getvar MILLISECS), которая нужна разве, что для тестов производительности в критических случаях. Тем не менее тестирование производительности версии Nc 7.0  было выполнено в 2016г - см. https://isicad.ru/ru/articles.php?article_num=18375

 

Изменено пользователем lidia.antipina.ru
Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, lidia.antipina.ru сказал:

 LispBenchMark - специфическая вещь для ИТ-шников и разового представления руководству

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

Спойлер

image.thumb.png.76078b606a6b379515fed1730e59bb0e.png

 

Спойлер

image.thumb.png.417883386be5926418408cc85766239b.png


Еще есть вот такой замечательный тест
https://adn-cis.org/cad-speed-test.html

Спойлер

image.png.6a290ccbaa01aa5f4cb9ced0d52eb0b5.png

 

Что касается замены, то, если мне необходимо делать несколько тысяч замен многострочного текста во множестве файлов, то я использую:
https://uvsoftium.ru/products/uvfilescorrector

Отлично работает !

 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!

×
×
  • Создать...