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

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


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

36 минут назад, aerohost сказал:

Групповые коды DXF 90 поставить на 2( скрыть фон), потом поставить DXF 90 поставить на 3 ( показать фон) то все работает

все не так.

 

Спойлер

image.png.3b930b65dec847dbd002f9c034fff1af.png

 

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

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

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

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

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

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

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

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

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

все не так.

 

  Фрагмент справки (Показать контент)

image.png.3b930b65dec847dbd002f9c034fff1af.png

 

Приложенная картинка не совпадает с фактом, проверено научным тыком. Возможно ошибаюсь. Из опыта 0 - отключает фон и как я понял затирает dfx 90 ,не даёт потом использовать 1,2,3 .

1 - делает фон по цвету. 

2-отключает фон(даёт использовать 1,3,2)

3- фон по чертежу

 

 

 

 

 

Screenshot_2021-11-02-15-14-04-323_com.android.chrome.jpg

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

Приложенная картинка не совпадает с фактом, проверено научным тыком. Возможно ошибаюсь. Из опыта 0 - отключает фон и как я понял затирает dfx 90 ,не даёт потом использовать 1,2,3 .

1 - делает фон по цвету. 

2-отключает фон(даёт использовать 1,3,2)

3- фон по чертежу

 

Если это так (я сам проверил только 0 - отключение фона, работает), то нужно тоже оформлять как баг.

Значения должны соответствовать спецификациям DXF-кодов

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

Приложенная картинка не совпадает с фактом, ...

 

Действительно, есть расхождение между справкой и практикой.

Вопрос, конечно, интересный, можно ли справку считать спецификацией.

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

 

По конкретике выяснилось следующее:

 

1. DXF-группа 90 представляет собой битовую маску (где 1 бит - есть/нет фон, 2 бит - цвет фона/установленнй цвет, 5 бит(нет в справке совсем!) - наличие рамки вокруг текста 

Спойлер

0 (0х00) - нет фона

1 (0х01) - есть фон, цвет фона фиксированный и лежит в группе 63

2 (0х10) - нет фона, цвет фона равен цвету окна (бессмысленная комбинация, но ее можно дубиться действиями вручную)

3 (0х11) - есть фон, цвет фона равен цвету окна

 

Если ко всем этим значениям приплюсовать 16 (0х10000) - взвести 5-й бит, то это означает все то же самое, но с рамкой вокруг блока текста

 

2. Если при каких-либо манипуляциях происходит сброс значения в 0, то эта DXF-группа 90 и связанные с ней 45, 63 и 421 из списка (entget ...) удаляются, что означает необходимость их формирования заново, если понадобится программно установить цвет заднего фона и/или рамку текста

 

3.При удалении DXF-группы 90 параметры 63, 45 (внимание!) именно для этого элемента где-то сохраняются, но не отображаются в списке (entget ...). Но при копировании этого элемента с отсутствующей группой 90 остальные параметры сбрасываются в некие дефолтные значения.

 

 

Дополнительно отмечу, что все три замечания относятся и к AC, и к NC.

На практике замечанием 3 лучше не пользоваться, т.к. ситуация трудно контролируемая.

Лучше использование явных определений.

 

Итого, в сухом остатке

Спойлер

   (if (not (assoc 90 da)) 
      (setq da (append da (list
        (cons 90  17); 17=16+1  - текст с рамкой и фиксированным цветом
        (cons 63 223);223 - индексированный цвет фона 223 
        (cons 45  1.5); масштаб фона 1.5 - здесь он равен дефолтному 
        )))) 

Значения, понятно, необходимо менять на свои с использованием переменных

 

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

Попытался переписать функцию BounderyMText с применением входных параметров.

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

 

Все возможные варианты параметра цвет разбирать не стал (на группу 421 забил).

Просто предлагаю аккуратно использовать индексированные цвета 1-256.

В остальном вроде все прозрачно.

В АС не проверял, но тоже должно работать.

Пользуйтесь

 

BoundMText-ACNC.lsp

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

Вопрос, конечно, интересный, можно ли справку считать спецификацией.

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


Справка - это, конечно, не спецификация. Но, документ, точно и корректно описывающий текущее состояние дел должен быть. Это может быть отсылка к стандартной Спецификации Autodesk или свой собственный документ, но исследования DXF и ему подобных структур "методом тыка" - не вариант. ИМХО.

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

Попытался переписать функцию BounderyMText с применением входных параметров.

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

 

Все возможные варианты параметра цвет разбирать не стал (на группу 421 забил).

Просто предлагаю аккуратно использовать индексированные цвета 1-256.

В остальном вроде все прозрачно.

В АС не проверял, но тоже должно работать.

Пользуйтесь

 

BoundMText-ACNC.lsp 2 \u043a\u0411 · 2 загрузки

Спасибо, но я вчера уже сделал в общем виде  в консоле, с контуром, с различным фоном , вроде все работает. Так же сделал со скрытым параметром 1 группы 90, просто в начале, когда запустил лисп,надо ввести 1, а не "Да" эквивалент параметра 3 группы 90.  Есть одно но, только цвет фона надо в самом файле менять надо(если использовать параметр 1), но мне надо или белый или цвет чертежа :)

