Jump to content

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


aerohost
 Share

Recommended Posts

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. Практически все функции имеет смысл проверять на предмет их  не просто функционирования, а корректности результата. Особенно  в граничных случаях. И нарабатывать собственный пул таких "проверенных временем" функций. Все-таки даже здесь в обсуждениях попадались нестыковки в функционировании казалось бы совсем безобидных функций.

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

  • Like 2
Link to comment
Share on other sites

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

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


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

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

Edited by A.Kudrjashov
Link to comment
Share on other sites

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 реализованы не все, т.к. тоже частично устарели, либо не требуются

Edited by lidia.antipina.ru
  • Like 1
Link to comment
Share on other sites

9 минут назад, lidia.antipina.ru сказал:

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

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

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

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

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

Edited by EdwardSt
Link to comment
Share on other sites

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

 

 

 

 

 

  • Like 2
Link to comment
Share on other sites

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

 

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

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

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

Edited by lidia.antipina.ru
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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).

 

  • Like 1
Link to comment
Share on other sites

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. Но не в нашей реальности.

Link to comment
Share on other sites

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 все инструменты необходимо поверять.

Link to comment
Share on other sites

16 часов назад, EdwardSt сказал:

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

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


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

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

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

Link to comment
Share on other sites

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

Edited by lidia.antipina.ru
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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

Снимок.JPG

Link to comment
Share on other sites

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

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

 

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

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

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

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

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

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

 

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

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

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

12 минут назад, lidia.antipina.ru сказал:

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


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

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

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

  • Like 2
Link to comment
Share on other sites

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

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

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

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

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

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

Link to comment
Share on other sites

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

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

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

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

 

Edited by lidia.antipina.ru
Link to comment
Share on other sites

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

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

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 7 months later...

Не лень тебе одному и томужэж члену сообщества

Отвечать на один и тотжэж вопрос несколько раз))))

 

Умиляюсь толерантности администрации.. многократное повторение однооо и тогожэж... флуд

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

Link to comment
Share on other sites

Только что, lidia.antipina.ru сказал:

Повторенье - мать ученья

Надо будет попробовать так...

Файлы с багами, да и просто обсуждение размазывать по всем темам..

Техподдержке так будет удобнее???.. 

заметнее это точно)))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...