Подпись горизонталей (разворот текста)

Автор Тема: Подпись горизонталей (разворот текста)  (Прочитано 8715 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Как я уже ранее говорил, я не не большой спец по программированию. Но, в связи со спецификой моей работы, приходится облегчать себе работу. Что-то получается, что-то нет. Написал лисп для подписи горизонталей (линии рельефа на топографических планах). В чем суть: 1.имеется предварительно созданный чертеж, содержащий горизонтали (полилинии на различных уровнях); поверхность из 3dFace. Необходимо в указываемом месте на горизонтали подписать её уровень. Подпись должна быть соориентирована верхом в сторону повышения рельефа. Алгоритм работы написанного лиспа: 1.Указываем точку на горизонтали, в этой точке вдоль горизонтали вставляется текст (уровень выбранной линии), далее перпендикулярно к выбранной горизонтали определяются две точки слева и справа, если отметка (уровень) второй точки больше отметки первой точки, то надпись разворачивается на 180°. Но это не всегда срабатывает. Не могу понять  в чём загвоздка. Прошу помощи. У меня AC2007.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Но это не всегда срабатывает.
Что именно не всегда срабатывает?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Не срабатывает разворот текста в нужную сторону, хотя отметки точек определяются правильно. Т.е. я определяю две точки (на чертеже они обозначены окружностями, точка слева от горизонтали кружком  диаметром 1мм, точка справа - кружком 2мм), далее определяются их отметки и, если отметка точки справа больше, текст подписи разворачивается на 180°. Вот этот разворот не всегда срабатывает.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
в Civil'е это всё реализовано...

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Ну, велосипед почему-то до сих пор изобретают.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
У меня AC2007.
Увы, но в такой древней версии я проверить не могу, а в последних версиях код не работает вообще.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Увы, но в такой древней версии я проверить не могу, а в последних версиях код не работает вообще.
Странно. У меня в AC2018 этот лисп запускается.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот такой протокол в AutoCAD 2021:

Код - INI [Выбрать]
  1. Command: LLL
  2. _.lweight
  3. Current lineweight: BYLAYER
  4. Enter default lineweight for new objects or [?]: bylayer
  5. Command: LLL
  6. Unknown command "LLL".  Press F1 for help.
  7. Command: _.-layer
  8. Current layer:  "0"
  9. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _OFF
  10. Enter name list of layer(s) to turn off or <select objects>: ИИ_ТРИАНГУЛЯЦИЯ_025 Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]:
  11. Command: _osnap Enter list of object snap modes: _none
  12. Command: Укажите горизонталь >_-LAYER
  13. Current layer:  "0"
  14. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _ON
  15. Enter name list of layer(s) to turn on: ИИ_ТРИАНГУЛЯЦИЯ_025 Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _Y
  16. Invalid option keyword.
  17. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _.zoom
  18. Invalid option keyword.
  19. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _-LAYER
  20. Invalid option keyword.
  21. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _.zoom
  22. Invalid option keyword.
  23. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _-LAYER
  24. Invalid option keyword.
  25. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _.zoom
  26. Invalid option keyword.
  27. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _-LAYER
  28. Invalid option keyword.
  29. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _.zoom
  30. Invalid option keyword.
  31. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: _line
  32. Invalid option keyword.
  33. Application ERROR: Invalid type sent as command input
  34. Application ERROR: Invalid type sent as command input
  35. Application ERROR: Invalid type sent as command input
  36. Укажите горизонталь >
  37. Укажите горизонталь >*Cancel*
  38. ; error: Function cancelled
  39. Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: *Cancel*
  40.  
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Вот такой протокол в AutoCAD 2021:
Я не знаю, почему у вас не запускается на AC2021, я проверял на 2007, 2016, 2018.
А проблему я решил. Не надо было делать сравнение двух точек, достаточно сравнить отметку доп.точки с одной стороны горизонтали с уровнем самой горизонтали и всё получилось!

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
я проверял на 2007, 2016, 2018.
Только что проверил оба лиспа (lll.lsp и 2L.lsp) на AC2021. Оба запускаются, правильно работает 2L.lsp. Естественно неправильный выход по клавише esc, но это не важно, у меня этот лисп будет фрагментом большого кода, где эта ситуация решается.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
В обеих программах в первых же строках ошибка. Вместо 
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-cmdf "_.lweight" "bylayer" "")
должно быть:
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-cmdf "_.lweight" "_bylayer")
Да и вообще это системная переменная - её нужно устанавливать при помощи функции (setvar)
Код - Auto/Visual Lisp [Выбрать]
  1. (setvar "CELWEIGHT" -1)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
обеих программах в первых же строках ошибка. Вместо 
Спасибо!