| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Эмуляция нажатия клавиш из под AutoLisp-a

Эмуляция нажатия клавиш из под AutoLisp-a

Ответ
Поиск в этой теме
Непрочитано 27.10.2007, 20:38 #1
Эмуляция нажатия клавиш из под AutoLisp-a
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Хочу автоматизировать заполнение lookup параметров динамических блоков в AutoCAD-e из под AutoLisp-a.
Макрос запустить можно только в редакторе блоков. Как только заходишь в lookup, все, баста карапузики.
У меня есть колонка в экселе, которую мне надо перенести в lookup. Я хочу запустив марос в редакторе, сделать следующее: В макросе есть реактор на двойное нажатие левой кнопки мыши (это когда я в lookup вошел и второй раз, когда установил курсор в нужной ячейке). После второго срабатывания реактора запускается процесс копирования значения ячейки в таблице экселя и вставки этого значения в текущую позицию курсора.

мне нужно нажать Сtrl+V, потом стрелку вниз, после этого я скопирую в буфер следующую ячейку и опять надо Ctrl+V и стрелку вниз. Лисп это делать не умеет, но у него есть возможность читать и записывать системные переменные Windows. Вот если бы кто-нибудь на delphi сварганил такую штуку, которая будучи запущена с определенным именем читала системную переменную и нажимала ту кнопку (или коомбинацию) которая в ней записана, а при запуске этой же проги, но с другим именем - опять читала эту переменную и отжимала кнопку, или коомбинацию, которые там указаны. Или что-то в этом роде. Все эмуляторы нажатия клавиш пересмотрел, а нужного и нет совсем.
Для всех AutoLisp-чиков это был бы большой подарок.

Добалю: Из под AutoLisp-a можно запускать любые приложения.
Просмотров: 22048
 
Непрочитано 28.10.2007, 07:38
#2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


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

Управление визуальными элементами Windows из LISP - то же самое, даже с учетом возможности запуска любых приложений. Нет в Windows "системных переменных" с кобинациями нажатых клавиш.

Windows основана на интерфейсе, управляемом событиями. В ней может быть открыто много приложений, в каждом может быть множество окон, в каждом окне разные "control" (это тоже окна). При любом действии в системе (мышкой шевельнули, клавишу нажали) генерируются "события" - сообщения, передаваемые в систему. Разумеется, не текстовые сообщения, а "потоки" байтиков. И все элементы начинают разбираться, кому сообщение направлено и кто за него "отвечает" (должен реагировать).

В высокооуровневых программах отслеживаются действия в собственных элементах управления, но тоже на высоком уровне. Например, для комбобокса, может быть событие "OnChange" - при изменении содержимого любым способом (хоть выбором из списка, хоть ручным вводом). На это событие программа может отреагировать. Можно, например, для наглядности, вставить диалоговое сообщение, которое и будет выскакивать постоянно.

Организовывать слежение за нажатием-отжатием кнопки и прочими мелочами нет никакого смысла. Да еще куда-то передавать через мифические переменные.

Лучше уж чинить зубы через рот. Впрочем, если желание не пропадает, можете начать изучение WinApi и написание собственного языка программирования динамических блоков.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 29.10.2007, 12:16 Про лечение зубов через зад
#3
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да ты просто не догнал, о чем я тут толкую.
Не отслеживать надо нажатия, а эмулировать. Есть много друг ShaggyDoc такого, что нельзя сделать в рамках одного языка программирования. Да и программировать можно по разному. Можно вскрывать сущность элементов и пытаться ковыряться в их кишках, можно эмитировать действия пользователя используя префикс перед командами, а можно вообще симитировать работу рук, только для этого надо кое-что сделать. К сожалению в AutoCAD-e не все объекты доступны для редактирования через Active X. Создание многих вещей вообще невозможно программно. Пока, надеюсь.
Если ты (ничего, что на ты?) можешь создать Lookup программно, с 160-тью строками текста - молоток. Только эти 160 строк тебе прийдется набивать ручками все равно. А пользователю надо облегчить труд по заполнению этих Lookup-ов, тем более, что этот пользователь я. Я имею уже текст, который мне надо занести в lookup (ах да, забыл. Lookup - это такая фенька в динамических блоках, которая представляет из себя список значений и настраивает параметры блока соответствующим образом. В результате, в свойствах блока появляется выпадающее меню, где выбрав нужное значение - перестраиваешь все остальные свойства блока), так вот текст этот в экселе, или в ворде, и он о-о-чень большой, и всегда разный, в прогу не вставишь.
Ладно, надо нажать стрелку вниз. Как? В Лиспе можно смотреть на состояние значения переменной windows, ясен пень специально созданной для этого. Из лиспа и создавать переменные можно. Можно любые программы запускать и файлы открывать. К стати вместо переменной windows можно использовать временный текстовый файл, или еще что-нибудь.
Вот тут: http://z-oleg.com/delphi/hardwkle.htm
есть как это сделать на delphi. Можно и на C++ или еще чем-нибудь.
Supermax вне форума  
 
