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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > entmake, как создать призму (autolisp entmake)?

entmake, как создать призму (autolisp entmake)?

Ответ
Поиск в этой теме
Непрочитано 24.01.2011, 13:26 #1
entmake, как создать призму (autolisp entmake)?
baaba
 
архитектор
 
Москва
Регистрация: 07.07.2007
Сообщений: 644

Требуется создать призму через (entmake):
основание призмы - треугольник, верхняя поверхность призмы - с произвольным наклоном (прилагаю файлик и картинку). Покажите пример, как создать такую призму коммандой entmake. Перерыл весь help по автолиспу, который имею, гуглил, нашёл вот такой пример:

Код:
[Выделить все]
;; http://www.theswamp.org/index.php?topic=4814.0
(entmake (list (cons 0 "SOLID") ;***
               (cons 6 "BYLAYER")
               (cons 8 "0")
               (cons 10 (list 0.0 0.0 0.0)) ;***
               (cons 11 (list 1.0 0.0 0.0)) ;***
               (cons 12 (list 0.0 1.0 0.0)) ;***
               (cons 13 (list 1.0 1.0 0.0)) ;***
               (cons 39 0.0)
               (cons 62 256)
               (cons 210 (list 0.0 0.0 1.0))))
Но переделать его под свой случай пока не получается
Есть какой то мануал по entmake, dxf кодам? С примерами?
В принципе, при помощи (command) я бы мог создать регион, выдаваить его _.extrude, и затем сделать _.slice через три вершины и запихать это в одну функцию (конечно мысль). Но это слишком громоздко.
Заранее благодарю за ответ!

Миниатюры
Нажмите на изображение для увеличения
Название: 23d45w.png
Просмотров: 105
Размер:	6.4 Кб
ID:	52211  

Вложения
Тип файла: dwg
DWG 2000
Drawing3.dwg (29.7 Кб, 1541 просмотров)

Просмотров: 5608
 
Непрочитано 24.01.2011, 13:33
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от baaba Посмотреть сообщение
В принципе, при помощи (command) я бы мог создать регион, выдаваить его _.extrude, и затем сделать _.slice через три вершины и запихать это в одну функцию (конечно мысль). Но это слишком громоздко.
Практически все делают так-же, только через VLA - создавать тело через DXF - гемор и это будет действительно "громоздко".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.01.2011, 18:21
#3
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Написал с использованием _.command , костыльно конечно.
Код:
[Выделить все]
(defun mksol (ptlst) ;Draw ptism by three points
	(command "_.PLINE")
	(mapcar 'command (mapcar '(lambda (x) (cons (car x) (list (cadr x)))) ptlst))
	(command "close")
	(command "_.region" "l" "")
	(command "_.extrude" "l" "" 7400 "")
	(command "_.slice" "l" "" (car ptlst) (cadr ptlst) (caddr ptlst)
		(cons (car (car ptlst)) (list (cadr (car ptlst))))))
Модифицировал программу: http://elpanov.com/index.php?id=6 под свои нужды. Теперь получается не поверхность из 3dface а солиды. Далее можно складывать коммандой union и вычислять объём. Подозреваю что решение уже было готовое, просто я не нашёл
Конечно надо отключать привязки вручную, это я пока не исправил. Ну и адаптация под русскоязычную версию не произведена. Но если кому то нужно..
http://ompldr.org/vNzRyZA
Миниатюры
Нажмите на изображение для увеличения
Название: 24012011_01.png
Просмотров: 133
Размер:	12.1 Кб
ID:	52236  Нажмите на изображение для увеличения
Название: 24012011_02.png
Просмотров: 115
Размер:	15.5 Кб
ID:	52237  

Последний раз редактировалось baaba, 24.01.2011 в 18:23. Причина: ошибки оформления
baaba вне форума  
 
Непрочитано 24.01.2011, 23:32
#4
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от baaba Посмотреть сообщение
Далее можно складывать коммандой union и вычислять объём.
Не совсем понял, итогом задачи было вычисление объема? Можно воспользоваться формулами вычисления объема усеченной наклонной призмы и вообще ничего не создавать.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 25.01.2011, 12:40
#5
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Цитата:
Не совсем понял, итогом задачи было вычисление объема? Можно воспользоваться формулами вычисления объема усеченной наклонной призмы и вообще ничего не создавать.
Нет, не вычисление объёма. Моделирование ландшафтных элементов: дамб, откосов, кавальеров грунта. И как побочный результат - вычисление объёма (всё равно будет картограмма земляных масс).
Можно ссылочку на формулы вычисления объёма, которые имелись ввиду?

Получилось вот так:
Код:
[Выделить все]
(defun c:mkprism (/ ptlst)
	(command "_.UNDO" "_begin") ; Begin command group
	(setq ptlst (gtpnt))
	(setq old_osnap (getvar "OSMODE")) ; Save current osnap status
	(setvar "OSMODE" 0) ;  Turn off osnap when drawing
	(mksol ptlst) ; Draw prism
	(setvar "OSMODE" old_osnap) ; Turn on osnap when finished
	(command "_.UNDO" "_end") ; End command group
)

(defun gtpnt () (list
	(getpoint "\n Enter first point")
	(getpoint "\n Enter second point")
	(getpoint "\n Enter third point")))

(defun mksol (ptlst) ;Draw ptism by three points
	(command "_.PLINE")
	(mapcar 'command (mapcar '(lambda (x) (cons (car x) (list (cadr x)))) ptlst))
	(command "close")
	(command "_.region" "l" "")
	(command "_.extrude" "l" "" 7400 "")
	(command "_.slice" "l" "" (car ptlst) (cadr ptlst) (caddr ptlst)
		(cons (car (car ptlst)) (list (cadr (car ptlst))))))

(princ "\n You should type \"MKPRISM\"!") (princ)

Последний раз редактировалось baaba, 25.01.2011 в 12:42. Причина: внесение дополнений
baaba вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > entmake, как создать призму (autolisp entmake)?

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

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