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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп автозаписная книжка

Лисп автозаписная книжка

Ответ
Поиск в этой теме
Непрочитано 08.09.2008, 21:47 #1
Лисп автозаписная книжка
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,143

Хотел посоветоваться

Можно ли сделать лисп в котором бы хранились часто используемые слова и фразы в автокаде... (сами слова пополнялись в текстовом файле из которого бы читала их программа)

сам лисп имелбы интерфейс как на скриншоте...

Принцип действия:

1. Нажал на кнопку вышло окошко
2. Щелкунл двойгым щелчком
3. Затем выбрал текст или м-текст (и он заменился бы на выбранный)

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


Надеюсь на помощь VVA... (у Вас был похожий вариант со вставкой букв в алфавитном порядке)

Миниатюры
Нажмите на изображение для увеличения
Название: Snap1.jpg
Просмотров: 533
Размер:	23.8 Кб
ID:	9895  

__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 16859
 
Непрочитано 08.09.2008, 22:39
#2
-mavlin-


 
Регистрация: 30.04.2008
Сообщений: 400


А как насчет палитры инструментов? Не пользуемся по идейным соображениям?
Наделал блоков с нужными надписями, запихнул в палитру и в свойствах указал, чтобы при вставке взрывалось. И не неужен никакой лисп.
-mavlin- вне форума  
 
Непрочитано 08.09.2008, 22:53
#3
gipro

лайсенсед инжиниа
 
Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158


-mavlin-, как ты представляешь себе с полсотни надписей в тулпалетсе? как искать?
gipro вне форума  
 
Непрочитано 09.09.2008, 01:28
#4
-mavlin-


 
Регистрация: 30.04.2008
Сообщений: 400


Так можно сгруппировать однотипные надписи в несколько палитр.
Точно также, как и впредполагаемом лиспе.
-mavlin- вне форума  
 
Автор темы   Непрочитано 09.09.2008, 06:38
#5
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


-mavlin-, лиспом горздо удобнее, он сразу бы на прямую текст вставлял и не глючил, и тормозил как палитра...
кстати в окошке ввода, 6 экранчиков, вот там все записи удобно и распологаются, в одном госты, в другом примечания, в третьем диаметры, ....
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 09.09.2008, 07:06
#6
ShaggyDoc

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


У нас в ruCAD это сделано. Строки вводятся в диалоговом окне (рис. 1). Кнпока Словарь выводит справочник, из которого можно выбрать строку. Справочник, в зависимости от контекста программы, может быть простым линейным для самых частых строк (рис. 2) или древовидным (рис. 3). В простой словарь при включенном флажке Добавить в словарь добавляется текущая строка при выходе по OK.

Кнопка со значком Автокада позволяет взять "что-то с буковками" из чертежа и подредактировать.
Миниатюры
Нажмите на изображение для увеличения
Название: dlg_get_string.png
Просмотров: 261
Размер:	4.4 Кб
ID:	9900  Нажмите на изображение для увеличения
Название: dlg_get_string_from_dic.png
Просмотров: 267
Размер:	7.3 Кб
ID:	9901  Нажмите на изображение для увеличения
Название: dlg_get_string_from_xml.png
Просмотров: 311
Размер:	10.1 Кб
ID:	9902  
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 09.09.2008, 07:27
#7
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


ShaggyDoc, нет хочется универсального чего то, на все кады, и слегкопереносной библиотекой
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 09.09.2008, 09:15
#8
ShaggyDoc

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


Хочется - делай. Чего-то.
ShaggyDoc вне форума  
 
Непрочитано 09.09.2008, 10:10
#9
Ander822


 
Регистрация: 16.07.2007
Minsk
Сообщений: 84


