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

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

Простановка направлений и значений отклонений

Ответ
Поиск в этой теме
Непрочитано 20.08.2009, 08:49
Простановка направлений и значений отклонений
G-RAV
 
Геодезист
 
г.Новосибирск
Регистрация: 16.08.2009
Сообщений: 86

Ещё одна моя программулина - вам на суд! Суть, которой в следующем:
Существует массив из окружностей (проектное положение свай), расположенных друг от друга на метр и дальше. После (геодезической) съемки (на рисунке ввиде точек) необходимо указать направление и значение (в см) отклонений...Вот код:
Код:
[Выделить все]
 
(defun C:deflection ( / scale XY_pr Ygeod1 Xgeod1 XY_pol Ygeod2 Xgeod2 Xr Yr)
(setq
    old_clayer (getvar "clayer")
    old_attdia (getvar "attdia")
    old_attreq (getvar "attreq")
    old_osmode (getvar "osmode")
    old_cmdecho (getvar "cmdecho")
  ) ;_ end of setq
 
(setvar "attdia" 0)
(setvar "attreq" 1)
(setvar "osmode" 0)
(setvar "cmdecho" 0)
;Установка текущего слоя
(command "_.layer" "_m" "отклонения" "")
;Установка размеров стрелок и текста в соответствии с масштабом
(setq scale (getstring"\nВведите знаменатель масштаба [100/200/300/400/500] <100>:"))
;Привязка к окружности (проект)
(command "_osnap" "_cen")
(setq XY_pr(getpoint "\nУкажите проектную точку "))
(while (/= XY_pr nil)
 
(setq Ygeod1(car XY_pr))  ;Y - проект
(setq Xgeod1(cadr XY_pr)) ;Х - проект
 
;Привязка к точке (факт)  
(command "_osnap" "_nod")
(setq XY_pol(getpoint "\nУкажите точку, полученную по результатам тахеометрической съемки"))
(setq Ygeod2(car XY_pol))  ;Y - факт
(setq Xgeod2(cadr XY_pol)) ;Х - факт
(setq Xr(rtos (abs(* 100(- (car XY_pr) (car XY_pol))))2 0))  ; |Хпроект-Хфакт| в см
(if (= Xr "0") (setq Xr "1"))
(setq Yr(rtos (abs(* 100(- (cadr XY_pr) (cadr XY_pol))))2 0)); |Yпроект-Yфакт| в см
(if (= Yr "0") (setq Yr "1")) 
(setq razmer (/(* 0.36 (atoi scale))100));Коофициет масштаба блока
(command "_osnap" "_non");Отключение привязки
 
  (cond ((< Ygeod1 Ygeod2) 
 (command"_insert" "arrow_X+" XY_pr razmer razmer 0 Xr ""))
   ((> Ygeod1 Ygeod2) 
 (command"_insert" "arrow_X-" XY_pr razmer razmer 0 Xr ""))
 )
  (cond ((< Xgeod1 Xgeod2) 
 (command"_insert" "arrow_Y+" XY_pr razmer razmer 0 Yr ""))
   ((> Xgeod1 Xgeod2) 
 (command"_insert" "arrow_Y-" XY_pr razmer razmer 0 Yr ""))
 )
 
(command "_osnap" "_cen")
(setq XY_pr(getpoint "\nУкажите проектную точку "))
 
    )
(setvar "clayer" old_clayer)
(setvar "attdia" old_attdia)
(setvar "attreq" old_attreq)
(setvar "osmode" old_osmode)
(setvar "cmdecho" old_cmdecho)
) ;_ end of defun
Выкладываю рисунок, где лучше этот код испытывать..
Вопрос: А реально ли сделать так, чтобы при выделении всего массива сразу проставлялись все отклонения???

Вложения
Тип файла: dwg
DWG 2004
отклонения.dwg (137.9 Кб, 1026 просмотров)

Просмотров: 5748
 
Автор темы   Непрочитано 26.08.2009, 12:54
#21
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Victor Посмотреть сообщение
дорогу укажи
(command "_insert" "C:\\EXL\\moi_blok" .....
Дорога прописана в настройках -- > путь к вспомогательным файлам.
G-RAV вне форума  
 
Автор темы   Непрочитано 11.06.2010, 09:25
#22
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


2 Кулик Алексей aka kpblc
Доброго времени суток, Вам и Всем!
Помогите, пожалуйста разобраться с вашей функцией.... В частности, хотелось бы наконец то разобраться, как работает function в тандеме с lambda.. Все никак не могу уяснить для себя... Вот сама функция:
Код:
[Выделить все]
(defun	fun_get-closest-block (point block-lst)		;создается пользовательская функция с 2-мя локальными переменными point и block-lst
					
   (setq point (cdr (assoc 10 (entget point))))		;переменной point присваивается значение координаты выбранного примитива
; вот с этого момента мозг уже закипает, хотя, наверное, все просто :)					
   (car				; выбирается первый элемент списка (для чего?)						
     (vl-sort block-lst		; список block-lst (опять таки, мы же ему ничего не присваивали??) сортируется по возрастанию, т.к. "<"
	      (function		; а вот здесь вообще полный ступор, если я правильно понимаю, то function служит для немедленного выполнения 
		(lambda	(a b)	; временной (одноразовой) функции lambda с врем-ми переменными a и b
			  
			  (< (distance point (cdr (assoc 10 (entget a)))) ; список сортируется по расстоянию между point и (cdr (assoc 10 (entget a)))
			     (distance point (cdr (assoc 10 (entget b)))) ; и следующему расстоянию между point и (cdr (assoc 10 (entget b)))
			  ) ;_ end of <
			) ;_ end of lambda
	      ) ;_ end of function
     ) ;_ end of vl-sort
   ) ;_ end of car
 ) ;_ end of defun
если есть такая возможность, распишите как можно детальнее работу данной функции и всех ее компонентов....
G-RAV вне форума  
 
Непрочитано 11.06.2010, 12:24
#23
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Цитата:
(function ; а вот здесь вообще полный ступор, если я правильно понимаю, то function служит для немедленного выполнения
Нет, ответ найдешь здесь
CB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Простановка направлений и значений отклонений

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отладка - Окно контрольных значений Mazai Программирование 4 16.06.2008 11:47
Учет случайных отклонений длин стержней torf_83 Прочее. Архитектура и строительство 9 13.12.2006 09:45