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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное создание меню ACad

Программное создание меню ACad

Ответ
Поиск в этой теме
Непрочитано 04.02.2009, 12:06 #1
Программное создание меню ACad
Holon
 
CNC
 
Israel
Регистрация: 07.07.2007
Сообщений: 302

Хочу на лету создать меню, и подгрузить его,
но програмно несовсем получается ACad требует
продолжения банкета.

Command: mnu ._menuload
Enter name of customization file to load: C:\TEST.mnu
Unable to load customization file: C:\TEST.mnu
That Customization Group name already exists.


Код:
[Выделить все]
(defun c:mnu ( / fl ret Path Name)
    (setq
        Path  "C:\\"
        Name  "TEST"
        fl    (strcat Path Name ".mnu" )
    )       
    (setq ret (open fl "w"))
    (mapcar '(lambda (x) (write-line x ret))
        (list
"***POP1"
"[TEST]"
"[Menu1]'_func1"
"[Menu2]'_func2"
"[Menu3]'_func3"
"[Menu4]'_func4"
"[Menu5]'_func5"
))
(setq ret (close ret))
(command "._menuload" fl)
(princ)
)
Просмотров: 3071
 
Непрочитано 04.02.2009, 12:22
#2
Кулик Алексей aka kpblc
Moderator

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


А ты сначала проверь наличие такого же меню и при необходимости выгружай его.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.02.2009, 12:42
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Не увидел в твоем меню такой строчки
Цитата:
***MENUGROUP=TEST
***POP1
....
Код:
[Выделить все]
(if (null (menugroup "TEST"))(command "_.MENULOAD" "TEST.mnu"))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.02.2009, 13:33
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Если предполагается подгружать падающее меню, то желательно использовать файл *.mnl с функцией (menucmd).
Profan вне форума  
 
Автор темы   Непрочитано 04.02.2009, 17:38
#5
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Цитата:
Сообщение от VVA Посмотреть сообщение
Не увидел в твоем меню такой строчки

Код:
[Выделить все]
(if (null (menugroup "TEST"))(command "_.MENULOAD" "TEST.mnu"))
ACad ругаться перестал но меню по прежнему не появляется.
Код:
[Выделить все]
(defun c:mnu ( / fl ret Path Name)
    (setq
        Path  "C:\\"
        Name  "TEST"
        fl    (strcat Path Name ".mnu" )
    )       
    (setq ret (open fl "w"))
    (mapcar '(lambda (x) (write-line x ret))
        (list
"***MENUGROUP=TEST" 
"***POP1"
"[TEST]"
"[Menu1]'_func1"
"[Menu2]'_func2"
"[Menu3]'_func3"
"[Menu4]'_func4"
"[Menu5]'_func5"
))
(setq ret (close ret))
(if (null (menugroup "TEST"))(command "_.MENULOAD" fl))
(princ)
)
Holon вне форума  
 
Непрочитано 04.02.2009, 18:04
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


А оно и не должно. Menuload просто грузит. Добавляет/убирает menucmd.
Примеры
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=9205LB
или файл из Express'ов acetmain.mnl
поиск по menucmd
Код:
[Выделить все]
;;;    ACETMAIN.MNL
;;;    Copyright © 1999 by Autodesk, Inc.
;;; ........................................................
 
; ------------  PLACE THE EXPRESS PULL-DOWN FUNCTION -------------
;  This function places the Express pull-down to the left of the
;  Window pull-down on the acad menu. If FLG is true the current
;  Express pull-down if present will be removed and placed again.
;  If FLG is nil and the pull-down is present, nothing will be done
;
;  When placing the Express menu, acad's Window menu is used to
;  determine the pull-down location. if the Window pull-down is
;  missing, the Help pull-down will be used instead. If that too
;  is missing, it will place the Express pull-down after the last
;  menu location.
; ----------------------------------------------------------------
 
; Place the Express Tools pulldown to the left of the last pulldown already loaded
 
(defun acet-init-placemenu( / n )
  (if (menugroup "EXPRESS")
      (progn
       (setq n 1)
       (while (< n 24)
        (if (menucmd (strcat "P" (itoa n) ".1=?"))
            (setq n (+ n 1))
            (progn
             (if (> n 3)
                 (setq n (- n 2))
                 (setq n 3)
             );if
             (menucmd (strcat "p" (itoa n) "=+EXPRESS.pop1"))
             (setq n 25)
            );progn
        );if
       );while
      );progn
  );if
);defun acet-init-placemenu

(acet-init-placemenu)
(princ)
PS Offtop: С слову поиск url добавляется автоматом сам
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное создание меню ACad



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание меню в форме VBA Mischa Программирование 6 31.12.2008 17:09
Меню в ACAD Baxetle Программирование 1 25.05.2007 13:12
Смена профиля польз. в XP(prof) и меню Acad 2006 Павлов Андрей AutoCAD 2 26.04.2007 13:28
Попасть в слой. Vova AutoCAD 106 10.03.2006 04:36