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

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

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

Ответ
Поиск в этой теме
Непрочитано 01.01.2019, 13:18 #1
При выборе полилинии автоматически проставлялись в углах градусы, минуты и секунды
boretskiy.a
 
геодезист
 
Луцк
Регистрация: 26.11.2010
Сообщений: 33

Всех братьев программистов, рабов LISPа, Visual Basicа и прочих языков С НОВЫМ 2019 ГОДОМ!
Если кому нибудь не очень трудно и не очень жалко поделится Лиспиком, буду молится за ВАС весь год.
А задачка заключается в том, чтобы при выборе полилинии автоматически проставлялись в углах градусы,
минуты и секунды, а также длины полилинии. Заранее благодарен и ще раз с Новым Годом!
Просмотров: 4527
 
Непрочитано 01.01.2019, 15:54
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Спасибо за поздравления. Однако, то как сформулирован вопрос...
тут масса решений может быть, от простого рисования в модели и транзитной графики,
до переопределения внешнего вида линии, а потому традиционные вопросы:
На каком языке пишите?
Что уже написали?
В чем именно трудности?
Boxa вне форума  
 
Непрочитано 01.01.2019, 16:13
#3
Семёныч


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


Цитата:
Сообщение от boretskiy.a Посмотреть сообщение
рабов LISPа, Visual Basicа и прочих языков
Нехорошо как-то. Мы не рабы. Лучше употребить хотя бы слово "энтузиастов".
Семёныч вне форума  
 
Непрочитано 01.01.2019, 18:09
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


Цитата:
При выборе полилинии автоматически проставлялись в углах градусы, минуты и секунды
углы поворота или координаты?
trir вне форума  
 
Непрочитано 01.01.2019, 18:47
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от trir Посмотреть сообщение
углы поворота или координаты?
ну если автор хочет географические координаты в узлах...)
Сергей812 вне форума  
 
Автор темы   Непрочитано 01.01.2019, 20:43
#6
boretskiy.a

геодезист
 
Регистрация: 26.11.2010
Луцк
Сообщений: 33


Есть мощный Лисп от VVA Ecoorn, дописать бы в него модуль, который в чертеже проставлял бы градусы, минуты и секунды. Пример во вложении.
Вложения
Тип файла: dwg
DWG 2000
Test.dwg (29.9 Кб, 48 просмотров)
boretskiy.a вне форума  
 
Непрочитано 01.01.2019, 21:02
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


boretskiy.a, и что вас останавливает от договоренности с VVA на доработку его программы на взаимовыгодных условиях?
Сергей812 вне форума  
 
Непрочитано 01.01.2019, 22:31
#8
1958


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


Попробуйте такой вариант.
Код:
[Выделить все]
 ;;; подпись длин сегментов полилинии и углов поворота
(defun c:77 (/)
 (setq obj  (car (entsel "Укажите полилинию >"))
       vert (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget obj)))
       n    (1- (length vert))
       s0   0
       i    0
 )
 (repeat n
  (setq p1  (nth i vert)
        p2  (nth (setq i (1+ i)) vert)
        s   (/ (distance p1 p2) 2)
        s0  (+ s0 s)
        ang (angle p1 p2)
        pt  (vlax-curve-getPointAtDist obj s0)
        s0  (+ s0 s)
  )
  (if (< i n)
   (progn (setq p3    (nth (1+ i) vert)
                ang-1 (atof (angtos (angle p2 p1) 0 8))
                ang+1 (atof (angtos (angle p2 p3) 0 8))
                angl  (vl-string-translate "d"
                                           "°"
                                           (angtos (angtof (rtos (- ang-1 ang+1) 2 16) 0) 1 3)
                      )
          )
          (entmakex (list (cons 0 "MTEXT")
                          (cons 100 "AcDbEntity")
                          (cons 100 "AcDbMText")
                          (cons 1 angl)
                          (cons 10 p2)
                          (cons 40 10.0) ; размер шрифта
                          (cons 50 0)
                          (cons 62 5) ; цвет текста
                          (cons 71 5)
                          (cons 72 5)
                    )
          )
   )
  )
  (if (> (* pi 1.5) ang (* pi 0.5))
   (setq ang (+ ang pi))
  )
  (entmakex (list (cons 0 "MTEXT")
                  (cons 100 "AcDbEntity")
                  (cons 100 "AcDbMText")
                  (cons 1 (rtos (* s 2.0)))
                  (cons 10 pt)
                  (cons 40 10.0) ; размер шрифта
                  (cons 50 ang)
                  (cons 62 5) ; цвет текста
                  (cons 71 5)
                  (cons 72 5)
            )
  )
 )
)
1958 вне форума  
 
Автор темы   Непрочитано 21.01.2019, 17:56
#9
boretskiy.a

геодезист
 
Регистрация: 26.11.2010
Луцк
Сообщений: 33


Спасибо, работает. Но количество знаков после запятой аж 4. Где изменить чтобы было два знака? Если не трудно пожалуйста подскажите.
boretskiy.a вне форума  
 
Непрочитано 21.01.2019, 18:54
#10
1958


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