BoundMText.lsp

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

документ, но исследования DXF и ему подобных структур "методом тыка" - не вариант.

Но зачастую это единственно возможный вариант.

Документирование разработок часто отстает от собственно разработок.

Вот и приходится нащупывать границы функционала. 

И форум  - неплохое место для обмена опытом таких исследований)

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

Документирование разработок часто отстает от собственно разработок.

Всегда отстает))

Даже у истинного кад куча недокументированных функций и некоторые документированные работают не так как заявлено.

Нано с его почти нулевой документацией (кое что есть по мультикад, но это другими разработчиками сделано)

Намного проще

Изменено пользователем doctorraz
Ссылка на сообщение
Поделиться на другие сайты
В 03.11.2021 в 12:36, EdwardSt сказал:

все не так.

 

  Фрагмент справки (Показать контент)

image.png.3b930b65dec847dbd002f9c034fff1af.png

 

А можете тыкнуть где найти эту справку, что то я искал, не нашел

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

Попытался переписать функцию BounderyMText с применением входных параметров.

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

 

Все возможные варианты параметра цвет разбирать не стал (на группу 421 забил).

Просто предлагаю аккуратно использовать индексированные цвета 1-256.

В остальном вроде все прозрачно.

В АС не проверял, но тоже должно работать.

Пользуйтесь

 

BoundMText-ACNC.lsp 2 \u043a\u0411 · 5 загрузок

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

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

Прошу помочь разобраться с адоптацией лиспа Геокоординаты-xyz.lspподписыывающего мультивыноской координаты "х" и "у".

Nanocad мультиливыноску рисует, в команднной строке, прописывает полученные координаты но не выводит.

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

Дефект известный #25410, но пока не исправленный. Добавьте координаты в TEXT/MTEXT в группировке с выноской

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

Я немного не понял какая группая dfx отвечает за фон для мультивыноски

Конкретно с выноской не разбирался.

Спойлер

image.png.cb14e1d9db550dc732141f292f3ff104.png

...

image.png.a44f8df46db904b68349877a25e5688e.png

 

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

Выделите мультивыноску по (entget(car(entsel))) и посмотрите коды dxf, что там есть

Сделал это еще до своего предыдущего поста

Спойлер

Команда: (setq a (car (entsel)))

Выбор объектов

1 найдено

#<Имя примитива: 0000019CACA85070>

Команда: (entget a)