Непрочитано 29.10.2007, 13:03
#4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Если есть список строк значений, то что мешает в любом текстовом редакторе преобразовать его в строку разделённую запятыми (^p -> ,) и закинуть их разом через буфер? Или я неправильно понял суть?
Alaspher вне форума  
 
Непрочитано 29.10.2007, 13:07
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Там сначала надо окно вызывать, и позиционироваться определенным образом. Получить-то значения lookup-параметров дин.блоков в принципе возможно, но вот с их модификацией что-то у меня не срослось Тупой, наверно.
Кстати, если интересно (ох и огребу сейчас ), мой вариант "получить все" болтается здесь
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2007, 13:21
#6
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


А, понял, на наборы свойств уже... Там сорри - как-то уж очень всё кудряво сделано - слишком долго ковыряться придётся.
Alaspher вне форума  
 
Непрочитано 29.10.2007, 13:36
#7
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


КАПЕЦ!!! Это чтож за блок такой со 160-ю строками!!!! С таким блоком интересно очень удобно работать?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Автор темы   Непрочитано 29.10.2007, 17:04 Про капец.
#8
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да там лифтик появляется на определенном моменте. Так что и 1000 можно. Да, скопировать состояние строк можно, Kpblc прав. Вот создать новый Lookup и туда их вставить - дело пока для чистого Lisp-a не подъемное. Требуется помощь со стороны.
Для Shoorup:
Скачай мой 3D динамический блок с теплообменником в библиотеке элементов лежит. Там lookup 160 строк.

Дык, есть кто в delphi шарит, или нет пока?
Supermax вне форума  
 
Автор темы   Непрочитано 30.10.2007, 09:31 Про эмуляцию клавиш
#9
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Так, тема должна жить! Так доктор сказал. Ну и что, что холодная? Сделаем искусственное дыхание рот в рот и прямой массаж сердца. Кто делать будет? Дык, а практиканты зачем? Вот пусть и практикуются. На живых темах и дурак - профессором выглядит. Что зараза, какая зараза - ее давно нафармалинили насквозь. Вон, мухи ползают и не дохнут. А эти практиканты - мухи и те поэнергичнее будут.
Supermax вне форума  
 
Автор темы   Непрочитано 30.10.2007, 13:22 Про внутренности дин блоков
#10
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Есть такие объекты, наукой совсем не изученные как:
AcDbBlockLookupActionEntity
AcDbBlockLookupParameterEntity
AcDbBlockStretchActionEntity
AcDbBlockLinearParameterEntity
AcDbBlockRotateActionEntity
AcDbBlockRotationParameterEntity
AcDbBlockVisibilityParameterEntity

Ну и еще с десяток из инструментов свойств блока.

Можно ли создать функцией vla-add эти объекты сказать трудно, поскольку не понятно какие к ним надо указывать дополнительные параметры
Также пытался применить к ним метод vla-copy - глухо. В списке от думпа есть такой метод, а на деле он к эти объектам не применим. Выдает
Command: (setq lookup1 (vla-copy (vlax-ename->vla-object (car (entsel)))))
Select object: ; error: Automation Error. Description was not provided.

Посему не будем тянуть резину, вручную открываем lookup (хотя открывать его можно программно, но через command) и вручную ставим курсор на нужную ячейку, щелкая при этом двойным кликом.
Supermax вне форума  
 
Автор темы   Непрочитано 31.10.2007, 12:28 Про эмуляцию нажатия клавиш
#11
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Каждый день буду заходить и смотреть, не появился ли на горизонте богатырь, что поможет выполнить эту задачу?
C++, Delphi, Ау! Где вы?
Supermax вне форума  
 
