русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЛАБОРАТОРНАЯ РАБОТА


Дата добавления: 2015-08-06; просмотров: 852; Нарушение авторских прав


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

высшего профессионального образования

Сибирский государственный аэрокосмический университет

Имени академика М.Ф. Решетнёва

(СибГАУ)

Факультет машиноведения и мехатроники

Кафедра Технология машиностроения

Специальность 151001 – технология машиностроения

 

 

ЛАБОРАТОРНАЯ РАБОТА

«Изменение свойств примитивов»

 

 

Разработал студент группы БМЕ 11-01:

Сапичев В. В.

 

Проверил:

Сысоев А. С.

 

Красноярск 2012

Цель работы: изучение способов формирования списков, в которых будут содержаться все данные о примитиве, и способов обработки списков для выделения, анализа и модификации полученных данных.

Задачи:изучить способы формирования списков, в которых будут содержаться все данные о примитиве, и способов обработки списков для выделения, анализа и модификации полученных данных в AutoLISP.

Ход работы:

Работая с командной строки ACAD’а и используя функции AutoLISP’а, выполним следующие действия:

1. Создадим примитив – отрезок:

Command: LINE

From point: 1,2

To point: 6,6

To point: RETURN

Command: (setq a (entget (entlast)))

2. При помощи функции entnext выбираем примитив и записываем его имя в переменную E1:

(SETQ E1 (ENTNEXT))

3. Поместите в переменную EL данные примитива E1 в виде структурированного списка:

(SETQ EL (ENTGET E1))

4. Расшифруйте элементы структурированного списка. Кода параметров можно просмотреть в справочной системе AutoCAD: DXF Reference -> DXF Format -> Group Codes in Numerical Order.

((-1 . <Имя объекта: 7ffff705a10>) - APP: entity name. The name changes each time a drawing is opened. It is never saved (fixed)



(0 . "LINE") - Text string indicating the entity type (fixed)

(330 . <Имя объекта: 7ffff7039f0>) - Soft-pointer handle; arbitrary soft pointers to other objects within same DXF file or drawing. Translated during INSERT and XREF operations

(5 . "219") - Entity handle; text string of up to 16 hexadecimal digits (fixed)

(100 . "AcDbEntity") - Entity handle; text string of up to 16 hexadecimal digits (fixed)

(67 . 0) - Space—that is, model or paper space (fixed)

(410 . "Model") - Строка

(8 . "СлойОтрезка") – Имя слоя

(62 . 1) – Номер цвета

(6 . "Continuous") - Имя типа линии

(370 . 25) - Lineweight enum value (AcDb::LineWeight). Stored and moved around as a 16-bit integer. Custom non-entity objects may use the full range, but entity classes only use 371-379 DXF group codes in their representation, because AutoCAD and AutoLISP both always assume a 370 group code is the entity's lineweight. This allows 370 to behave like other “common” entity fields

(100 . "AcDbLine") - Subclass data marker (with derived class name as a string). Required for all objects and entity classes that are derived from another concrete class. The subclass data marker segregates data defined by different classes in the inheritance chain for the same object.

This is in addition to the requirement for DXF names for each distinct concrete class derived from ObjectARX (see Subclass Markers)

(10 0.0 0.0 0.0) - Primary point; this is the start point of a line or text entity, center of a circle, and so on

DXF: X value of the primary point (followed by Y and Z value codes 20 and 30)

APP: 3D point (list of three reals)

(11 100.0 10.0 0.0) - Other points

DXF: X value of other points (followed by Y value codes 21-28 and Z value codes 31-38)

APP: 3D point (list of three reals)

(210 0.0 0.0 1.0)) - Extrusion direction (fixed)

DXF: X value of extrusion direction

APP: 3D extrusion direction vector

5. Выберем элемент структурированного списка – конечная точка и запишем значение в переменную EM:

(SETQ EM (ASSOC 11 EL))

6. Запишем в переменную PM значение (например, 100)

(SETQ PM 100)

7. Заменим в структурированном списке EL элемент EM на элемент PM:

(SETQ EL (SUBST

(SUBST PM (NTH 2 (ASSOC 11 EL)) ; - новый элемент, заменяем второй

; элемент списка конечной точки

; (11 100.0 50.0 0.0) на значение PM

(ASSOC 11 EL)) ; - список

(ASSOC 11 EL) ; - старый элемент

EL)) ; - список

8. Зафиксируем изменение расположения элемента в базе данных чертежа

(ENTMOD EL)

9. Создадим функцию, изменяющую длину и ориентацию выбранного примитива в соответствии с вводом пользователя.

(Defun C:MODPRIM()

(Setq EN (car (entsel)))

(setq EL (entget EN))

(setq EM (assoc 10 EL))

(setq EP (assoc 11 EL))

(setq ptA (getpoint “\Please, write new start point:”)

ptB (getpoint “\Please, write new end point:”))

(setq ptAX (car ptA)

ptAY (cadr ptA)

ptBX (car ptB)

ptBY (cadr ptB)

)

(setq EL (subst

(subst ptAX (NTH 1 EM) EM)

EM

EL)

)

(entmod EL)

(setq EL (subst

(subst ptAY (NTH 2 EM) EM)

EM

EL))

(entmod EL)

(setq EL (subst

(subst ptBX (NTH 1 EP) EP)

EP

EL))

(entmod EL)

(setq EL (subst

(subst ptBY (NTH 2 EP) EP)

EP

EL))

(entmod EL)

)

10. Создадим функцию, которая подсчитывает и возвращает количество примитивов в текущем чертеже.

(sslength E1)

11. Создадим функцию, которая удаляет все примитивы с указанного слоя.

(ssdel) ;возвращает набор SS, из которого удалили примитив E1

12. Создадим функцию переноса примитивов нужного типа в другой слой.

(DEFUN C:CNGLAY (/cmd entn ent)

(SETVAR "CMDECHO" 0)

(SETQ found NIL)

(SETQ oldlyr (STRCASE (GETSTRINO

"\n Введите старое имя слоя:"))

newlyr (STRCASE (OETSTRING

"\n Введите новое имя слоя:")))

(PRINC "\n Ведется поиск примитивов на слое")

(SETQ entn (ENTNEXT))

(WHILE (/=entn nil)

(SETQ ent (ENTGET entn))

(IF ( = (CDR (ASSOC 8 ent) oldlyr)

(PROGN

(COMMAND "CHANGE" entn""

"p" "LA" newlyr"")

(SETQ found t)))

(SETQ entn (ENTNEXT entn)))

(IF (NOT found)

(PRINC (STRCAT "\n На слое" oldlyr" нет примитивов")) )

(SETVAR "CMDECHO" 1))

Вывод:В ходе выполнения данной лабораторной работы мы изучили различные способы формирования списков, в которых будут содержаться все данные о примитиве, и способов обработки списков для выделения, анализа и модификации полученных данных в среде AutoLISP.



<== предыдущая лекция | следующая лекция ==>
Введение. | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.031 сек.