(изменено: Disney, 30 июня 2009г. 10:29:40)

Тема: Геодезические координаты на мультивыноски

По просьбе Alex G.

(defun c:geo_koord_leader (/ pod_z koord y x z xyz)
  (initget "Да Нет Lf Ytn _ Y N Y N")
  (setq
    pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : ")
  )
  (while (and
       (setq koord (getpoint "\nТочка <Выход>"))
     )
    (setq
      y    (strcat "X=" (rtos (nth 0 koord) 2 3))
      x    (strcat "Y=" (rtos (nth 1 koord) 2 3))
      z    (if
      (= pod_z "Y")
       (strcat "Z=" (rtos (nth 2 koord) 2 3))
       ""
    )
    )
    (VL-cmdf "_leader" koord pause "" x y z "")
  )
)

(princ "Вызов фукции: geo_koord_leader")

Re: Геодезические координаты на мультивыноски

огромнейшее спасибо. Наконец то увидел то, что надо.
Только пришлось все же местами поменять X и Y (в математический вид) все же так привычней

Re: Геодезические координаты на мультивыноски

Насколько я понял, настройки берутся из текущего размерного стиля?
Нельзя ли чтобы настройки высоты надписей брались из переменной TEXTSIZE, а настройки точности знаков после запятой - из переменной LUPREC ?

Re: Геодезические координаты на мультивыноски

Ну нет. берется не из размерного стиля, а из СТИЛЯ МУЛЬТИВЫНОСКИ.

Re: Геодезические координаты на мультивыноски

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

(изменено: Alex, 10 марта 2010г. 05:23:32)

Re: Геодезические координаты на мультивыноски

Скажите а можно ли сделать так, что бы линя вынгоски была между координатоми?
    Х=125421
   --------
/  У=214552
/
что то типа этого.
из мульти выноски берутся только настройки стрелочки а текст с координатами всегда пишется с верху линии

Re: Геодезические координаты на мультивыноски

Alex пишет:

из мульти выноски берутся только настройки стрелочки а текст с координатами всегда пишется с верху линии

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

Геодезические координаты на мультивыноски

(defun c:geo_koord_mleader (/ pod_z koord  xyz)
(initget "Да Нет Lf Ytn _ Y N Y N")
  (setq
    pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : ")
  )
  (while (and
       (setq koord (getpoint "\nТочка <Выход>"))
     )
    (setq
      xyz    (strcat "Y=" (rtos (nth 0 koord) 2 3)"\nX=" (rtos (nth 1 koord) 2 3)(if
      (= pod_z "Y")
       (strcat "\nZ=" (rtos (nth 2 koord) 2 3))
       ""
    ))
    )
    (VL-cmdf "_mleader" koord pause  xyz "")
  )
)

(princ "Вызов фукции: geo_koord_mleader")

Re: Геодезические координаты на мультивыноски

сделай мультивыноску со своим блоком динамическим+att, блок будет показывать показывает XY (у меня еще можно дать номер точки)

Re: Геодезические координаты на мультивыноски

kma .,
сделай, это не про меня. я чайник в этом деле. измененная програмка у меня не работает, наверное потому, что я использую 2006 версию.

Re: Геодезические координаты на мультивыноски

Возможно ли ввести масштабный коэффициент в числовое значение координат? Зачастую чертежи - в миллиметрах, а подписи координат требуются в метрах.
АКАД - 2011 РУС (Civil 3D)

Re: Геодезические координаты на мультивыноски

присоединяюсь к пожеланию :!:
автор отзовись плиз :D

Re: Геодезические координаты на мультивыноски

