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

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

Как получить площадь примитива?

Ответ
Поиск в этой теме
Непрочитано 04.04.2005, 10:45 #1
Как получить площадь примитива?
Valery
 
Сообщений: n/a

Где хранятся периметр и площадь замкнутой линии, которые можно посмотреть по кoманде LIST? В графической базе примитива их нет в явном виде, но ведь Автокад их выводит на экран! Как программно получить эти данные?
Просмотров: 4756
 
Непрочитано 04.04.2005, 10:57
#2
MIP

инженер
 
Регистрация: 13.12.2004
Минск
Сообщений: 496


В 2005 Автокаде есть специальные поля, вставляемые в однострочный и многострочный текст, через эти поля можно вывести практически всю информацию об объекте включая и площадь замкнутого контура. Для более ранних версий ничего подсказать не могу, эти данные прийдется извлекать специально написанной утилитой.
MIP вне форума  
 
Непрочитано 04.04.2005, 11:20
#3
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Если лиспом, то можно так:
Код:
[Выделить все]
(defun pldata (/ pl plobj perimeter area)
  (setq pl (car (entsel "Pick polyline: ")))
  (setq plobj (vlax-ename->vla-object pl))
  (setq perimeter (vla-get-length plobj))
  (terpri)
  (princ (strcat "Perimeter is " (rtos perimeter)))
  (setq area (vla-get-area plobj))
  (terpri)
  (princ (strcat "Area is " (rtos area)))
(princ)
  )
Torino вне форума  
 
Непрочитано 04.04.2005, 14:00
#4
Valery


 
Сообщений: n/a


Хорошо, поставлю вопрос немного по-другому. В командной строке выводится
Area = 9245.3308, Perimeter = 473.7857
Как из этих данных извлечь число 9245.3308 и привязать его к переменной?
 
 
Непрочитано 04.04.2005, 14:16
#5
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Можно объявить переменные *area* & *perimeter*, как глобальные.
Тогда доступ к ним будет !*area* & !*perimeter* соответственно (из командной строки)
Код:
[Выделить все]
(defun pldata (/ pl plobj)
  (setq pl (car (entsel "Pick polyline: ")))
  (setq plobj (vlax-ename->vla-object pl))
  (setq *perimeter* (vla-get-length plobj))
  (terpri)
  (princ (strcat "Perimeter is " (rtos *perimeter*)))
  (setq *area* (vla-get-area plobj))
  (terpri)
  (princ (strcat "Area is " (rtos *area*)))
(princ)
  )
Torino вне форума  
 
Непрочитано 07.04.2005, 14:50
#6
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


А я себе такую штуку написал.

Код:
[Выделить все]
(defun c:wo()
(setq dunit (getstring "\Enter youf drawing units: mm/cm/m  <>"))
;;(prompt "\Enter youf drawing units: mm/cm/m  <")(princ runit)(prompt "> ")
(setq runit (getstring "\Enter necessary result units: mm/cm/m  <>:"))
(setq precision (getint "\Enter precision of number: "))
)

(defun c:wa()
(cond
	((= dunit "mm") 
	(setq d 0.001)
	)
	((= dunit "cm") 
	(setq d 0.01)
	)
	((= dunit "m") 
	(setq d 1)
	)
);cond

(cond
	((= runit "mm") 
	(setq r 0.001)
	)
	((= runit "cm") 
	(setq r 0.01)
	)
	((= runit "m") 
	(setq r 1)
	)
);cond

(setq scale (/ r d))

(setq inspointext (getpoint "\Pick an insertion point of string: "))
(command "-boundary" "a" "o" "r" "" inspointext "")
(command "area" "e" "l")
(command "erase" "l" "")
(command "cmdecho" "1" "")
(setq areareal (getvar "area"))

(setq aaa (/(/ areareal scale)scale))
(setq aaaa (rtos aaa 2 precision))
(command "text" inspointext pause pause aaaa)
(setq aaa nil)
(setq aaaa nil)
(setq areareal nil)
);defun c:wa
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 07.04.2005, 15:16
#7
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


После выполнения команды _Area
площадь сохраняется в системной переменной AREA
Pilot вне форума  
 
Непрочитано 07.04.2005, 18:26
#8
Valery


 
Сообщений: n/a


После выполнения команды _Area
площадь сохраняется в системной переменной AREA
--------------------------------------------------
Вот ответ, достойный Гуру! Очень выручил! Спасибо.
 
 
Непрочитано 09.05.2005, 00:51
#9
bdfy


 
Регистрация: 30.04.2005
Сообщений: 141


Нужны вот такие лиспики:
1. Вычислить площадь области задаваемой точками ( как команда area делает ) и вывести его где-нибудь рядом с заданной таким образом областью в метрах кв. с заданной точностью.
2. Я выделаю несколько отрезков, а автокад проставляет их размеры линейные в метрах , вычисляет периметр ( складывает все отрезки ) и результат тоже выводит где-нибудь недалеко на рисунке.

Вроде несложно , похожие лиспы есть на форуме, но не смыслю я пока в них ничего
помогите кто еще не празднует ...
bdfy вне форума  
 
Непрочитано 10.05.2005, 11:13
#10
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


Полезно после выполнения команды получить список площадей выбранных объектов в порядке их выбора, даже в ед. чертежа. :wink:
Это удобно для дальнейшей обработки в Екселе и для составления спецификаций в комплектах КМ и КМД
Georg вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как получить площадь примитива?

Реклама i