Jump to content

Search the Community

Showing results for tags 'lisp'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Общие форумы
    • Принципы распространения продуктов Нанософт
    • Общие вопросы
    • Скачать полезное
    • Обсуждение любых САПР
  • Тематические форумы
    • Поддержка ОС Linux
    • dows
    • dows
    • dows
    • dows
    • dows
    • dows
    • dows
    • nanoCAD Механика 3D
    • dows
    • dows
    • nanoCAD Конструкции PS
    • dows
    • dows
    • dows
    • dows
    • dows
    • dows
    • dows
    • nanoCAD Стройплощадка
    • Функциональные расширения nanoCAD
    • Портал Технической поддержки
    • nanoTDMS
  • Программы членов Клуба разработчиков
    • KDM-INFO
    • Проектное бюро "Фордевинд"
    • VetCAD++
  • Не о программах
    • Юмор
    • Вопросы и пожелания по работе форума
    • Вопросы и пожелания по работе сайта
    • Новостная лента сайта nanoCAD.ru

Blogs

  • Фишки и трюки nanoCAD
  • Делюсь опытом работы с Cad программами
  • Полезные ссылки и закладки
  • Блог MaxSoft о nanoCAD
  • Утилиты nanoCAD или как упростить работу в программе
  • Конкурсы nanoCAD
  • О разном
  • cad admin notes
  • Рабочий дом как помощь людям
  • Все подряд

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Сайт


ICQ


Skype


Город