Цитата:
Сообщение от dextron3 Посмотреть сообщение
-mavlin-, лиспом горздо удобнее, он сразу бы на прямую текст вставлял и не глючил, и тормозил как палитра...
кстати в окошке ввода, 6 экранчиков, вот там все записи удобно и распологаются, в одном госты, в другом примечания, в третьем диаметры, ....
Ты не представляешь, постоянно пользуюсь палитрой - и ничего не глючит. Не работа, а одно удовольствие
Ander822 вне форума  
 
Непрочитано 10.09.2008, 15:40
#10
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


А кто знает, как организовать подобную библиотеку фраз в редакторе Мтекста? В стандартном ведь можно только вставить текстовый файл целиком. Ну или дергать фрагменты из внешнего файла с помощью Блокнота. И то, и другое неудобно
Может быть, есть альтернативный редактор с библиотекой станд. фраз?
kp+ вне форума  
 
Непрочитано 10.09.2008, 15:50
#11
Кулик Алексей aka kpblc
Moderator

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


Мой старый код, может, и сработает:
Код:
[Выделить все]
(defun _kpblc-add-symbols (symbol-list / reg_key item counter)
                          ;|
*    Добавление стандартных символов в редактор выпадающего текста.
*    Параметры вызова:
*	symbol-list	список точечных пар вида '(("Наименование символа" . "Его описание"))
*    Примеры вызова:
(_kpblc-add-symbols (list
                      (cons "Разработчик" (_kpblc-get-user-name))
                      (cons "Катет" "\U+0009")
                      (cons "Промилле" "\U+2030")
                      ))
|;
  (setq reg_key
         (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT\\Symbols")
        counter 1
        ) ;_ end of setq
  (foreach item symbol-list
    (vl-registry-write reg_key (strcat "Name " (itoa counter)) (car item))
    (vl-registry-write reg_key (strcat "Contents " (itoa counter)) (cdr item))
    (setq counter (1+ counter))
    ) ;_ end of foreach
  ) ;_ end of defun
В штатном редакторе многострочника правый пинок - Add Symbol - выбрать свое
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.09.2008, 18:02
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Что-то типа записной книжки.
Команда NBOOK. Слова и фразы храните ввиде обычных txt файлов или файла.
Код:
[Выделить все]
(defun mip-reg-get-path ()"HKEY_LOCAL_MACHINE\\Software\\MIP")
(defun mip-reg-write (key value ) ;;;Пишем в профиль в папку МИП
(vl-registry-write (mip-reg-get-path)
(VL-PRINC-TO-STRING key)(VL-PRINC-TO-STRING value)))
(defun mip-reg-read ( key )(vl-registry-read (mip-reg-get-path)
(VL-PRINC-TO-STRING key)))
(defun mip-conv-to-str (dat)
  (cond ((= (type dat) 'INT)(setq dat (itoa dat)))
         ((= (type dat) 'REAL)(setq dat (rtos dat 2 12)))
        ((null dat)(setq dat ""))
        (t (setq dat (vl-princ-to-string dat)))))
  (defun mydclseldict (zagl info-list / fl ret dcl_id str)
(defun prepare ( / fn1 fl1 lst1 str1)
(if (vl-file-systime (setq fn1 (strcat (mip-conv-to-str(mip-reg-read "LASTDIR")) "\\"
     (mip-conv-to-str(mip-reg-read "LASTFILE")))))
    (progn
     (set_tile "tp2" (vl-filename-base fn1)) 
     (setq fl1 (open fn1 "r"))
     (while (setq str1 (read-line fl1))
      (if (/= (vl-string-trim " \t\n" str1) "")
      (setq lst1 (cons str1 lst1))))
      (close fl1)
      (setq info-list (acad_strlsort lst1))
      (start_list "info")
      (mapcar 'add_list info-list)
      (end_list)
      (set_tile "info" "0")
 
      )
    )  
  )
(defun pickdict ( / fn1 fl1 ret1 )
    (if (setq FN1 (getfiled "Выберите файл словаря" (mip-conv-to-str(mip-reg-read "LASTDIR")) "txt" 16))
      (progn
 (mip-reg-write "LASTDIR" (vl-filename-directory fn1))
 (mip-reg-write "LASTFILE" (strcat (vl-filename-base fn1)(vl-filename-extension fn1)))
 (if (vl-file-systime fn1)
   (progn
     (setq fl1 (open fn1 "r"))
     (while (setq str (read-line fl1))
       (if (/= (vl-string-trim " \t\n" str) "")
       (setq ret1 (cons str ret1))))
     (close fl1)
     (setq info-list (acad_strlsort ret1))
     (start_list "info")
            (mapcar 'add_list info-list)
            (end_list)
            (set_tile "info" "0")
     (set_tile "tp2" (vl-filename-base fn1))
     )
   )
 )
      )
    )
  (defun act-info ()
    (setq ret (nth (atoi $value) info-list))
    (mode_tile "accept" 2)
    )
    (vl-load-com)
    (if (null zagl)(setq zagl "Выбор")) ;_ end of if
    (setq fl (vl-filename-mktemp "mip" nil ".dcl"))
    (setq ret (open fl "w"))
    (mapcar '(lambda (x) (write-line x ret))
        (list    
"mydclseldict : dialog {"
(strcat "label=\"" zagl "\";")
 ": row{label=\"Источник данных\";"
 ":column{"
 ": concatenation {key=\"c1\";"
 ": text_part{label=\"Словарь: \"; key=\"tp1\";}"
 ": text_part{label=\"не задан \"; key=\"tp2\";width=30;}"
 "}}"
 ":column{"
 ": button {fixed_width=true;width=3;key=\"pick\";label= \"&Обзор<\";alignment=right;}"
 "}}"
":row{label=\"Данные\";"
 " :list_box {"
 "alignment=top ;"
 "width=51 ;"
; (if (> (length info-list) 26)
    "height= 26 ;"
 ;      (strcat "height= " (itoa (+ 3 (length info-list))) ";")) ;_ end of if
  "is_tab_stop = false ;"
  "key = \"info\";}}"
  "ok_cancel;}"
))
(setq ret (close ret))
(if (setq dcl_id (load_dialog fl))
        (if (new_dialog "mydclseldict" dcl_id)
            (progn
               (if (null info-list)(prepare))
                (start_list "info")
                (mapcar 'add_list info-list)
                (end_list)
                (set_tile "info" "0")
                (setq ret (car info-list))
                (action_tile "pick" "(pickdict)")
;                (action_tile "info" "(setq ret (nth (atoi $value) info-list))")
                (action_tile "info" "(act-info)")
;                (action_tile "info" "(progn(setq ret (nth (atoi $value) info-list))(mode_tile \"accept\" 2))")
 
                (action_tile "cancel" "(progn(setq ret nil)(done_dialog 0))")
                (action_tile "accept" "(done_dialog 1)")
                (start_dialog)
            ) ;_ end of progn
        ) ;_ end of if
    ) ;_ end of if
    (unload_dialog dcl_id)
    (vl-file-delete fl)
    ret
)
  ;;; Text To Text copy
;;; Original posted {Smirnoff}
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=21807yD
;;; Modifyed V. Azarko (VVA) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=21807yD
  (defun TTC_Paste(pasteStr / nslLst vlaObj hitPt
                   hitRes Row Column lst ss)
    (setq errFlag nil)
  (setvar "ERRNO" 0)
    (while (progn
      (setq Lst(nentsel "\nPaste text or first point of corner <Enter-exit> >>"))
      (cond ((= Lst "Switch")
      (TTC_ls)
      (setvar "ERRNO" 0)
      (initget "Switch")
      T
      )
;;;     ((and (null Lst)
;;;    (= (getvar "errno") 7)
;;;    )
;;;      (princ "* Missing * ")
;;;      (setvar "ERRNO" 0)
;;;      (initget "Switch")
;;;      T
;;;      )
     (t nil)
     )
      )
      );_while
 
  (if (and (null Lst)
    (= (getvar "errno") 7)
    (setq hitPt (getcorner  (setq vlaObj (cadr(GRREAD nil 1))) "\nOther point: "))
    (setq ss (ssget "_C" vlaObj hitPt '((0 . "*TEXT"))))
    )
    (progn
    (setq Lst (mapcar '(lambda(x)(cons x '((0 0 0))))
   (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
     )
   )
    )
    (setq Lst (list Lst))
    )
(foreach nsllst Lst
    (if nsllst ;(setq nslLst(nentsel "\nPaste text >"))
      (progn
  (cond
    (
     (and
       (= 4(length nslLst))
       (= "DIMENSION"(cdr(assoc 0(entget(car(last nslLst))))))
       ); end and
     (setq vlaObj
      (vlax-ename->vla-object
        (cdr(assoc -1(entget(car(last nslLst)))))))
     (if
       (vl-catch-all-error-p
         (vl-catch-all-apply
     'vla-put-TextOverride(list vlaObj pasteStr)))
         (progn
         (princ "\n Can't paste. Object may be on locked layer. ")
         (setq errFlag T)
         ); end progn
       ); end if
     ); end condition #1
    (
     (and
       (= 4(length nslLst))
       (= "ACAD_TABLE"(cdr(assoc 0(entget(car(last nslLst))))))
       ); end and
     (setq vlaObj
      (vlax-ename->vla-object
        (cdr(assoc -1(entget(car(last nslLst))))))
     hitPt(vlax-3D-Point(trans(cadr nslLst)1 0))
     hitRes(vla-HitTest vlaObj hitPt
        (vlax-3D-Point '(0.0 0.0 1.0)) 'Row 'Column)
           ); end setq
     (if(= :vlax-true hitRes)
     (progn
         (if
     (vl-catch-all-error-p
       (vl-catch-all-apply
         'vla-SetText(list vlaObj Row Column pasteStr)))
     (progn
       (princ "\n Can't paste. Object may be on locked layer. ")
       (setq errFlag T)
       ); end progn
     ); end if
         ); end progn
       ); end if
     ); end condition # 2
    (
     (and
       (= 4(length nslLst))
       (= "INSERT"(cdr(assoc 0(entget(car(last nslLst))))))
       ); end and
     (princ "\nCan't paste to block's DText or MText. Select Attribute ")
     (setq errFlag T)
     ); end condition #3
    (
     (and
       (= 2(length nslLst))
         (member(cdr(assoc 0(entget(car nslLst))))
           '("TEXT" "MTEXT" "ATTRIB" "ATTDEF" "MULTILEADER"))
       ); end and
     (setq vlaObj
      (vlax-ename->vla-object(car nslLst)))
        (if
     (vl-catch-all-error-p
       (vl-catch-all-apply
         'vla-put-TextString(list vlaObj pasteStr)))
    (progn
       (princ "\nError. Can't pase text. ")
      (setq errFlag T)
      ); end progn
     ); end if
     ); end condition #4
    (T
     (princ "\nCan't paste. Invalid object. ")
     (setq errFlag T)
     ); end condition #5
    ); end cond
             T
      ); end progn
            nil
           ); end if
  )
    ); end of TTC_Paste
  (defun C:NBOOK ( )
    (vl-load-com)
    (and
      (setq str (mydclseldict "Выберите словарь" nil))
      (TTC_Paste str)
      )
    )
(defun C:NBOOK1 ( / txt str pt tblobj row col tblset lst )
    (vl-load-com)
    (if
    (and
      (setq str (mydclseldict "Выберите словарь" nil))
      (setq txt (entmakex
      (list
        (cons 0 "TEXT")
        (cons 100 "AcDbEntity")
        (cons 100 "AcDbText")
        (cons 72 0)           ;_ выравнивание влево
        (cons 1 str)
       (cons 7 (getvar "TEXTSTYLE")) ;_Текущий стиль
        ;(cons 8 layer) ;_Текущий слой
        (cons 10 '(0 0 0))
        (cons 11 '(0 0 0))
        (cons 40 (getvar "TEXTSIZE")) ;_Текущей высотой текста (переменная TEXTSIZE)
        (cons 41 1.0) ;_Степень сжатия/растяжения
        ) ;_ list
      ) ;_ entmakex
          )
 
      )
    (progn
      (princ "\n Укажите точку вставки текста или ячейку таблицы:")
      (vl-cmdf "_.copybase" (trans '(0 0 0) 0 1) txt "" "_.erase" txt "" "_.pasteclip" "_none" pause)
        ;_ В txt примитив текста в pt точка вставки  
       (setq txt (entlast) pt (getvar "LASTPOINT"))
      (and ;_Проверяем, попала ли точка в ячейку таблицы
      (setq  tblobj nil tblset (ssget "_X" '((0 . "ACAD_TABLE"))))
      (setq lst (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp (mapcar 'cadr (ssnamex tblset)))))
      (mapcar '(lambda (x)
           (or tblobj
               (and
                 (= :vlax-true (vla-HitTest x
                               (vlax-3d-point (trans pt 1 0))
                               (vlax-3d-point (trans (getvar "VIEWDIR") 1 0))
                               'row 'col))
                 (setq tblobj x)
                 )
               )
           )
        lst)
      tblobj row col
      (or (vla-SetText tblobj row col str) t)
      (entdel txt)
      )
      )
    )
    (princ)
    )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 21.11.2011 в 19:23. Причина: Добавлен MLEADER
VVA вне форума  
 
Автор темы   Непрочитано 10.09.2008, 18:25
#13
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Command:
Command: NBOOK
; error: no function definition: MIP-REG-GET-PATH

Command:


окошко быстро появляется и исчезает
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 10.09.2008, 19:09
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Обновил # 12
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.09.2008, 19:18
#15
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, теперь окошко появляется, но когда выбераешь текстовый файл опять выдает

Command: NBOOK
; error: no function definition: MIP-REG-WRITE

Command:
Command: NBOOK
; error: no function definition: MIP-REG-WRITE
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 10.09.2008, 19:39
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


исправил. Надеюсь больше проколов не будет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.09.2008, 20:19
#17
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, спасибо нужная вещь!!!,


Offtop: посмотрите личные сообщения я отправил еще один лисп, там лисп записная книжка со вставкой текста с указанием выосты
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 11.09.2008, 12:00
#18
gipro

лайсенсед инжиниа
 
Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158


VVA, вот что у меня пишет:
Код:
[Выделить все]
Paste text or first point of corner <Enter-exit> >>
Other point: ; ошибка: неверный тип аргумента: lselsetp nil
и не запоминает, где у меня текстовый файл лежит.
gipro вне форума  
 
Автор темы   Непрочитано 11.09.2008, 12:10
#19
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


gipro, полсе перезагрузки винды не запоминает или после перезагрузки автокада?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 11.09.2008, 13:29
#20
gipro

лайсенсед инжиниа
 
Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158


dextron3, ситуация такая:
Я запускаю nbook, вылазит окошко - "выберите словарь". Выбираю текстовый файл, выбираю нужную строчку, ОК.
Дальше см.№18
При следующем запуске nbook (ничего не перезагружая) мне приходится снова выбирать словарь.
gipro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп автозаписная книжка

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересно где работают ЛИСП программисты? dextron3 LISP 114 17.12.2017 13:53
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Нужен лисп (пронизыватель лайаутов) dextron3 LISP 91 25.07.2007 07:37
Нужен лисп (super offset) dextron3 LISP 23 25.06.2007 12:51
Нужен лисп (детектор прямоугольников) dextron3 LISP 3 25.06.2007 09:42