Цитата:
Сообщение от boretskiy.a Посмотреть сообщение
Но количество знаков после запятой аж 4. Где изменить чтобы было два знака?
Если вы про длины, то строку №47 - (cons 1 (rtos (* s 2.0))), замените на - (cons 1 (rtos (* s 2.0) 2 2)).
Вторая двойка в (cons 1 (rtos (* s 2.0) 2 2))- это количество знаков после запятой.
1958 вне форума  
 
Непрочитано 23.01.2019, 18:17
| 1 #11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от boretskiy.a Посмотреть сообщение
Где изменить чтобы было два знака? Если не трудно пожалуйста подскажите
Если не трогать код, то системные переменные LUNITS=2 и LUPREC=2
Из справки по rtos
Цитата:
If you omit the arguments, rtos uses the current settings of LUNITS and LUPREC
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.01.2019, 12:59
#12
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,508


Как вызвать команду для работы лиспа в посте 8? Что-то не получается
Рyslan вне форума  
 
Непрочитано 24.01.2019, 13:05
#13
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


(defun c:77 - жирным имя команды
Сергей812 вне форума  
 
Непрочитано 24.01.2019, 13:07
#14
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,508


набирал 77, не известная команда пишет автокад
заработало. оказывается когда копировал лисп, еще и нумерация скопировалась. почистил и команда 77 заработала. кстати, углы проставляет не по пути трассы полилинии, в внутренние. не совсем гуд

Последний раз редактировалось Рyslan, 24.01.2019 в 13:15.
Рyslan вне форума  
 
Непрочитано 24.01.2019, 19:08
#15
1958


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


Цитата:
Сообщение от Рyslan Посмотреть сообщение
кстати, углы проставляет не по пути трассы полилинии, в внутренние. не совсем гуд
О чем вы? Какие внутренние углы? Углы проставляются левые по ходу движения, что есть "гуд" согласно геодезии.
1958 вне форума  
 
Непрочитано 25.01.2019, 14:56
#16
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,508


Цитата:
Сообщение от 1958 Посмотреть сообщение
Углы проставляются левые по ходу движения, что есть "гуд" согласно геодезии.
Не знаю, у меня внутренние углы проставились. Трасса идет справа налево. Углы проставились внутренние, например угол 160 град, вместо нужных 30град
Рyslan вне форума  
 
Непрочитано 25.01.2019, 18:42
#17
1958


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


Цитата:
Сообщение от Рyslan Посмотреть сообщение
Трасса идет справа налево. Углы проставились внутренние, например угол 160 град, вместо нужных 30град
Если рассуждать по вашей классификации углов, то сумма внутреннего и внешнего углов должна составлять 360 градусов. У вас - 190 градусов.(?)
Посмотрите мой пример. Линия идет справа налево. Неправильно подписался первый угол, остальные все левые по ходу. Разбираться, в чем причина, если честно, нет никакого желания.
Вложения
Тип файла: dwg
DWG 2007
Чертеж1.dwg (42.2 Кб, 23 просмотров)
1958 вне форума  
 
Автор темы   Непрочитано 25.01.2019, 19:59
#18
boretskiy.a

геодезист
 
Регистрация: 26.11.2010
Луцк
Сообщений: 33


Очень суперуважаемый мною Владимир Азарко, рад что Вы засветились в этой теме. Ваш продукт на который я ссылаюсь в п. 6 в моей работе незаменимая вещь. Но возможен ли вариант внедрения кода от 1958, а я думаю это для Вас пустяк, в "Ecoorn" и в ексель експортировались координаты + углы и длины линий.
boretskiy.a вне форума  
 
Непрочитано 26.01.2019, 05:30
#19
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,508


Цитата:
Сообщение от 1958 Посмотреть сообщение
У вас - 190 градусов.(?)
ошибся, 180 в сумме должно быть

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от boretskiy.a Посмотреть сообщение
Но возможен ли вариант внедрения кода от 1958, а я думаю это для Вас пустяк, в "Ecoorn" и в ексель експортировались координаты + углы и длины линий.
поддержу просьбу
Рyslan вне форума  
 
Непрочитано 26.01.2019, 06:22
#20
1958


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


Цитата:
Сообщение от boretskiy.a Посмотреть сообщение
Но возможен ли вариант внедрения кода от 1958
Цитата:
Сообщение от Рyslan Посмотреть сообщение
поддержу просьбу
1958 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > При выборе полилинии автоматически проставлялись в углах градусы, минуты и секунды

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть метки точек COGO в CIVIL автоматически вдоль изогнутой полилинии Петров Евгений Программирование 9 11.02.2016 15:13
Как указать необходимые участки полилинии makxvl Программирование 5 22.03.2013 09:55
в BricsCAD при выборе объекта есть неудобство, как его отключить? Иванов Дмитрий Другие CAD системы 3 18.02.2013 23:46
выноски к полилинии gizmo_zx Программирование 6 01.03.2010 12:17
Аппроксимация 3d полилинии WeMaN Программирование 16 16.02.2010 14:51