Интересы

  1. Всем привет! Обнаружил, что функция ANGLE в NC возвращает отличные от AC значение угла. в AC, функция возвращает угол в диапазоне от 0.0 до 2*Pi в NC, функция возвращает угол от 0.0 до Pi и от -Pi до 0.0 В итоге, для совместимости функции в AC и NC, использую такую обёртку: (defun ATP:angle (p1 p2 / ang) (if (minusp (setq ang (angle p1 p2))) (+ pi pi ang) ang ) )
  2. Надо подсветить таблицу для передачи ее штатной команде экспорт в Excel (defun C:drz_ExpotrSumRepSS () (setq ss1 (ssget "_A" '((0 . "SPDSTABLE2")(300 . "Отчет сводный")))) (sssetfirst nil ss1) (command "TABLEEXCELEXPORT") ; (princ) ) если таблица одна, то экспортируется нормально, а вот если несколько, то набор слетает и нана просит выбрать таблицу.. Собственно вопрос, как подсветить только один объект из выбора?
  3. Всем привет! Столкнулся ещё с одним багом. В частности, некорректно работают методы задания новых координат для полилинии. Проверил так: (vlax-put {Object} 'Coordinates {ListPoints}) и так: (vla-put-Coordinates {Object} {VariantPoints}) Результат один - неверный. Правда, не во всех случаях) Ошибка проявляется когда для полилинии устанавливаем более короткий список вершин. Во вложении видео с тестовой командой TestLW, где я создаю новую полилинию поверх восьмигранника, а затем, указывая новые вершины треугольника, пытаюсь её преобразовать. В результате получаю полилинию не в виде треугольника, а что-то иное, частично позаимствованное от старой фигуры. Тестовый Lisp файл во вложении. TestLW.mp4 TestLW.LSP
  4. Здравствуйте! Столкнулся с двумя проблемами при адаптации lisp'а под nano. 1. Не работает функция ERROR определённая локально. 2. Попытка предотвратить прерывание кода функцией vl-catch-all-apply не увенчалась успехом. Код всё равно прерывается и не выполняется полностью. Для демонстрации привожу тестовую команду TEST1. Если на запрос выбора примитива нажать Esc, выполнение кода прерывается. Локальное определение функции ERROR игнорируется, и выполняется функция ERROR определённая глобально. В итоге, в командной строке результат: ошибка: функция прервана А должно быть: Конец команды TEST1 Тестировал: Платформа nanoCAD, версия 22.0, сборка ВСЕ. Встречал здесь на форуме адаптированный под nano набор функций Pltools, в котором все перечисленные функции присутствуют. И задаюсь теперь вопросом - эти функции работают некорректно только у меня на 22 версии? Какие есть варианты решения данных проблем? Переопределение функции ERROR глобально не вариант! Отказаться от vl-catch-all-apply не могу( (defun C:TEST1 (/ *ERROR*) (defun *ERROR* (MSG / ) (princ "\n Сработала локальная функция *ERROR*") (princ) ) (vl-load-com) (vl-catch-all-apply (function (lambda () (entsel "\n Нажмите Esc:") ) ) ) (princ "\n Конец команды TEST1") (princ) )
  5. Здравствуйте, подскажите куда копать, чтобы просветиться в вопросе... В справке вычитал, что кроме LSP с кодом на LISP, нанокад может воспринимать ещё и LSC (бинарный файл LISP). Гдеб по подробней почитать об этом формате и том как из LSP получить LSC? Автокад умеет работать с FAS файлами, LSC - нечто подобное?
  6. <Каталог> <nanoCAD. Программирование и автоматизация> Подготовил на Powershell скрипт синтаксического разбора LISP модулей с последующей генерацией диаграммы связности функций при помощи GraphViz. Актуальная версия скрипта будет пока лежат здесь. Сейчас скрипт в первом приближении. Я запускаю скрипт из под ISE, но, в принципе, работает и из командной строки. Скрипт опробован на трех модулях: bgtools_3.11a_Nc_21.lsp, pltools_NC.lsp, StripMtext_v5-0c1_NC.lsp При запуске скрипта предлагается выбрать LISP файл для анализа и отметить списки, которые необходимо по окончании работы экспортировать в Excel. Результатом работы является текстовый файл в каталоге \dot. Для обработки текстового файла необходим комплект утилит GraphViz. Я экспериментировал с утилитами Dot, Circo и Twopi. В каталоге \dot лежат командные файлы заточенные под мои каталоги. Их необходимо отредактировать. Кроме этого, можно экспериментировать с: опциями заполнения окончательного изображения диаграмм (строка опции в текстовом DOT файле) ratio=fill|expand с размером генерируемых изображений в дюймах (строка опции в текстовом DOT файле) size=24|36|48 c опцией разрешения изображения для растров (опция в командном файле) -Gdpi=0|100|200|300 ... с другими параметрами Важно! При обработке утилитами GraphViz почему то в режиме имен файлов по умолчанию "-O" нормально воспринимаются любые имена файлов, а при указании конкретных имен "-o" только имена файлов без пробелов. В результате получаем схему взаимосвязей вызовов функций вида: bgtools_3.11a_Nc_21.lsp pltools_NC.lsp StripMtext_v5-0c1_NC.lsp
  7. Установлен стиль печати монохром, а на печать выходят цветные линии, что делать? Для того чтобы распечатать чертеж в монохроме ( черно-былым) необходимо чтобы цвета на чертеже были указаны в индексах. Если цвет задан RGB( 0,0,0), то СТВ-таблицы его не обрабатывают и на печать выходит цвет. Lisp "layers(1)" производит автоматическую замену цвета слоя заданного в RGB на индексированный. Пример работы: 1. Цвет слоя задан в RGB 2. Загрузить lisp 3. После выполнения команды CHGTCL в командной строке появится сообщение о заменённых цветах в слоях 4. В Диалоге Слои цвет задан индексом layers (1).lsp
  8. <Каталог> <nanoCAD. Программирование и автоматизация> (Перевод стаей о типах LISP из Справки к AutoCAD 2015 и дополнительная информация специфичная для nanoCAD) Integer AutoCAD 2015. LISP. About Integers Integer - это целые числа, которые не содержат десятичной точки. Для хранения целых чисел используется 32 бита. 31 бит используется для хранения числа а один бит для хранения знака числа. Диапазон целых чисел в целом находится в пределах +/- 2^31 или (от - 2 147 483 648 до 2 147 483 647). Как утверждается в Справке к AutoLISP AutoCAD 2015, в некоторых функциях значения Integer интерпретируются как 16-битные чиста в пределах от - 32 678 до 32 677. Однако, практика показывает, что на данный момент не всё так однозначно. Например, если в nanoCAD выполнить присвоение переменной числа 2 147 483 647, то вместо ожидаемого максимально возможного целого числа, получим действительное число (REAL). А, при последующем добавлении к нему единицы значение данного действительного числа будет увеличиваться в положительную сторону. При этом, если мы инициируем переменную значением 2 147 483 646, то получим правильную верхнюю границу INT в 2 147 483 647 и переход к отрицательным значениям при последующем прибавлении 1 (единицы). Но, если мы инициируем переменную не числом 2 147 483 647, а выражением (setq xInt (- (expt 2 31) 1)), что, казалось бы, должно привести к аналогичному результату, результат получим совершенно другой. Более того, оказывается, что в AutoCAD 2015 и в nanoCAD 20.1 "граница" между INT и REAL в случае выполнения вышеупомянутых арифметических операций и оценке типа переменной при помощи функции type выглядит несколько по разному. AutoCAD: nanoCAD: Предполагается, что, в случае превышения результата арифметических операций над INT, результат автоматически приводится к REAL. Однако, практика показывает, что это не всегда верно. Рассмотрим две операции сложения и умножения вида: 1) 384 758 647 * 12 = 4 617 103 764 2) 384 758 647 + 4 232 345 117 = 4 617 103 764 Предполагается, что операции будут эквивалентными, но в действительности получаем: Резюме. Для корректной работы с целыми числами необходимо быть полностью уверенным, что их значения не выйдут за границы целочисленных значений LISP. Если есть сомнения, то лучше использовать действительные (REAL) числа, осознано преобразовывая их обратно к целочисленным значениям, в случае использования функций, работающих только с INT. Да, это трудоёмко и не всегда удобно, однако, позволит избежать непредсказуемых ошибок преобразования типов, как описанных выше, так и не описанных. Real AutoCAD 2015. LISP. About Reals REAL - это действительные числа с десятичной точкой. Числа в диапазоне от -1 до 1 могут содержать 0 (ноль) слева от десятичной точки. Значения REAL занимают 64 бита и соответствуют типу double в Си. Границы допустимых значений типа REAL примерно от 4.94 x 10-324 до 1.79 x 10308. При выходе за эти границы, будет получено значение "Infinity" (бесконечность) или 0.0 (ноль). Поскольку представленные десятичные числа имеют одинарную точность, то Машинный эпсилон (наименьшее положительное число) ε, при котором не распознаются два числа a и b: 1 < a/b < 1+ε, ε ≈ 5,96 x 10-8. Похоже, что Мантисса действительного числа состоит из 7 знаков, включая десятичную точку. И не просто состоит, но записывается в память именно с такой точностью. Поскольку в AutoLISP как AutoCAD, так и nanoCAD отсутствуют функции округления из Common LISP, типа round или trancate, прикладываю файл с функциями от Lee Mac. http://www.lee-mac.com/round.html LM_round.lsp Что нужно знать про арифметику с плавающей запятой List AutoCAD 2015. LISP. About Lists AutoCAD 2015. LISP. About Point Lists AutoCAD 2015. LISP. About Dotted Pairs List - это базовый тип LISP, представляющий собой Списки атомарных элементов и других списков. Функции, используемые для получения доступа к элементам списков: Для получения доступа к координатам 2D и 3D точек в точечных списках рекомендуется обращаться не через функцию nth, а через функции: car - для доступа к первой координате, cadr - для доступа ко второй координате и caddr - для доступа к третьей координате. Функции car и cdr могут последовательно комбинироваться и обеспечивать доступ к атомарным элементам и вложенным спискам иерархического списочного дерева до 4-го уровня вложенности. car, cdr .... cddddr About Entity Context and Coordinate Transform Data Обсуждение на форуме. 2020-10-14 LISP в nanoCAD 20.1 https://forum.nanocad.ru/index.php?/topic/11617-lisp-v-nanocad-201/&tab=comments#comment-74317
  9. Есть программы которая считывает атрибуты блока и заполняет таблицу (например: общие данные). Случайно заметил глюк. При очередном открытии файла (после просмотра его автокадом) атрибуты блоков немного "поплыли". Помогает команда в командной строке "атробновить". Атрибуты в пространстве модели после этого выглядят нормально. Но программное чтение атрибута не видить его значения. При этом в свойствах блока значения атрибутов видно. Чтобы исправить ситуацию приходится ручками заходить в редактирование атрибута блока и не редактируя выйти. Что это может быть? и как избежать?
  10. В AutoLISP различие результата выполнения функций print и prin1 заключается в частности в том, что функция print предваряет вывод очередной порции текста переводом строки. В nanoCAD этого не происходит ! TestPrint.lsp test-print_nanoCAD.txt test-print_AutoCAD.txt
  11. Отрисовка условного обозначения откосов дороги с возможностью регулировать расстояние между штрихами (2,4). Ролик снят в nanoCAD 20.1 otkgp_1.lsp
  12. Значения координат точек (X,Y,Z) выводятся в системе координат nanoCAD, округленные до двух знаков после запятой. Вывод координаты Z можно отрегулировать. geo_koord_mleader_adapt.lsp
  13. Нумерация точек чертежа вручную с возможностью задавать префикс, суффикс и угол поворота текста. Num_Nc.lsp
  14. Создание списка слоев с заданными параметрами. В диспетчере слоев создается список слоев с определённым названием, типом и весом линий. CreateLayers.LSP
  15. Экспорт координат указанных точек, выбранных объектов: точек, блоков, полилиний, сплайнов в текстовый файл или Excel. Округление координат происходит в соответствии с текущими настройками команды _UNITS coorN_nano.LSP
  16. Почему-то нету кнопки прикрепить в этой ветке форума у меня) Лисп удаления дублирующихся блоков во всём чертеже: https://ftp.nanosoft...665d415e5ade6d2 UPD. Кнопка появилась)) pl_bl-del-copy.LSP
  17. Актуальна ли эта http://bushman-andrey.blogspot.ru/2012/08/lisp-autocad.html проблема для NC?
  18. Коллеги. Доброго дня. Может, я не совсем верно определил тему, где написать свое сообщение. Но тем не менее... И надеюсь не стоит объяснять, что такое программа GEOBRIDGE. Но на всякий случай: https://geobridge.ru/docs По этой ссылке Вы можете узнать подробнее о программном продукте GEOBRIDGE. Вопрос прост: Есть ли те, кто хотел бы увидеть и приобрести GEOBRIDGE специально разработанный для платформы NАNOCAD? Так как разработка программ не дешевая задача, то необходимо определить потребность в ней. Напомню, что программа GEOBRIDGE рекомендована ГГО КГА (Геолого геодезическим отделом Комитета по градостроительству и архитектуре г. Санкт-Петербург) для выполнения камеральных геодезических работ, а также полностью соответствуют требованиям ГАУ "Леноблгосэкспертиза". Поскольку GEOBRIDGE устанавливается на данный момент лишь на платформу AutoCAD и только на полноценную дорогостоящую версию, то и возникла идея разработки программы и для других платформ. На данный момент выбрана платформа NАNOCAD, как наиболее перспективная. Прошу в комментариях высказаться за или против, подкрепив свою точку зрения доказательными аргументами. Спасибо.
  19. Функция назначенная на выполнение при активации элемента типа :popup_list, выполняется не только при активации данного элемента, но и сразу же при запуске основного модуля. Функции назначенные на выполнение при активации элементов типа :list_box, :button выполняется, как и положено, только при активации элемента на который они назначены. Протестировано на NCadSDK81_3712.2221.3574. В приложении тестовый пример и скрин результата. После старта приложения popuptst , не дожидаясь активации раскрывающегося списка POP2 , сразу же появляется ответ функции popact, как будто элемент :popup_list pop2 был активирован. Как сделать так, что бы функции назначенные на элементы типа :popup_list выполнялись ТОЛЬКО при активации соответствующих элементов ? DCL файл почему-то запрещено присоединять к сообщению. Вот его текст. popuptst.DCL popuptst : dialog { label = "Тест выпадающих списков"; width = 30; //:popup_list { :list_box { key = "pop1"; label = "pop1"; } :button { key = "bpop1"; label = "get 1"; } :popup_list { key = "pop2"; label = "pop2"; } :button { key = "bpop2"; label = "get 2"; } :popup_list { key = "pop3"; label = "pop3"; } :button { key = "bpop3"; label = "get 3"; } ok_cancel; } popuptst.LSP
  20. Так как на текущий момент размеры проставляемые в nanocad не учитывают ПСК, то текст в некоторых случаях вставляется в перевернутом виде! Для решения этой проблемы, а также для возможности в дальнейшем изменить ориентацию размерного текста согласно текущей ПСК, есть решение в виде скрипта на LISP (как бы его не любили). Команда запуска DimOrientUCS (Autocad также поддерживается) DimOrientUCS.LSP
  21. Добрый день. Роясь в автокадовских лиспах и проверяя их на совместимость с NanoCad 7 8, обнаружил очень полезный лисп, расставляющий выноски с координатами указанных точек по чертежу. В версии 7.0х64 Лисп отрабатывает почти до конца, но ничего не отрисовывает. В версии 8.0х64 выноска отрисовывается, но Nanocad вылетает с неустранимой ошибкой Может есть тут кто умный, разбирающийся в Lispе, кто переделает скрипт? vinoska.lsp
  22. Добрый день. Добавлю еще несколько Лисов, работающих в NanoCad 1. Расстановка блоков в вершины полилинии. Выставляет блоки по вершинам полилинии. точка привязки блока в вершине. Имя блока задается во время выполнения скрипта. 2. Нумерация вершин полилинии от 1 вершины с задаваемым начальным номером 3. Экспорт координт вершин полилини в Excel Блоки в вершины.zip Нумерация вершин полилинии.zip Экспорт координат полилинии в Excel.zip
  23. Выложу то, на чём у меня сейчас работает моя недоавтоматизация. Писалось всё с 2009 года, поэтому код неказистый. Но по принципу "работает - и ладно" используется и не трогается без особой необходимости. Комментарии написал минимально. Но зато с примером использования. Лисп я вообще не перевариваю, но нужно было что-то скриптовое с нормальным взаимодействием с объектами ACAD2006-8. А начинал с VBA. Как это всё работает, и тем более, как я это собрал в кучу - загадка Добавлю загрузчик лиспов из папки (автор - Зуенко Виталий) и простенький пример использования цикла - заполняет вертикальную шкалу по параметрам, запрашиваемым у пользователя из командной строки (можно и горизонтальную, функция внутри позволяет выбирать). Авось, кому пригодится это добро в начинаниях. PAV.lsp LSPloader.lsp Шкала.lsp
  24. Итак. Нужно в Нанокаде очищать форматирование объектов Мтекст. Пытался найти программиста чтобы реализовал, но расценки не порадовали, поэтому буду пытаться сам. Пойдем простым логическим путем. Нашел рабочую лиспину (кому интересно см. вложение) на cadusers, пытаюсь запустить в Нанокад. Не работает естественно... "Сервер ActiveX вернул ошибку: Библиотека не зарегистрирована." Отсюда вопросы: Как узнать какую библиотеку он хочет? Отладчик есть у нанокада? Библиотека наверняка автокадовская, если я ее найду и зарегистрирую будет работать? Стоит ли этим вообще заниматься, если я последний раз программировал лет 20 назад? Спасибо! UnFormatMtext.lsp
×
×
  • Create New...