((-1 . #<Имя примитива: 0000019CACA85070>) (0 . "MULTILEADER") (5 . "562") (330 . #<Имя примитива: 0000019CF8BC8930>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbMLeader") (270 . 2) (300 . "CONTEXT_DATA{") (40 . 1.0) (10 -12562.0 35751.4 0.0) (41 . 4.0) (140 . 4.0) (145 . 2.0) (174 . 1) (175 . 1) (176 . 0) (177 . 0) (290 . 1) (304 . "мой текст") (11 0.0 0.0 1.0) (340 . #<Имя примитива: 0000019CF8BC8070>) (12 -12560.0 35753.4 0.0) (13 1.0 0.0 0.0) (42 . 0.0) (43 . 0.0) (44 . 0.0) (45 . 1.0) (170 . 1) (90 . -1056964608) (171 . 1) (172 . 1) (91 . -939524096) (141 . 1.5) (92 . 0) (291 . 0) (292 . 0) (173 . 0) (293 . 0) (142 . 0.0) (143 . 0.0) (294 . 0) (295 . 0) (296 . 0) (110 0.0 0.0 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (297 . 0) (302 . "LEADER{") (290 . 1) (291 . 1) (10 -12570.0 35751.4 0.0) (11 1.0 0.0 0.0) (90 . 0) (40 . 8.0) (304 . "LEADER_LINE{") (10 -12578.1 35736.1 0.0) (91 . 0) (92 . -1056964608) (305 . "}") (304 . "LEADER_LINE{") (10 -12571.6 35723.4 0.0) (91 . 1) (92 . -1056964608) (305 . "}") (271 . 0) (303 . "}") (272 . 9) (273 . 9) (301 . "}") (340 . #<Имя примитива: 0000019CF8BC9B30>) (90 . 17107968) (170 . 1) (91 . -1056964608) (341 . #<Имя примитива: 0000019CF8BC82B0>) (171 . -2) (290 . 1) (291 . 1) (41 . 8.0) (42 . 4.0) (172 . 2) (343 . #<Имя примитива: 0000019CF8BC8070>) (173 . 1) (95 . 1) (174 . 1) (175 . 0) (92 . -1056964608) (292 . 0) (93 . -1056964608) (10 1.0 1.0 1.0) (43 . 0.0) (176 . 0) (293 . 0) (294 . 0) (178 . 0) (179 . 1) (45 . 1.0) (271 . 0) (272 . 9) (273 . 9) (295 . 0))

Довольно развесистая клюква.

И почему цвет фона именно такой, как в выделенном фрагменте (а для красного фона он  - (91 . -1023410175)) еще необходимо разбираться.

Поэтому вопрос  @aerohost достаточно заковырист

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

И почему цвет фона именно такой, как в выделенном фрагменте (а для красного фона он  - (91 . -1023410175)) еще необходимо разбираться.


Там применяется какой то сложный индекс
 

Спойлер

image.png.f8c90d76380dce25fea3c31337d17f80.png

 

Спойлер

image.thumb.png.4f7dd4ff758e4a1e486e0393821e09e4.png

 

Спойлер

image.thumb.png.1214bc7dd0d779e5904f9a59dadbda08.png

 

... но вот здесь описано, как можно работать с этими цветами, если я правильно понял вопрос.
https://www.theswamp.org/index.php?topic=40944.0

http://www.theswamp.org/index.php?topic=37313.msg454906#msg454906

 

Во всяком случае (princ (mleaderstylecolour->colour -1023410175)) возвращает 1.
https://gohtx.com/acadcolors.php
 

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

 

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

image.thumb.png.4f7dd4ff758e4a1e486e0393821e09e4.png

 

Битовая маска...

 

А откуда инфа? Ссылочкой не поделитесь?

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

Битовая маска...

 

А откуда инфа? Ссылочкой не поделитесь?


AutoCAD 2012 DXF Reference
https://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf

Open Design Specification for .DWG files

https://www.opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf
 

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

Уважаемые коллеги огромная просьба! А есть ли у кого нибудь полный набор функций лисп с расшифровкой, работающих на NanoCad? Сея драгоценность очень бы сократила время разработки приложений!

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

Уважаемые коллеги огромная просьба! А есть ли у кого нибудь полный набор функций лисп с расшифровкой, работающих на NanoCad? Сея драгоценность очень бы сократила время разработки приложений!


Формально, есть два источника:
1. SDK

Спойлер

image.png.d4079287fd3b17c87087d9012667c2eb.png

 

NC21_LISP_functions.txt

 

2. Опрос непосредственно в LISP.
>(atoms-family 1)
NC21_atoms-family.txt

 

LISPDumpFile.lsp
LISPDumpFile_2020-10-08.lsp

 

LspDumpFile.log

 

... но не факт, что всё будет работать также как у AutoCAD.

 

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

Уважаемые коллеги огромная просьба! А есть ли у кого нибудь полный набор функций лисп с расшифровкой, работающих на NanoCad? Сея драгоценность очень бы сократила время разработки приложений!

В принципе большинство функций из справки AutoCAD 2017 и выше должно работать под nanoCAD 21. Вопрос в стиле программирования, интерпретации параметров из nano. Могут быть проблемы с копированием, заменой, подрезкой объектов, обработкой текстовых полей. До версии 21 придется закомментировать vla-startUndoMark, vla-endUndoMark. Не все атрибуты dcl реализованы, но их можно как правило обойти ввиду избыточности

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

В принципе большинство функций из справки AutoCAD 2017 и выше должно работать под nanoCAD 21. Вопрос в стиле программирования, интерпретации параметров из nano.


Если бы всё было так просто. "Большинство функций" - категория сложно определяемая.

Выше был приведён очень простой скрипт на LISP.
LISPDumpFile_2020-10-08.lsp

 

Ниже приводятся результаты его работы под:
AutoCAD 2015

AC2015_LspDumpFile.log

AutoCAD 2019
AC2019_LspDumpFile.log


nanoCAD 20.1

NC20_1_LspDumpFile.log


nanoCAD 21.0

NC21_0_LspDumpFile.log


А также приводится сводная таблица полученных взаимных соответствий.

ACAD_NC_Func_Comparison.xlsx

 

Общий свод.
Как я понимаю, в NC21.0 осталось только то, что должно принципиально работать.

Спойлер

image.png.dfbfb454ca1df953de0c438eb7fbeb50.png

 

Сравнение по позициям.
Как то так. Более подробно по позициям в файле.

Спойлер

image.thumb.png.6446ccff7574563c1f0f5240083835a1.png

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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