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

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

Для генплана. Простановка расстояние-промилле со стрелкой

Ответ
Поиск в этой теме
Непрочитано 25.01.2011, 15:23 #1
Для генплана. Простановка расстояние-промилле со стрелкой
Velik84
 
Генплан и транспорт
 
Регистрация: 26.11.2008
Сообщений: 214

Подскажите пожайлуста, есть ли что то наподобие такого: кликаю в чертеже в одном месте потом во втором месте - выдает посредине этих кликов стрелку (стрелка направлена в сторону второго клика)- в знаменателе этой стрелки расстояние между кликами (в метрах до 1 знака после запятой) в числители уклон в промилле (до 1 знака после запятой)?
__________________
Hi people))):crazy:
Просмотров: 3600
 
Непрочитано 25.01.2011, 15:44
#2
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Маленький лиспик здесь нужен, сейчас сделаю, если начальник не собъет с пути истинного.

Шеф пришел, легок на помине, извини.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 25.01.2011, 15:47
#3
Velik84

Генплан и транспорт
 
Регистрация: 26.11.2008
Сообщений: 214


Ничего, буду ждать..интьересно что получится))
__________________
Hi people))):crazy:
Velik84 вне форума  
 
Непрочитано 26.01.2011, 06:25
#4
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Это набросок "на скорую руку". Наверняка потребуется доработка.
Код:
[Выделить все]
(defun c:test (/ p1 p2 rasst ugol ugpov p3 p4 p5 p6 p7)
  (setq	p1    (getpoint "\nПервая точка:")
	p2    (getpoint p1 "\nВторая точка:")
	rasst (distance p1 p2)
	ugol  (angle p1 p2)
	p3    (polar p1 ugol (- (* 0.5 rasst) 20))
	p4    (polar p1 ugol (* 0.5 rasst))
	p5    (polar p1 ugol (+ (* 0.5 rasst) 10))
  ) ;_ конец setq
  (if (> (car p2) (car p1))
    (progn
      (setq p6	  (polar p3 (+ (* 0.5 pi) ugol) 2)
	    p7	  (polar p3 (+ (* 1.5 pi) ugol) 7)
	    ugpov (* ugol (/ 180 pi))
      ) ;_ конец setq
    ) ;_ конец progn
    (progn
      (setq p6	  (polar p4 (+ (* 1.5 pi) ugol) 2)
	    p7	  (polar p4 (+ (* 0.5 pi) ugol) 7)
	    ugpov (* (+ ugol pi) (/ 180 pi))
      ) ;_ конец setq
    ) ;_ конец progn
  ) ;_ конец if
  (vl-cmdf "_pline" "_non" p5 "_W" "0" "3" "_non" p4 "_w" "0" "0" "_non"
	   p3 "") ;_ конец vl-cmdf
 ;_ конец vl-cmdf
  (vl-cmdf "_text" "_non" p7 "" ugpov (rtos (* 0.001 rasst) 2 1))
  (vl-cmdf
    "_text"
    "_non"
    p6
    ""
    ugpov
    (rtos
      (* 1000 (abs (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1)))))
      2
      1
    ) ;_ конец rtos
  ) ;_ конец vl-cmdf
) ;_ конец defun
Дополнил, а то текст "вверх ногами", если указывать точки справа-налево.

Последний раз редактировалось E-degtyarev, 26.01.2011 в 10:35.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 26.01.2011, 10:54
#5
Velik84

Генплан и транспорт
 
Регистрация: 26.11.2008
Сообщений: 214


Спасибо. идея такая)) только вот не пойму берутся ли тут высотные точки чтобы подсчитать промилле правильно?
__________________
Hi people))):crazy:
Velik84 вне форума  
 
Непрочитано 26.01.2011, 11:07
#6
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
Сообщение от Velik84 Посмотреть сообщение
Спасибо. идея такая)) только вот не пойму берутся ли тут высотные точки чтобы подсчитать промилле правильно?
Извини, я машиностроитель и Вас не ошень понимайт, поясни, пожалуйста, что такое "высотные точки" ?
А проверку можешь сделать экспериментально, нарисуй уклон с известными параметрами и жмякни по концам.

PS:ИМХО я буква в букву сделал все, что в теме изложено.

Последний раз редактировалось E-degtyarev, 26.01.2011 в 11:17.
E-degtyarev вне форума  
 
Непрочитано 26.01.2011, 11:13
#7
Лиспер


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


Если задумываться о программном решении, возникает несколько вопросов:
А какая должна быть длина этой стрелки? А высота текста? А какой стиль текста использовать? А что делать, если точки разнесены по оси Z? А проставлять этот символ обязательно именно в текущей системе координат или только в мировой?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 26.01.2011, 11:20
#8
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Согласен, Лиспер, но в теме об этом ни слова не сказано. А большую КРАСНУЮ кнопку на все случаи жизни мне не сделать.
E-degtyarev вне форума  
 
Непрочитано 26.01.2011, 11:56
#9
Лиспер


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


В качестве варианта. Не знаю, все правильно там вычисляется или нет, т.к. проверял только в мировой системе координат.
С углами не заморачивался - работы накидали.
Код:
[Выделить все]
 (vl-load-com)