Автор темы   Непрочитано 01.11.2007, 12:08
#12
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


С Kpblc-ом расковыряли динамические свойства почти "до винтика" Нашли все записи, но создать такие по некоторым причинам нельзя.
Начина я от сюда и далее
http://forum.abok.ru/index.php?showtopic=14612&st=540

Все "умники", которые считают, что стоит только захотеть и работать с динамическими блоками можно будет без извращений, типа того, что здесь предлагается, могут сами попробовать "вкус этих устриц", а потом уж высказывать свой скептицизм.
Supermax вне форума  
 
Непрочитано 01.11.2007, 15:28
#13
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Supermax Посмотреть сообщение
С Kpblc-ом расковыряли динамические свойства почти "до винтика"
А чего там ковырять?
Как пример, структура файла, относящаяся к дин блоку, может быть отображена в списке - очень удобно просматривать после форматирования в лисп редакторе...
Код:
[Выделить все]
(defun en-l (l)
 ;;(setq l5 nil lst (en-l (entget (car (entsel "\n Укажите динамический блок...")))))
 (if l
  (vl-remove-if
   (function null)
   (mapcar (function (lambda (x / a)
                      (cond ((= (car x) -1) nil)
                            ((or (= (car x) 0) (= (car x) 2) (= (car x) 3)) (cdr x))
                            ((and (= (type (setq a (cdr x))) 'ENAME)
                                  (setq a (entget a))
                                  (not (member (cdr (assoc 5 a)) l5))
                             ) ;_  and
                             (setq l5 (cons (cdr (assoc 5 a)) l5))
                             (en-l a)
                            )
                            (t nil)
                      ) ;_  cond
                     ) ;_  lambda
           ) ;_  function
           l
   ) ;_  mapcar
  ) ;_  vl-remove-if
 ) ;_  if
)
вызываем
Код:
[Выделить все]
(setq l5 nil lst (en-l (entget (car (entsel "\n Укажите динамический блок...")))))
Получаем список, типа такого:
Код:
[Выделить все]
("INSERT"
 ("DICTIONARY"
  ("INSERT"
   ("BLOCK_RECORD"
    ("TABLE" "BLOCK_RECORD")
    "*Model_Space"
    ("BLOCK" "*Model_Space")
    ("LAYOUT"
     ("DICTIONARY"
      ("DICTIONARY"
       "ACAD_COLOR"
       ("DICTIONARY")
       "ACAD_GROUP"
       ("DICTIONARY")
       "ACAD_LAYOUT"
       "ACAD_MATERIAL"
       ("DICTIONARY" "ByBlock"
                     ("MATERIAL" "" "")
                     "ByLayer"
                     ("MATERIAL" "" "")
                     "Global"
                     ("MATERIAL" ("DICTIONARY" "BUMPTILE"
                                               ("XRECORD")
                                               "DIFFUSETILE"
                                               ("XRECORD")
                                               "OPACITYTILE"
                                               ("XRECORD")
                                               "REFLECTIONTILE"
                                               ("XRECORD")
                                 )
                                 ""
                                 ""
                     )
       )
       "ACAD_MLEADERSTYLE"
       ("DICTIONARY" "Standard"
                     ("MLEADERSTYLE" ("LTYPE" ("TABLE" "LTYPE") "ByBlock" "")
                                     "Standard"
                                     ("STYLE" ("TABLE" "STYLE") "Standard" "txt")
                     )
       )
       "ACAD_MLINESTYLE"
       ("DICTIONARY" "Standard" ("MLINESTYLE" "STANDARD" ""))
       "ACAD_PLOTSETTINGS"
       ("DICTIONARY")
       "ACAD_PLOTSTYLENAME"
       ("ACDBDICTIONARYWDFLT" "Normal" ("ACDBPLACEHOLDER"))
       "ACAD_SCALELIST"
       ("DICTIONARY" "A0"
                     ("SCALE")
                     "A1"
                     ("SCALE")
                     "A2"
                     ("SCALE")
                     "A3"
                     ("SCALE")
                     "A4"
                     ("SCALE")
                     "A5"
                     ("SCALE")
                     "A6"
                     ("SCALE")
                     "A7"
                     ("SCALE")
                     "A8"
                     ("SCALE")
                     "A9"
                     ("SCALE")
                     "B0"
                     ("SCALE")
                     "B1"
                     ("SCALE")
                     "B2"
                     ("SCALE")
                     "B3"
                     ("SCALE")
                     "B4"
                     ("SCALE")
                     "B5"
                     ("SCALE")
                     "B6"
                     ("SCALE")
                     "B7"
                     ("SCALE")
                     "B8"
                     ("SCALE")
                     "B9"
                     ("SCALE")
                     "C0"
                     ("SCALE")
                     "C1"
                     ("SCALE")
                     "C2"
                     ("SCALE")
                     "C3"
                     ("SCALE")
                     "C4"
                     ("SCALE")
                     "C5"
                     ("SCALE")
                     "C6"
                     ("SCALE")
                     "C7"
                     ("SCALE")
                     "C8"
                     ("SCALE")
                     "C9"
                     ("SCALE")
                     "D0"
                     ("SCALE")
                     "D1"
                     ("SCALE")
                     "D2"
                     ("SCALE")
       )
       "ACAD_TABLESTYLE"
       ("DICTIONARY" "Standard" ("TABLESTYLE" ("DICTIONARY") "Standard"))
       "ACAD_VISUALSTYLE"
       ("DICTIONARY" "2dWireframe"
                     ("VISUALSTYLE" "2dWireframe")
                     "3D Hidden"
                     ("VISUALSTYLE" "3D Hidden")
                     "3dWireframe"
                     ("VISUALSTYLE" "3dWireframe")
                     "Basic"
                     ("VISUALSTYLE" "Basic")
                     "Brighten"
                     ("VISUALSTYLE" "Brighten")
                     "ColorChange"
                     ("VISUALSTYLE" "ColorChange")
                     "Conceptual"
                     ("VISUALSTYLE" "Conceptual")
                     "Dim"
                     ("VISUALSTYLE" "Dim")
                     "Facepattern"
                     ("VISUALSTYLE" "Facepattern")
                     "Flat"
                     ("VISUALSTYLE" "Flat")
                     "FlatWithEdges"
                     ("VISUALSTYLE" "FlatWithEdges")
                     "Gouraud"
                     ("VISUALSTYLE" "Gouraud")
                     "GouraudWithEdges"
                     ("VISUALSTYLE" "GouraudWithEdges")
                     "Linepattern"
                     ("VISUALSTYLE" "Linepattern")
                     "Realistic"
                     ("VISUALSTYLE" "Realistic")
                     "Thicken"
                     ("VISUALSTYLE" "Thicken")
       )
       "ACDB_RECOMPOSE_DATA"
       ("XRECORD")
       "AcDbVariableDictionary"
       ("DICTIONARY" "CANNOSCALE"
                     ("DICTIONARYVAR")
                     "CMLEADERSTYLE"
                     ("DICTIONARYVAR")
                     "CTABLESTYLE"
                     ("DICTIONARYVAR")
                     "DIMASSOC"
                     ("DICTIONARYVAR")
                     "HIDETEXT"
                     ("DICTIONARYVAR")
       )
      )
      "Layout1"
      ("LAYOUT" "None"
                ("BLOCK_RECORD" "*Paper_Space" ("BLOCK" ("ENDBLK") "*Paper_Space"))
      )
      "Layout2"
      ("LAYOUT" "None"
                ("BLOCK_RECORD" "*Paper_Space0" ("BLOCK" ("ENDBLK") "*Paper_Space0"))
      )
      "Model"
     )
     "none_device"
     ("VPORT" ("TABLE" "VPORT") "*Active")
    )
   )
   "*U3"
  )
  "AcDbBlockRepresentation"
  ("DICTIONARY"
   "AcDbRepData"
   ("ACDB_BLOCKREPRESENTATION_DATA"
    ("BLOCK_RECORD"
     ("DICTIONARY" "ACAD_ENHANCEDBLOCK"
                   ("ACAD_EVALUATION_GRAPH" ("BLOCKLINEARPARAMETER")
                                            ("BLOCKLINEARGRIP")
                                            ("BLOCKGRIPLOCATIONCOMPONENT")
                                            ("BLOCKGRIPLOCATIONCOMPONENT")
                                            ("BLOCKSTRETCHACTION" ("LWPOLYLINE"))
                   )
                   "AcDbDynamicBlockRoundTripPurgePreventer"
                   ("ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION")
     )
     "bl-1"
     ("BLOCK" "bl-1")
    )
   )
   "AppDataCache"
   ("DICTIONARY" "ACAD_ENHANCEDBLOCKDATA" ("DICTIONARY" "1" ("XRECORD") "5" ("XRECORD")))
  )
 )
 "*U3"
)
Если сразу убрать лишнюю ветку списка - относящуюся к модели, листу и.т.д, то получаем:
Код:
[Выделить все]
("INSERT"
 ("DICTIONARY"
  "AcDbBlockRepresentation"
  ("DICTIONARY"
   "AcDbRepData"
   ("ACDB_BLOCKREPRESENTATION_DATA"
    ("BLOCK_RECORD"
     ("DICTIONARY" "ACAD_ENHANCEDBLOCK"
                   ("ACAD_EVALUATION_GRAPH" ("BLOCKLINEARPARAMETER")
                                            ("BLOCKLINEARGRIP")
                                            ("BLOCKGRIPLOCATIONCOMPONENT")
                                            ("BLOCKGRIPLOCATIONCOMPONENT")
                                            ("BLOCKSTRETCHACTION" ("LWPOLYLINE"))
                   )
                   "AcDbDynamicBlockRoundTripPurgePreventer"
                   ("ACDB_DYNAMICBLOCKPURGEPREVENTER_VERSION")
     )
     "bl-1"
     ("BLOCK" "bl-1")
    )
   )
   "AppDataCache"
   ("DICTIONARY" "ACAD_ENHANCEDBLOCKDATA" ("DICTIONARY" "1" ("XRECORD") "5" ("XRECORD")))
  )
 )
 "*U3"
)
На мой взгляд, очень удобная запись, хорошо видно зависимости словарей и блока...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 01.11.2007, 17:50
#14
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Видит око, да зуб не ймет - девиз сидящих на диете.
Через Aktive X решения не имеет (пока). Это "пока" завист только от AutoDesk-a.
Структура ясна, зависимости определены, препятствия обнаружены и отмечены по сабачьи.
Решение по созданию программы, в которую девушка могла-бы набивать данные и формировать динамические блоки - найдено, но не через AktiveX, увы. Копировать можно, но через эмуляцию создания нового элемента.
То, собственно о чем эта тема. Решение пришло на VBA, как ни странно. Больше ничего не скажу, поскольку сам еще не определился с результатом.
Supermax вне форума  
 
Непрочитано 01.11.2007, 17:55
#15
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Supermax Посмотреть сообщение
Видит око, да зуб не ймет - девиз сидящих на диете.
Через Aktive X решения не имеет (пока). Это "пока" завист только от AutoDesk-a.
Структура ясна, зависимости определены, препятствия обнаружены и отмечены по сабачьи.
Решение по созданию программы, в которую девушка могла-бы набивать данные и формировать динамические блоки - найдено, но не через AktiveX, увы. Копировать можно, но через эмуляцию создания нового элемента.
То, собственно о чем эта тема. Решение пришло на VBA, как ни странно. Больше ничего не скажу, поскольку сам еще не определился с результатом.
А у меня получилось все гораздо проще...
Взял готовый блок и добавил туда необходимое количество дополнительных параметров!
Все из лиспа, через dxf - никакого вба.

PS. если есть вопросы - контакты в профиле...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 01.11.2007, 18:18
#16
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Через Command можно:
Открыть сам блок,
Создать любое количество окон с их описанием на русском языке,
Создать все абсолютно динамические элементы
И все.
А вот Lookup нашпиговать - только через VBA.
Можно сортировать элементы дин свойств.
Если ты знаешь как изменить запись в словаре и обойти код (1071 . 0) и (1010 далее координаты) в котором нет точки, то ты ГУРУ и мы падем к тебе в ноги и будем жрать грязь с твоих чювяк.
Supermax вне форума  
 
Непрочитано 01.11.2007, 18:28
#17
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Supermax Посмотреть сообщение
Через Command можно:
Открыть сам блок,
Создать любое количество окон с их описанием на русском языке,
Создать все абсолютно динамические элементы
И все.
А вот Lookup нашпиговать - только через VBA.
Можно сортировать элементы дин свойств.
Если ты знаешь как изменить запись в словаре и обойти код (1071 . 0) и (1010 далее координаты) в котором нет точки, то ты ГУРУ и мы падем к тебе в ноги и будем жрать грязь с твоих чювяк.
Знаю...
Мне сегодня стало интересно, чем вы так заняты с Алексеем, решил тоже ковырнуть в минуты отдыха.
меняю я через entmod
тысячные коды - расширенные данные, с ними так и работают, как с расширенными данными, как пример, если не нужны чужие данные - удаляй их, либо запоминай и после редактирования добавляй...
Короче, специально проверил и добавил списки для линейного размера и списки для поиска (Lookup) в дин блок...
Единственно, я немного упростил себе задачу, эти свойства уже были в блоке, я только их менял или добавлял данные...
Елпанов Евгений вне форума  
 
Непрочитано 01.11.2007, 18:33
#18
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Supermax Посмотреть сообщение
Если ты знаешь как изменить запись в словаре и обойти код (1071 . 0) и (1010 далее координаты) в котором нет точки, то ты ГУРУ и мы падем к тебе в ноги и будем жрать грязь с твоих чювяк.
Жрать грязь не стоит, лучше помогите найти работу...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 01.11.2007, 18:38
#19
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Мужик, я уже слюнявчик надел, готовь чювяки, только сперва давай на чистоту. Грязь хавать авансом я не хочу.
Код:
[Выделить все]
(
(-1 . <Entity name: 7ebf58e8>) 
(0 . "BLOCKLOOKUPACTION") 
(330 . <Entity name: 7ebf5850>) 
(5 . "3DD") 
(100 . "AcDbEvalExpr") 
(90 . 19) 
(98 . 25) 
(99 . 76) 
(100 . "AcDbBlockElement") 
(300 . "Второй") 
(98 . 25) 
(99 . 76) 
(1071 . 0) 
(100 . "AcDbBlockAction") 
(70 . 0) 
(71 . 0) 
(1010 566.948 -247.188 0.0) 
(100 . "AcDbBlockLookupAction") 
(92 . 6) 
(93 . 4) 
(301 . "") 
(302 . "100.0000000000000") 
(302 . "0.3490658503988659") 
(302 . "VisibilityState0") 
(302 . "Первая надпись") 
(302 . "200.0000000000000") 
(302 . "0.6981317007977318") 
(302 . "VisibilityState0") 
(302 . "Вторая надпись") 
(302 . "") 
(302 . "") 
(302 . "") 
(302 . "Третья надпись") 
(302 . "") 
(302 . "") 
(302 . "") 
(302 . "Четвертая надпись") 
(302 . "") 
(302 . "") 
(302 . "") 
(302 . "Пятая надпись") 
(302 . "") 
(302 . "") 
(302 . "") 
(302 . "И нигде не ставлю значений соответствия") 
(303 . "") 
(94 . 5) 
(95 . 40) 
(96 . 2) 
(282 . 0) 
(305 . "Custom") 
(281 . 0) 
(304 . "UpdatedDistance") 
(303 . "") 
(94 . 10) 
(95 . 40) 
(96 . 1) 
(282 . 0) 
(305 . "Custom") 
(281 . 0) 
(304 . "UpdatedAngle") 
(303 . "") 
(94 . 1) 
(95 . 1) 
(96 . 0) 
(282 . 0) 
(305 . "Custom") 
(281 . 0) 
(304 . "VisibilityState") 
(303 . "") 
(94 . 15) 
(95 . 1) 
(96 . 0) 
(282 . 1) 
(305 . "Custom") 
(281 . 0) 
(304 . "lookupString") 
(280 . 1)
)
Вот содержимое "BLOCKLOOKUPACTION". Я беру эту гадость и разбиваю на две части, добавляю нужные строки с 302-ым кодом, склеиваю и пытаюсь Entmod, не хочет. Пытаюсь оригинал - тоже не хочет, Стер эти два кода - опять enmod -не хочет. Как ты смог этот набор отредактировать?
Supermax вне форума  
 
Непрочитано 01.11.2007, 18:43
#20
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


я же сказал, в любом случае, удаляй эти данные...
Например так:
(vl-remove-if (function (lambda (x) (> (car x) 1000)))...

и еще, много раз проверял - данные в точности восстанавливаются автоматом, технологию не знаю.
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Эмуляция нажатия клавиш из под AutoLisp-a

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фундамент "ригель по столбам" под сруб и печь &amp;Rey Основания и фундаменты 25 27.08.2010 19:53