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

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

Проектирование видеонаблюдения

Ответ
Поиск в этой теме
Непрочитано 30.07.2007, 13:38 #1
Проектирование видеонаблюдения
Ax3
 
Programming, automation, CADs, GISs. СибМИР
 
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 315

Всем привет.
Не могу поверить: столько заданий - и все в автокаде. Счастье просто, дорвался, а то полгода не касался его почти. Пришел главный инженер - и...
Вот моя проблема:
Есть трехмерный план территории (несколько зданий).
Надо развесить видеокамеры и прикинуть обзор. Я решил видеокамеры (точнее, их обзор) обозначить в виде фигуры, приведенной на рисунке
[/img]
[ATTACH]1185787601.JPG[/ATTACH]
Надо как-то найти точки пересечения линий камеры с планом.
Не знаю, с чего начать. Есть ли функции, позволяющие найти точки пересечения линии с ближайшим к ней объектом? Или ну его на фиг, да вручную extend, trim? Но что-то очень уж не хочется каждый раз, меняя угол наклона, подрезать или подрастягивать линии для двадцати камер.
Подскажите, пожалуйста, с чего начать.
Просмотров: 9363
 
Непрочитано 30.07.2007, 18:41
#2
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Это ж надо, а? Телесный угол обзора видеокамеры изображать как твердое тело и затем резать. Эх, коллега, не изобретай велосипед, для тебя сейчас ключевое слово - VideoCAD. Найди в Инете, главный инженер твой пусть заплатит 5тр и будет счастье тебе, инженеру и заказчику.
Andi55 вне форума  
 
Автор темы   Непрочитано 30.07.2007, 18:57
#3
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


понял, уже нашел. Спасибо.
Ax3 вне форума  
 
Автор темы   Непрочитано 30.07.2007, 18:59
#4
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Скачал демку - не очень-то здорово в нем план территории рисовать. Ну да ладно, может, и покатит.
Плюс ко всему - боюсь, мои труды стоят дешевле, чем видеокад...
Ax3 вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:12
#5
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Как и предполагалось, главный инженер сказал, что денег нет.
В результате появилась следующая вещь (только сильно не смейтесь).
>>Andi55
Пришлось-таки делать именно так, как ты сказал.
Проверено в AutoCAD2004_eng и AutoCAD2006_ru
[ATTACH]1185872474.rar[/ATTACH]
Все очень примитивно и до наглости тупо, зато быстро, дешево и сердито :cry: плакать или смеяться - даже не знаю.
Рекомендация: С настройками, сделанными в приложенном чертеже, все работает, а поскольку с этими самыми настройками в программе не хотелось возиться, лачше запускать приложение в приложенном (уже настроенном) чертеже.

Пока нам хватит для того, чтобы прикинуть ориентировочно.

Теперь главная проблема - как-то порезать созданные фигуры, обозначающие зону обзора видеокамеры. Чтобы они не протыкали обозреваемые объекты насквозь.

Если будут советы, рекомендации, отзывы - с удовольствием приму.

