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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Распределение по слоям объектов dim.,hatch,text

LISP. Распределение по слоям объектов dim.,hatch,text

Ответ
Поиск в этой теме
Непрочитано 19.12.2006, 18:39 #1
LISP. Распределение по слоям объектов dim.,hatch,text
Суханова
 
инженер
 
с работы
Регистрация: 06.11.2006
Сообщений: 3

1. Приходится обрабатывать чужие чертежи, где объекты хаотично разбросаны по десяткам слоев. Нет ли в запасах симпатичного LISP′а, который бы отсортировал все размеры в слой DIM, тексты и мультитексты в слой ТЕХТ, цвета всех объектов возвращал в состояние bylayer ?
Предел мечтаний, если этот LISP сможет еще пакетом обработать все размерные стили, вернув в них lines и text в состояние bylayer, а «offset from origin» сделал нулевым ?
2. Задача для интеллектуалов (а я –не такая !).
Есть 3Д полилиния типа отогнутый вбок сабли, проходящая из точки X,Y, Z через 20…30 контрольных точек. Как развернуть ее на плоскость, сохранив исходные 3Д расстояния между контрольными точками ?
Заранее благодарю за исчерпывающие ответы.
Просмотров: 3810
 
Непрочитано 19.12.2006, 19:09
#2
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,754
Отправить сообщение для Огурец с помощью Skype™


1. Пользуйтесь поиском и правильно формулируйте темы.

2. Правой кнопочкой кликните в поле
В списке строчечка Quick Select
Выбирайте размеры по типу объекта
И назначайте им слой (хоть Erect)

3. Align 3D...
Огурец вне форума  
 
Непрочитано 19.12.2006, 19:38
#3
VVA

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


LISP. Распределение по слоям объектов dim.,hatch,text
VVA на форуме  
 
Непрочитано 28.08.2008, 12:50
#4
gipro

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


Поставил лисп, для распределения по слоям штриховки, размеров и текста. Вот он:
Код:
[Выделить все]
;;; Автор идеи Torino, он же Кочетков Андрей 
;;;Автоматический перенос размеров на слой "размеры" 
;;;и заливки на слой "заливка" 
;;;Просто добавь этот файл в автозагрузку 
(vl-load-com) 
(setq *OldLayer* (getvar "CLAYER")) 
(vl-cmdf "_layer" "_make" "размеры" "_color" 151 "" "") ;_Создаем слой размеры и задаем цвет 151 ... 
(vl-cmdf "_layer" "_make" "штриховка" "_color" 5 "" "") ;_Создаем слой штриховка и задаем цвет 5 
(vl-cmdf "_layer" "_make" "Текст" "_color" 6 "" "")     ;_Создаем слой текст и задаем цвет 6 
(setvar "clayer" *OldLayer*) 
(setq *OldLayer* nil) 
;;;;;;По аналогии добавить создание своего слоя 
;;; ... 
;;;;;; 
;;;;;;------------------------------------------------------------- 
(if *vlr-cmd* 
  (progn 
    (setq *vlr-cmd* nil) 
    (vlr-remove-all :vlr-command-reactor) 
    ) ;_ end of progn 
  ) ;_ end of if 
(if (not *vlr-cmd*) 
  (setq   *vlr-cmd* (vlr-command-reactor "cmd" 
          '((:vlr-commandwillstart . cmd-start) 
            (:vlr-commandended . cmd-end) 
            (:vlr-commandcancelled . cmd-end) 
            (:vlr-commandfailed . cmd-end))))) 
;;;;;;------------------------------------------------------------- 
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart) 
   (setq thecommandstart (nth 0 startcommandInfo)) 
  (if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER"))) 
  (cond 
 ;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)    
    ((wcmatch thecommandstart "DIM*")  ;_Если выполнается команда DIM* 
     (setvar "clayer" "размеры")       ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ... 
    ) 
 ;;; Конец реакции на DIM*    
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполнается команда *HATCH* 
     (setvar "clayer" "штриховка") 
    ) 
    ((wcmatch thecommandstart "*TEXT") ;_Если выполнается команда *TEXT (TEXT DTEXT) 
     (setvar "clayer" "Текст") 
    ) 
    (t nil)) 
  (princ)) 
 ;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / cmd_name) 
(setq cmd_name (strcase (car cmd))) 
(if (or 
      (wcmatch cmd_name "*HATCH*") ;_Если выполнается команда DIM* 
      (wcmatch cmd_name "DIM*")    ;_Если выполнается команда *HATCH* 
      (wcmatch cmd_name "*TEXT")   ;_Если выполнается команда *TEXT (TEXT DTEXT) 
      ) 
  (progn 
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil) 
    )) 
 (princ))
Проблема в том, что после завершения команды слой откатывается не к предыдущему использовавшемуся, как хотелось бы, а к слою, который был установлен при сохранении чертежа... Кто бы помог решить эту проблемку??
gipro вне форума  
 
Непрочитано 28.08.2008, 13:02
#5
gipro

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


Паника - последнее дело... Нашел код kpblcа из другой темы. работает отлично!
gipro вне форума  
 
Непрочитано 28.08.2008, 13:31
#6
VVA

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


Темы здесь
Автоматический перенос размеров на слой размеры. Break макро
Попасть в слой.
В теме Попасть в слой. была затронута очень интересная фишка temporary override keys
__________________
Как использовать код на Лиспе читаем здесь
VVA на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Распределение по слоям объектов dim.,hatch,text

Размещение рекламы