(defun c:test2 (/          adoc       pt_start   pt_end     blk_name
                blk_def    blk_pline  ang        blk_ref    att_lst
                )
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if
    (and (= (type
              (setq pt_start (vl-catch-all-apply
                               (function
                                 (lambda ()
                                   (getpoint "\nПервая точка <Отмена> : ")
                                   ) ;_ end of lambda
                                 ) ;_ end of function
                               ) ;_ end of vl-catch-all-apply
                    ) ;_ end of setq
              ) ;_ end of type
            'list
            ) ;_ end of =
         (= (type (setq pt_end (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (getpoint pt_start
                                               "\nВторая точка <Отмена> : "
                                               ) ;_ end of getpoint
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'list
            ) ;_ end of =
         ) ;_ end of and
     (progn
       (setq blk_name "ArrowGP")
       (if (not (tblobjname "block" blk_name))
         (progn
           (setq blk_def   (vla-add (vla-get-blocks adoc)
                                    (vlax-3d-point '(0. 0. 0.))
                                    blk_name
                                    ) ;_ end of vla-add
                 blk_pline (vla-addlightweightpolyline
                             blk_def
                             (vlax-make-variant
                               (vlax-safearray-fill
                                 (vlax-make-safearray
                                   vlax-vbdouble
                                   '(0 . 5)
                                   ) ;_ end of vlax-make-safearray
                                 '(-5. 0. 1. 0. 5. 0.)
                                 ) ;_ end of vlax-safearray-fill
                               ) ;_ end of vlax-make-variant
                             ) ;_ end of vla-addlightweightpolyline
                 ) ;_ end of setq
           (vla-setwidth blk_pline 0 0. 0.)
           (vla-setwidth blk_pline 1 1. 0.)
           (vla-addattribute
             blk_def
             2.
             acattributemodenormal
             "Длина"
             (vlax-3d-point '(0. -2. 0.))
             "Length"
             ""
             ) ;_ end of vla-addattribute
           (vla-addattribute
             blk_def
             2.
             acattributemodenormal
             "Промилле"
             (vlax-3d-point '(0. 2. 0.))
             "Promill"
             ""
             ) ;_ end of vla-addattribute
           (vlax-for ent blk_def
             (foreach prop '(("color" . 0)
                             ("lineweight" . -2)
                             ("linetype" . "ByBlock")
                             )
               (vl-catch-all-apply
                 (function
                   (lambda ()
                     (vlax-put-property ent (car prop) (cdr prop))
                     ) ;_ end of lambda
                   ) ;_ end of function
                 ) ;_ end of vl-catch-all-apply
               ) ;_ end of foreach
             ) ;_ end of vlax-for
           ) ;_ end of progn
         ) ;_ end of if
       (setq blk_ref (vla-insertblock
                       (vla-get-modelspace adoc)
                       (vlax-3d-point
                         (mapcar (function (lambda (x y) (* (+ x y) 0.5)))
                                 pt_start
                                 pt_end
                                 ) ;_ end of mapcar
                         ) ;_ end of vlax-3d-point
                       blk_name
                       1.
                       1.
                       1.
                       (angle pt_start pt_end)
                       ) ;_ end of vla-InsertBlock
             ang     (vla-get-rotation blk_ref)
             att_lst (mapcar
                       (function
                         (lambda (x)
                           (vla-put-rotation x 0.)
                           (cons (vla-get-tagstring x) x)
                           ) ;_ end of lambda
                         ) ;_ end of function
                       (vlax-safearray->list
                         (vlax-variant-value
                           (vla-getattributes blk_ref)
                           ) ;_ end of vlax-variant-value
                         ) ;_ end of vlax-safearray->list
                       ) ;_ end of mapcar
             ) ;_ end of setq
       (vla-put-textstring
         (cdr (assoc "Promill" att_lst))
         (rtos (* (distance pt_start pt_end) 1e-3) 2 1)
         ) ;_ end of vla-put-TextString
       (vla-put-textstring
         (cdr (assoc "Length" att_lst))
         (rtos (* 1e3
                  (abs (/ (- (cadr pt_end) (cadr pt_start))
                          (- (car pt_end) (car pt_start))
                          ) ;_ end of /
                       ) ;_ end of abs
                  ) ;_ end of *
               ) ;_ end of rtos
         ) ;_ end of vla-put-TextString
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 26.01.2011, 12:07
#10
Карел

инженер по генплану
 
Регистрация: 19.10.2007
Карелия - это в России :)
Сообщений: 214


Может это нужно http://dwg.ru/dnl/6362
__________________
генпланист со стажем
Карел вне форума  
 
Непрочитано 28.01.2011, 04:12
#11
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


У меня есть программа SLOPE, сделанная довольно давно, еще когда я работал проектировшиком.
Что она делает, думаю ясно из картинки.
Загрузить комплекс KAI можно с сайта.
Миниатюры
Нажмите на изображение для увеличения
Название: SLOPE.jpg
Просмотров: 180
Размер:	41.6 Кб
ID:	52509  
__________________
Лень - великий двигатель прогресса!

Последний раз редактировалось KAI, 28.01.2011 в 04:14. Причина: Забыл строчку
KAI вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Для генплана. Простановка расстояние-промилле со стрелкой

Реклама i