На всякий случай код (если кому лень качать):
Код:
[Выделить все]
(arxload "aclsobj.arx")
(arxload "acrender.arx")
;--------------------------------------------------------------------
(defun app_ini ()
	(if (not angleh) (setq angleh 12))
	(setq anglev (/ (* angleh 3) 4))
      (if (not dist_max) (setq dist_max 100))
	(setq angleh_ (/ (* 0.5 angleh pi) 180))
	(setq anglev_ (/ (* 0.5 anglev pi) 180))
	(setq app_ "_cam")
	(regapp app_)
      (setq xd_ (list (cons 1000 "x")));new xdata for ename1
      (setq xd_ (list (cons app_ xd_))) 
      (setq xd_ (cons -3 xd_))
)
;--------------------------------------------------------------------
(defun	c:cam ( / ss_ app_ einf_)
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(setq pt0 (getpoint "\nУкажите точку вставки камеры"))
	(setq angleh (getreal "\nВведите горизонтальный угол обзора камеры: "))
	(setq dist_max (getreal "\nВведите максимальную дальность обзора: "))
	(app_ini)
	(setq x dist_max)
	(setq y (* dist_max (/ (sin angleh_) (cos angleh_))))
	(setq z (* dist_max (/ (sin anglev_) (cos anglev_))))
	(setq osnap_ (getvar 'osmode))
	(setvar 'osmode 0)
	(vl-cmdf "_ucs" "_move" pt0)
	(setq ss_ (ssadd))
	(vl-cmdf "_3dpoly" (list x y z) (list 0 0 0) (list x y (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x (- y) z) (list 0 0 0) (list x (- y) (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x y z) (list 0 0 0) (list x (- y) z) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x y (- z)) (list 0 0 0) (list x (- y) (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(setq rangh (getreal "\nВведите угол поворота камеры (относительно оси x мировой с.к. в гор. плоскости): "))
	(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangh)
	(setq rangv (getreal "\nВведите угол наклона камеры (относительно оси x мировой с.к. в верт. плоскости): "))
	(vl-cmdf "_ucs" "_new" "_zaxis" (list 0 0 0) (list 0 -1 0))
	(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangv)
	(vl-cmdf "_ucs" "_restore" "lastucs")
	(setvar 'osmode osnap_)
	(c:rmat "A" "green glass" ss_)
	(c:render)
)
;(vlax-add-cmd app_cmd_name 'app_func (strcat app_cmd_name "_loc") 1)
(defun	c:rch ( / ss_ kwd_)
	(setq ss_ (ssget '((-3 ("_cam")))))
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(setq pt0 (getpoint "\nУкажите точку вставки камеры (уж извините, не успел сделать ее автоопределение :-(): "))
	(vl-cmdf "_ucs" "_move" pt0)
	(setq kwd_ "Y")
	(while (= kwd_ "Y")
		(progn
		(setq rangh (getreal "\nВведите угол поворота камеры (на сколько градусов повернуть относительно оси x мировой с.к. в гор. плоскости): "))
		(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangh)
		(c:render)
		(initget 1 "Y N")
		(setq kwd_ (getkword "\nПродолжить (Y/N)?<N>:"))
		)
	)
	(vl-cmdf "_ucs" "_restore" "lastucs")
)
(defun	c:rcv ( / ss_ kwd_)
	(setq ss_ (ssget '((-3 ("_cam")))))
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(vl-cmdf "_ucs" "_new" "_zaxis" (list 0 0 0) (list 0 -1 0))
	(setq pt0 (getpoint "\nУкажите точку вставки камеры (уж извините, не успел сделать ее автоопределение :-(): "))
	(vl-cmdf "_ucs" "_move" pt0)
	(setq kwd_ "Y")
	(while (= kwd_ "Y")
		(progn
		(setq rangv (getreal "\nВведите угол наклона камеры (на сколько градусов наклонить относительно оси x мировой с.к. в верт. плоскости): "))
		(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangv)
		(c:render)
		(initget 1 "Y N")
		(setq kwd_ (getkword "\nПродолжить (Y/N)?<N>:"))
		)
	)
	(vl-cmdf "_ucs" "_restore" "lastucs")
)
;--------------------------------------------------------------------
Ax3 вне форума  
 
Автор темы   Непрочитано 31.07.2007, 17:00
#6
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Пришла в голову мысль использовать (vla-intersect-with), но в этом случае придется всю зону обзора (или хотя бы ее грани) строить из, допустим, сотни линий, для каждой из которых находить точку ее пересечения с территорией или объектами на ней и по необходимости обрезать. Громозко, но при двадцати камерах может, и получится. Всего-то четыреста линий на камеру Пока больше ничего не придумывается.
Ax3 вне форума  
 
Автор темы   Непрочитано 07.08.2007, 12:34
#7
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Случилось самое неожиданное и смешное: мы стали использовать эту прогу.
:shock: :shock: :shock: :shock:

Поэтому решил ее улучшить.
[ATTACH]1186475548.rar[/ATTACH]
Краткое описание.
Особенности версии:
1. Исправлены формулы расчета зоны обзора (в версии 1.0 была грубая ошибка).
2. Улучшено удобство работы с камерами (при клике на камеру она выделяется целиком).
3. Введены данные, прикрепляемые к каждой камере и отображаемые при клике на нее.
4. Автоопределение точки вставки камеры.
5. Лучше перед запуском rch, rcv предварительно выделять нужную камеру.
6. Пока не проработана нумерация камер.
7. Пока не введена возможность указания ориентации камеры (север, юг).
Поэтому приходится указывать углы поворота типа -172 и подобные. Неудобно.
8. В теме "error: exceeded maximum number of selection sets" на форуме dwg.ru
Кулик Алексей aka kpblc предложил вариант реактора, который планирую рассмотреть.
Ссылка на тему: http://dwg.ru/forum/viewtopic.php?p=164882#164882
9. Спецы по 3D, подскажите, какой тип объектов вместо region можно использовать,
чтобы обрезать его по границам зданий? плз! Короче, как сделать проекцию
прямоугольника на территорию и здания.
------------------------------------------------------------------
Программа протестирована в AutoCAD2006eng
------------------------------------------------------------------
Спасибо участникам форума dwg.ru:
Кулик Алексей aka kpblc
VVA
lokus
Fatty
kp+
AY
Alaspher
ShaggyDoc
за ответы на многие вопросы по ходу работы
------------------------------------------------------------------
P.S.
Пожалуйста, пишите свои отзывы и предложения, может, когда-нибудь
эта прога составит конкуренцию VideoCAD'у!
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 07.08.2007, 16:58
#8
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Версия 1.2. Исправил несколько ошибок.
Особенности версии:
1. Исправлено направление координаты х во время создания и редактирования камеры.
2. Устранены ошибки, связанные с progn (и о которых стыдно говорить )
[ATTACH]1186491526.rar[/ATTACH]
Проверено в AutoCAD2006eng.
Проверял также в русском, но там лисп почему-то ругался на неопределенность функции vlr-miscellaneous-reactor. странно...
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 07.08.2007, 18:33
#9
Netlog


 
Регистрация: 05.09.2005
Ростов на Дону
Сообщений: 71
<phrase 1=


Я подвешивал на месте видеокамеры источник света, и было сделано для разных объективов-матриц несколько заготовок с отверстиями подходящего размера, в которых свет проходил и освещал сцену только в тех местах, которые видит данная камера. Ну а потом - крути-верти картинку, обзор с камеры виден в нужных ракурсах.
Попутно получались плановые углы установки видеокамер.
Netlog вне форума  
 
Автор темы   Непрочитано 07.08.2007, 18:52
#10
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Ура!!! Спасибо, Netlog, это хорошее решение. Для меня самая главная проблема - это направление поиска, потому что в 3d я откровенно не силен. Скажи, плз, а источник света в акаде полностью прозрачен или его можно "окрасить", чтобы его лучи были видны, как лучи солнца в пыльном помещении?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 08.08.2007, 15:13
#11
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Подвесил источник света внутрь коробки, созданной из пяти region'ов, материал - "gray matte".
У меня почему-то получается такая картина:
[ATTACH]1186571719.jpg[/ATTACH]
Почему вниз светит?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 08.08.2007, 15:17
#12
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Источник света расположен в коробке (повторюсь, непрозрачной), можно посмотреть, скачав чертеж:
[ATTACH]1186571846.dwg[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 10.08.2007, 14:04
#13
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


С освещением разобрался. Оказывается, надо было выставить галочку Shadow volumes/Ray traced shadows.
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 29.08.2007, 12:10
#14
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Теперь другая проблема.
При создании или модификации источника света в акаде можно в Shadow options выставить галочку Shadow volumes/Ray traced shadows.
А вот при программном создании источника света я добился только такого варианта:
Код:
[Выделить все]
(c:light "NP" "cam" 20000 pt0 nil (list 0.0 1.0 0.0) 128 nil nil 1.0 "on" 2 ss1_)
При этом у меня получается Shadow map size 128, Shadow softness 1, выбраны shadow bounding objects, а вот параметра, который включает галочку Shadow volumes/Ray traced shadows в списке параметров c:rmat я не нашел. Неужели не предусмотрено?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 29.08.2007, 16:09
#15
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Да, можно бы позавидовать таким изысканиям, а вот мне хозяин столько времени не дает. За месяц от начала темы можно сделать было два объекта среднего пошиба в виде стадии РП листов на 25 и камер на 20-30, Заказчика ублажить да принести папику в клювике тыщ 150 безнальных рубликов, с них и зарплаточку в 15-20% поиметь и какую-никакую программочку прикупить. Жаль, объекты такие редки...
Andi55 вне форума  
 
Автор темы   Непрочитано 29.08.2007, 16:29
#16
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315



Скажем, проект мы уже давно сдали, а программу я щас делаю на добровольных началах во время ночных бессонниц Интереса ради и опыта для...
ЗЫ. И даже в отпуске не могу спать спокойно :-)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:46
#17
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Вот новая версия, номер 1.3. Благодарности все те же плюс
>Хмурый
Спасибо за подсказки в области 3д.
>AY
Спасибо за подсказки насчет фильтрации по расширенным данным.

Программа ужасно громоздкая и тормозная. В Архикаде все то же самое можно сделать в две секунды. Но надеюсь, благодаря вашим советам и отзывам удастся и дальше ее совершенствовать, потому что в акаде все-таки возможностей и удобства больше, чем в видеокаде или архикаде. Все инструкции в текстовом файле.
Вот архив:
[ATTACH]1188474370.rar[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:57
#18
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Ну и пара скриншотов.
[ATTACH]1188475054.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:58
#19
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Еще
[ATTACH]1188475105.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:59
#20
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


... и еще
[ATTACH]1188475157.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 30.08.2007, 16:30
#21
Кулик Алексей aka kpblc
Moderator

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


Советы / критику примешь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.08.2007, 16:32
#22
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Конечно. Буду только рад
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 30.08.2007, 17:20
#23
Кулик Алексей aka kpblc
Moderator

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


Ну тогда держись
О ldata: я использую код такого вида:
Код:
[Выделить все]
(defun _kpblc-ent-ldata-add (ent data-list append-data / exist_data res)
			    ;|
*    Функция внесения дополнительных данных в примитив либо словарь.
*    Параметры вызова:
*	ent		примитив, в который вносятся данные. Если примитив -
*			пространство модели, то создается глобальный словарь
*			с именем *kpblc-regname* и данные вносятся в него
*	data-list	вносимые данные
*	append-data	t - заменять полностью
*			nil -> только указанные пары (заменить либо добавить)
*    Возвращаемое значение:
*	полный список доп.данных или nil, если невозможно записать.
*    Примеры вызова:
(_kpblc-ent-ldata-add (vlax-ename->vla-object (car (entsel))) '(("block" . "data1")) t)
|;
  (if (or (eq ent *kpblc-model*)
	  (and (= (type ent) 'str)
	       (= (strcase ent) (strcase *kpblc-regname*))
	       ) ;_ end of and
	  ) ;_ end of or
    (setq ent *kpblc-regname*)
    (setq ent (_kpblc-conv-ent-to-vla ent))
    ) ;_ end of if

  (if (and (not append-data)
	   (setq exist_data (_kpblc-ent-ldata-get ent))
	   ) ;_ end of and
    (setq data-list (append data-list exist_data))
    ) ;_ end of if
  (vl-catch-all-apply '(lambda () (vlax-ldata-delete ent *kpblc-appname*)))
  (foreach item	(_kpblc-list-dublicates-remove data-list)
    (if	(not (member (car item) (mapcar 'car res)))
      (setq res (append res (list item)))
      ) ;_ end of if
    ) ;_ end of foreach
  (vlax-ldata-put ent *kpblc-appname* res)
  ) ;_ end of defun

(defun _kpblc-ent-ldata-get (ent)
                            ;|
*    Функция возвращает дополнительные данные, записанные в примитив (либо nil,
* если их нет)
*    Параметры вызова:
*	ent	указатель на примитив
*    Примеры вызова:
(_kpblc-ent-ldata-get (vlax-ename->vla-object (car (entsel))))
|;
  (if (or (eq ent *kpblc-model*)
          (and (= (type ent) 'str)
               (= (strcase ent) (strcase *kpblc-regname*))
               ) ;_ end of and
          ) ;_ end of or
    (setq ent *kpblc-regname*)
    (setq ent (_kpblc-conv-ent-to-vla ent))
    ) ;_ end of if
  (if (vlax-ldata-get ent *kpblc-appname*)
    (_kpblc-conv-list-to-lowcase
      (_kpblc-conv-list-to-pointlist
        (vlax-ldata-get ent *kpblc-appname*)
        ) ;_ end of _kpblc-conv-list-to-pointlist
      ) ;_ end of _kpblc-conv-list-to-lowcase
    ) ;_ end of if
  ) ;_ end of defun
Служебные функции не показываю.
При таком подходе ты можешь получить сразу весь список ldata, "повешенных" на примитив. Работать с таким проще, да и быстрее.
Как ускорить работу: во-первых, по максимуму уходи от использования командных методов. Например, можно заменить
Код:
[Выделить все]
(vl-cmdf "_3dpoly" (list x y z) (list x1 y1 z1) (list x1 y1 (- z1)) (list x y (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(vl-cmdf "_extrude" "_last" "" (- s_) 0)
на нечто типа:
Код:
[Выделить все]
(vl-load-com)
(or *mydoc* (setq *mydoc* (vla-get-activedocument (vlax-get-acad-object))))
(or *mymodel* (setq *mymodel* (vla-get-modelspace *mydoc*)))

(defun _3dpoly-and-extrude (pt-list depth ang / 3dpoly reg res lst)
                           ;|
*    Создание и выдавливание региона по точкам
*    Параметры вызова:
	pt-list		список 3Д-точек
	depth		глубина выдавливания. nil недопустим
	ang		угол выдавливания. nil -> 0.
|;
  (setq lst    (apply 'append pt-list)
        3dpoly (vla-add3dpoly
                 *mymodel*
                 (vlax-make-variant
                   (vlax-safearray-fill
                     (vlax-make-safearray
                       vlax-vbdouble
                       (cons 0 (1- (length lst)))
                       ) ;_ end of vlax-make-safearray
                     lst
                     ) ;_ end of vlax-safearray-fill
                   ) ;_ end of vlax-make-variant
                 ) ;_ end of vla-Add3DPoly
        ) ;_ end of setq
  (vla-put-closed 3dpoly :vlax-true)
  (setq res
         (vla-addextrudedsolid
           *mymodel*
           (setq reg (car (vlax-safearray->list
                            (vlax-variant-value
                              (vla-addregion
                                *mymodel*
                                (vlax-make-variant
                                  (vlax-safearray-fill
                                    (vlax-make-safearray
                                      vlax-vbobject
                                      '(0 . 0)
                                      ) ;_ end of vlax-make-safearray
                                    (list 3dpoly)
                                    ) ;_ end of vlax-safearray-fill
                                  ) ;_ end of vlax-make-variant
                                ) ;_ end of vla-addregion
                              ) ;_ end of vlax-variant-value
                            ) ;_ end of vlax-safearray->list
                          ) ;_ end of car
                 ) ;_ end of setq
           depth
           (cond (ang)
                 (t 0.)
                 ) ;_ end of cond
           ) ;_ end of vla-AddExtrudedSolid
        ) ;_ end of setq
  (mapcar 'vla-erase (list 3dpoly reg))
  res
  ) ;_ end of defun
Пример вызова:
Код:
[Выделить все]
(_3dpoly-and-extrude '((0. 0. 0.)(10. 5. 0.)(10. 20. 0.) (0. 20. 0.)) 150. 0.)
Примерно в таком ключе...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.08.2007, 05:44
#24
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Есть еще программка за 1круб
Проектировщик CCTV - V3.2.7
http://www.lonacomputerservices.com/CCTV/CCTVrus.html
Вряд ли участники этой ветки ею воспользуются, но кому-то еще будет интересно.
Andi55 вне форума  
 
Автор темы   Непрочитано 31.08.2007, 08:12
#25
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


>kpblc
Спасибо, учту
>Andi55
Прикольная программка, мне нравятся расчеты в ней. :-)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 22.03.2008, 15:26
#26
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Версия 1.5
Краткое описание внутри.
За глюки и проблемы автор ответственности не несет, но всеми силами старается их исправить :-)
Поэтому сообщайте, пожалуйста, обо всех проблемах, возникших при использовании программы.
Протестирована в AutoCAD 2004, 2006, 2007
Благодарности по-прежнему те же, что и выше.
Вложения
Тип файла: rar AS_`VideoServeillance`_v1.5(c)Danilov_AS_2008.03.22.rar (254.7 Кб, 137 просмотров)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 24.03.2008, 11:27
#27
Ax3

Programming, automation, CADs, GISs. СибМИР
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 315


Обнаружил, что при выделении видового порта в Layout'e программа вызывает фатальную ошибку. Будьте осторожны.

В самом начале при открытии чертежа если согласиться на "Выполнить 3dconfig", все настройки 3д будут сделаны под аппаратное ускорение и тэпэ, то есть под мощную видеокарту.
__________________
На LISPе можно мыслить!
Ax3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проектирование видеонаблюдения