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

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

Создание примитивов на слое с контролем его наличия

Ответ
Поиск в этой теме
Непрочитано 01.07.2006, 20:29 #1
Создание примитивов на слое с контролем его наличия
Никита В.
 
CAD Operator
 
Samara-Gorodok
Регистрация: 01.11.2005
Сообщений: 389

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

П.С. Обьясните также следующее: зачем в макро-лиспе вида
Код:
[Выделить все]
^C^C(defun c:dimlinearl () (command "_.dimlinear" pause pause pause "_.chprop" "_l" "" "_la" "размеры" ""));dimlinearl;
в конце программы повторяется ее название???????????

П.П.С. Просьба писать попонятнее, поподробнее - в лиспе я не силен.....
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Просмотров: 3249
 
Непрочитано 03.07.2006, 07:21
#2
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 312
<phrase 1=


Ответ на второй вопрос:
Данный макрос представляет собой определение лисп-функции c:dimlinear1. Определение начинается с
Код:
и кончается последней скобкой.
По сути функция сначала определяется а потом сразу вызывается - поэтому в конце стоит название функции.

в данном случае можно было обойтись просто макросом:
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_last;;_la;"размеры";;
_Andre_ вне форума  
 
Непрочитано 03.07.2006, 07:36
#3
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 312
<phrase 1=


На первый вопрос лисп-функция выглядит примерно так:
Код:
[Выделить все]
(defun ba-ent-to-layer (lname lw col lt / _ba-layer)
  ;;;Функция создания слоя, если он не создан, значения аргументов думаю понятно из названия
  (defun _ba-layer (lname lw col lt /)
    (if (not (tblsearch "layer" lname))
      (progn (command "_.layer" "_new" lname "" "")
             (if lw
               (command "_.layer" "_lw" lw lname "" "")
             ) ;_ end of if
             (if col
               (command "_.layer" "_c" col lname "" "")
             ) ;_ end of if
             (if lt
               (command "_.layer" "_lt" lt lname "" "")
             ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
    (tblsearch "layer" lname)
  ) ;_ end of defun
  (_ba-layer lname lw col lt)
  (while (setq cur_ent (car (entsel "\nУкажите примитив")))
    (command "_.chprop" cur_ent "" "_la" lname "")
  ) ;_ end of while
) ;_ end of ba-ent-to-layer
Вызов функции
Код:
[Выделить все]
(ba-ent-to-layer "имя_слоя" nil nil nil)
Если для слоя нужно задать какие то параметры - то вместо nil в вызове функции ставь требуемые значения веса , цвета и типа линии.
По хорошему требуется еще проверка загруженности типа линии, если он назначается.
_Andre_ вне форума  
 
Непрочитано 03.07.2006, 07:51
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Никита В.
П.С. Обьясните также следующее: зачем в макро-лиспе вида

Код:
^C^C(defun c:dimlinearl () (command "_.dimlinear" pause pause pause "_.chprop" "_l" "" "_la" "размеры" ""));dimlinearl;

в конце программы повторяется ее название???????????
Цитата:
Сообщение от _Andre_
в данном случае можно было обойтись просто макросом:
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_last;;_la;"размеры";;
Это сделано для возможности повтора последней выполненной команды по правой кнопке мышки. Боьше плюсов я не вижу.
Krieger вне форума  
 
Автор темы   Непрочитано 03.07.2006, 12:44
#5
Никита В.

CAD Operator
 
Регистрация: 01.11.2005
Samara-Gorodok
Сообщений: 389


АААТЛИЧНО - буду разбираться............
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Никита В. вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание примитивов на слое с контролем его наличия