(defun C:GKM1 nil (C:geo_koord_mleader1))
(defun c:geo_koord_mleader1 (/ pod_z koord  xyz scale) 
(initget "Да Нет Lf Ytn _ Y N Y N") 
(setq pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : "))
(or (numberp *SCALE*)(setq *SCALE* 1))
(princ "\nМасштабный коэффициент < ")(princ *SCALE*)(princ " >:")
(if (setq scale (getdist))(setq *SCALE* scale))
  (while (setq koord (getpoint "\nТочка координирования <Выход>")) 
    (setq 
      xyz   (strcat "Y=" (rtos (* *SCALE* (nth 0 koord)) 2 3)"\nX=" (rtos (* *SCALE* (nth 1 koord)) 2 3)(if 
     (= pod_z "Y") 
      (strcat "\nZ=" (rtos (* *SCALE* (nth 2 koord)) 2 3)) 
      "" 
   )) 
    ) 
    (VL-cmdf "_mleader" koord pause  xyz "") 
  ) 
) 

(princ "Вызов фукции: geo_koord_mleader1 или GKM1")

Re: Геодезические координаты на мультивыноски

Все бы ничего. Но при указании первой точки координирования как раз масштабирование применять не хотелось бы. а все  последующие точки расчитывались  бы исходя из первой исходной точки имеющую определенную координату в МСК

например имеем отрезок длинной 5000мм начало имеет X=100 Y=1000 и конец X=100 Y=1005
по вашему коду получается что отрезок имеет начало X=0.1 Y=1 и конец X=0.1 Y=6

тут наверное правильно было бы чтоб он масштабировал не систему координат а отслеживал курсор исходя от первой точки и исходя из расстояния по по осям X и Y вычислял бы уже текущую координатку

Re: Геодезические координаты на мультивыноски

Владимир Азарко,
Спасибо. Все работает именно так как нужно.
Alex G.,
если координаты про факту (конструктив вычерчен в миллиметрах)
Х= 12526
Y= 23124
Z= 52621
то при K=0.001 получается
Х= 12.526
Y= 23.124
Z= 52.621
что мне и требовалось.

Re: Геодезические координаты на мультивыноски

Немного переделал для работы с выноской.
Получилось то же что в первом посте, но с добавлением масштаба.

(defun c:GKL (/ pod_z koord  xyz scale) 
(initget "Да Нет Lf Ytn _ Y N Y N") 
(setq pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : ")) 
(or (numberp *SCALE*)(setq *SCALE* 1)) 
(princ "\nМасштабный коэффициент < ")(princ *SCALE*)(princ " >:") 
(if (setq scale (getdist))(setq *SCALE* scale)) 
  (while (setq koord (getpoint "\nТочка координирования <Выход>")) 
    (setq 
         y   (strcat "Y=" (rtos (* *SCALE* (nth 0 koord)) 2 3)) 
      x   (strcat "X=" (rtos (* *SCALE* (nth 1 koord)) 2 3)) 
      z   (if 
     (= pod_z "Y") 
      (strcat "H=" (rtos (* *SCALE* (nth 2 koord)) 2 3)) 
      "" 
   ) 
    ) 
    (VL-cmdf "_leader" koord pause "" x y z "") 
  ) 
) 

(princ "Вызов фукции: GKL")

Re: Геодезические координаты на мультивыноски

Что-то давно не заглядывал, спасибо Владимиру, что откликнулся за меня.
Тема немного подробнее развилась на DWG.ru
там и видео пример работы команды, с изменением Систем Координат, и вариант с учётом масштабного коэффициента текущего размерного стиля.

Re: Геодезические координаты на мультивыноски

Люди а не могли бы вы чуть переделать вот этот код:

(defun c:geo_koord_leader
       (/ pod_z dim_fac koord y x z xyz)
  (vl-load-com)
  (setvar "DIMZIN" 0)
  (initget "Да Нет Lf Ytn _ Y N Y N")
  (setq
    pod_z   (getkword
          "\nПодписывать Z [Да/Нет] <Нет>? : "
        )
    dim_fac (getvar 'DIMLFAC)
 
  )
  (while
    (and
      (setq koord (getpoint "\nТочка <Выход>"))
    )
     (setq
       y (strcat "\nY="
         (rtos
           (* (car koord) dim_fac)
           2
         )
     )
       x (strcat "\nX="
         (rtos (* (cadr koord) dim_fac) 2)
     )
       z (if
       (= pod_z "Y")
        (strcat
          "\nZ="
          (rtos (* (caddr koord) dim_fac) 2)
        )
        ""
     )
     )
     (VL-cmdf "_leader"
          "none"
          koord
          pause
          ""
          (strcat x y z)
          ""
     )
  )
)
(princ "Вызов фукции: geo_koord_leader")

надо чтоб по этому коду координаты писались на МУЛЬТИВЫНОСКЕ

Re: Геодезические координаты на мультивыноски

Alex G. пишет:

надо чтоб по этому коду координаты писались на МУЛЬТИВЫНОСКЕ

замени

(VL-cmdf "_leader" 
          "none" 
          koord 
          pause 
          "" 
          (strcat x y z) 
          "" 
     )

на

(VL-cmdf "_mleader" 
          "none" 
          koord 
          pause           
          (strcat x y z) 
          "" 
     )

Re: Геодезические координаты на мультивыноски

:D  :idea:  ;)
круто спасибо
Уважаемый "Disney" видел Ваши ролики со всякими примудростями в автокаде.
Обратил внимание что у вас в акаде установлена своя панелька с своими кнопами.

А где и мне поиметь Ваши все дополнения к акаду чтоб в панели были

(изменено: Scorpy, 3 августа 2012г. 15:23:43)

Re: Геодезические координаты на мультивыноски

В лиспе из поста 17 сделал замену:
(VL-cmdf "_mleader"
          "none"
          koord
          pause           
          (strcat x y z)
          ""
     )

Почему то на мультивыноске прописывается первая строка пустая, нужно заходить вручную и ее удолять. Как поправить?

Re: Геодезические координаты на мультивыноски

Всем привет,
А есть вариант с построением выноски из отрезков, а не из мультивыноски?
Спасибо!

Re: Геодезические координаты на мультивыноски

Вильдар пишет:

А есть вариант с построением выноски из отрезков, а не из мультивыноски?

Я думаю воспользовавшись Поиском ты найдёшь такие решения.
Если нет, не сложно такое и написать для практики в программировании.

Re: Геодезические координаты на мультивыноски

Приспособил вариант с мультивыноской.
Просто не хотелось зависить от стиля мультивыноски.

Re: Геодезические координаты на мультивыноски

Вильдар пишет:

Просто не хотелось зависить от стиля мультивыноски.

Я мультивыноску тоже не люблю, простая ИМХО надёжнее

Re: Геодезические координаты на мультивыноски

Здравствуйте, подскажите пожалуйста, есть вот этот код с добавлением мультивыноски, но почему то координаты х и у пишутся в одну строчку... подскажите плиз как исправить

(defun c:GKL (/ pod_z koord  xyz scale)
(initget "Да Нет Lf Ytn _ Y N Y N")
(setq pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : "))
(or (numberp *SCALE*)(setq *SCALE* 1))
(princ "\nМасштабный коэффициент < ")(princ *SCALE*)(princ " >:")
(if (setq scale (getdist))(setq *SCALE* scale))
  (while (setq koord (getpoint "\nТочка координирования <Выход>"))
    (setq
         y   (strcat "Y=" (rtos (* *SCALE* (nth 0 koord)) 2 3))
      x   (strcat "X=" (rtos (* *SCALE* (nth 1 koord)) 2 3))
      z   (if
     (= pod_z "Y")
      (strcat "H=" (rtos (* *SCALE* (nth 2 koord)) 2 3))
      ""
   )
    )
(VL-cmdf "_mleader"
          "none"
          koord
          pause           
          (strcat x y z)
          ""
     )
  )
)

(princ "Вызов фукции: GKL")