|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Программное создание lookup table
Programming, automation, CADs, GISs. СибМИР
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 310
|
||
Просмотров: 473
|
|
||||
Programming, automation, CADs, GISs. СибМИР Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 310
|
нашёл вот это:
https://forum.abok.ru/index.php?showtopic=14612&st=573 и вот это: https://forum.dwg.ru/showthread.php?p=182362#post182362 разбираюсь... п.с. и вот это ещё: https://forum.dwg.ru/showthread.php?t=14519
__________________
На LISPе можно мыслить! Последний раз редактировалось Ax3, вчера в 01:01. |
|||
![]() |
|
||||
Programming, automation, CADs, GISs. СибМИР Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 310
|
в общем, по результатам осмысления наработок Kpblc и Supermax наваял на основе программы Supermax-а (по записи лукапов из экселя, у меня с ходу не заработала, пришлось разбираться) некую версию, которая выдаёт следующий результат:
(eval_graf_output) ("n18=" ((-1 . <Entity name: 1f260db1a60>) (0 . "BLOCKLOOKUPACTION") (330 . <Entity name: 1f260db1900>) (5 . "7F9296") (100 . "AcDbEvalExpr") (90 . 11) (98 . 33) (99 . 202) (100 . "AcDbBlockElement") (300 . "Lookup1") (98 . 33) (99 . 202) (1071 . 0) (100 . "AcDbBlockAction") (70 . 0) (71 . 0) (1010 121.607 -73.3569 0.0) (100 . "AcDbBlockLookupAction") (92 . 1) (93 . 1) (301 . "") (302 . "123") (303 . "") (94 . 5) (95 . 1) (96 . 0) (282 . 1) (305 . "Custom") (281 . 1) (304 . "lookupString") (280 . 1))) ("n18new=" ((-1 . <Entity name: 1f260db1a60>) (0 . "BLOCKLOOKUPACTION") (330 . <Entity name: 1f260db1900>) (5 . "7F9296") (100 . "AcDbEvalExpr") (90 . 11) (98 . 33) (99 . 202) (100 . "AcDbBlockElement") (300 . "Lookup1") (98 . 33) (99 . 202) (100 . "AcDbBlockAction") (70 . 0) (71 . 0) (100 . "AcDbBlockLookupAction") (92 . 1) (93 . 1) (301 . "") (302 . "123") (303 . "") (94 . 5) (95 . 1) (96 . 0) (282 . 1) (305 . "Custom") (281 . 1) (304 . "lookupString") (280 . 1))) ("(entmod n18new)=" nil) ("n22=" ((-1 . <Entity name: 1f260db1a60>) (0 . "BLOCKLOOKUPACTION") (330 . <Entity name: 1f260db1900>) (5 . "7F9296") (100 . "AcDbEvalExpr") (90 . 11) (98 . 33) (99 . 202) (100 . "AcDbBlockElement") (300 . "Lookup1") (98 . 33) (99 . 202) (100 . "AcDbBlockAction") (70 . 0) (71 . 0) (100 . "AcDbBlockLookupAction") (92 . 1) (93 . 1) (301 . "") (302 . "000") (303 . "") (94 . 5) (95 . 1) (96 . 0) (282 . 1) (305 . "Custom") (281 . 1) (304 . "lookupString") (280 . 1))) ("(entmod n22):" nil) ("(entupd (cdr (car n22))):" nil) В темах про динамические блоки ("Мои динамические блоки" и "Мои динамические блоки 2"), где это обсуждалось, не могу отписаться, т.к. обе закрыты. Я так понял, что смысл выполняемых преобразований сводится к тому, чтобы в dxf-списке словаря, отвечающего за таблицу значений лукапа, заменить 302 группы на пары, содержащие нужные значения, попутно удалив группы 1071 и 1010, и сделать entmod по модифицированному списку. Но, видимо, всё сложнее, т.к. у меня entmod не отрабатывает, возвращает nil, соответственно и содержимое lookup table не меняется... Kpblc, Supermax, если заглянете в эту тему, буду благодарен за подсказки, куда дальше копать. П.С. На появляющуюся при создании lookupaction визуальную форму я вообще забил, думаю, скажу пользователям, чтоб просто тыкали OK и ничего в ней не делали. Если получится программно скорректировать lookup table, конечно. П.П.С. У меня параметр lookup1, к нему присоединена таблица lookup table с одним возможным значением "123" (вывод значения n18 это показывает в группе (302."123")), я пытаюсь это значение заменить на "000" (в выводе значения n22 видно (302."000"))
__________________
На LISPе можно мыслить! Последний раз редактировалось Ax3, 11.07.2025 в 14:33. |
|||
![]() |
|
||||
Programming, automation, CADs, GISs. СибМИР Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 310
|
Понятно. В AutoCAD 2007 (entmod) для BLOCKLOOKUPACTION работает, и работало у supermax-а соответственно. В AutoCAD 2018 уже не работает.
Ради интереса проверял в ACAD2018 вручную несколько версий урезанных списков, сработал только один вариант, не содержащий вообще никаких кодов, кроме entity name: ;(entmod (list (cons -1 (handent "7E5993")))) ;- ok ;(entmod (list (cons -1 (handent "7E5993")) (cons 302 "123"))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 302 "000"))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 301 "000") (cons 302 "000") (cons 303 ""))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 92 1) (cons 301 "000") (cons 302 "000") (cons 303 ""))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 305 "Custom"))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION"))) ; - ok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 330 (handent "7E5984")) )) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 5 "7E5993") )) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 100 "AcDbEvalExpr"))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 90 9))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 300 "Lookup1"))) ; - nok ;(entmod (list (cons -1 (handent "7E5993")) (cons 0 "BLOCKLOOKUPACTION") (cons 305 "Custom"))) ; - nok Ладно, буду дальше копать...
__________________
На LISPе можно мыслить! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Насколько я помню, в 2016 версии что-то там поменяли, и коды SuperMax'а работать перестали. А так-то открытого API для подобной модификации дин.блоков вроде бы нет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программное создание мультивыноски | Makswell | Программирование | 64 | 06.02.2025 19:39 |
Программное создание сплайна | Fedorino | Программирование | 5 | 01.04.2014 11:06 |
Редактор блоков - Lookup table не редактируется Acad2006 | ытя | AutoCAD | 12 | 17.10.2011 18:00 |
программное создание размеров в dxf файле | _Oleg_ | Программирование | 4 | 01.02.2011 16:36 |
Программное создание стиля для mleader AutoCAD 2008 | swkx | Программирование | 6 | 15.04.2010 20:11 |