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

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

Как снять пикет по оси трассы

Ответ
Поиск в этой теме
Непрочитано 27.11.2011, 14:35 #1
Как снять пикет по оси трассы
Mqtaw
 
Инженер (Мостовик)
 
Москва
Регистрация: 27.11.2011
Сообщений: 19

Добрго времени суток. Доло искал и не нашел. Можно ли в автокаде сделать лисп или какой нибудь хитрый блок с атрибутом, который показывал бы расстояние от начала полилинии до указанной точки? В ручную обрезать линию и смотреть расстояние долго, а точек много...
Просмотров: 4070
 
Непрочитано 27.11.2011, 18:51
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,451


_.dist
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.11.2011, 19:24
#3
Mqtaw

Инженер (Мостовик)
 
Регистрация: 27.11.2011
Москва
Сообщений: 19


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

Последний раз редактировалось Mqtaw, 27.11.2011 в 19:30.
Mqtaw вне форума  
 
Непрочитано 27.11.2011, 19:50
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,451


Код:
[Выделить все]
 (vl-load-com)
(defun c:mdi (/ ent pt)
  (if (and (= (type (setq ent (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (car (entsel "\nУкажи полилинию <Отмена> : "))
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'ename
              ) ;_ end of =
           (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
           (= (type (setq pt (vl-catch-all-apply
                               (function
                                 (lambda () (getpoint "\nУкажи точку <Отмена> : "))
                                 ) ;_ end of function
                               ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           ) ;_ end of and
    (princ (strcat "\nРасстояние от начала полилинии до указанной точки "
                   (rtos (vlax-curve-getdistatpoint (vlax-ename->vla-object ent)
                                                    (vlax-curve-getclosestpointto ent pt)
                                                    ) ;_ end of vlax-curve-getDistAtPoint
                         ) ;_ end of rtos
                   ) ;_ end of strcat
           ) ;_ end of princ
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 28.11.2011 в 11:18.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.11.2011, 11:12
#5
Mqtaw

Инженер (Мостовик)
 
Регистрация: 27.11.2011
Москва
Сообщений: 19


После указания точки выдает: "; error: no function definition: VLAX-ENAME->VLA-OBJECT"
Mqtaw вне форума  
 
Непрочитано 28.11.2011, 11:18
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,451


Исправил #4
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.11.2011, 12:18
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Еще здесь Расстояние от начала полилинии до опеделенной точки
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.11.2011, 12:30
#8
Mqtaw

Инженер (Мостовик)
 
Регистрация: 27.11.2011
Москва
Сообщений: 19


Спасибо большое. Очень поможет в работе. А возможно указать от какой стороны линии отмерять? (к примеру в команде me (разметить) к какому концу линии ближе на эту линию укажешь, от того и размечает) И ещё, если это не сложно и не займет много времени, можно ли сделать так, чтоб при установки блока с атрибутом на нашу ось, атрибут принимал значение длины этой линии, также от начала до указанного блока... Или это уже из области фантастики?


Когда писал это сообщение, соообщение от VVA не видел. Спасибо всем) Очень помогло, буду пользоваться) А по поводу блока с атрибутом, интерес чисто теоретический, возможно ли так сделать или нет?

Еще позже... При работе с лиспом по вышеуказанной ссылке возник вопрос. В сообщении 11 у меня первую точку выноски ставит не на линии а гдето в воздухе. Пользуюсь кодом с сообщения 9. Данная команда не просит выбрать объект, и привязывается с помощью привязки nearest. В данном случае становится невозможным выбрать точку пересечения оси трассы скажем с осью опоры (может привязаться к оси опоры). Можно ли сделать чтоб как в коде, написанном "Кулик Алексей aka kpblc" надо было выбрать сначала объект, а затем точку на нем (с возможностью привязки к пересечению линий).

Последний раз редактировалось Mqtaw, 28.11.2011 в 13:54.
Mqtaw вне форума  
 
Автор темы   Непрочитано 01.12.2011, 13:23
#9
Mqtaw

Инженер (Мостовик)
 
Регистрация: 27.11.2011
Москва
Сообщений: 19


Я не стремлюсь поднять тему вверх. Просто последние вопросы я вносил как редатирование последнего сообщения. Повторюсь один раз(есть возможность что просто не увидели).
1) Можно ли сделать блок, атрибут которого будет принимить значение длины полилинии до точки вставки блока?
2.) При работе с лиспом по вышеуказанной ссылке возник вопрос. В сообщении 11 у меня первую точку выноски ставит не на линии а гдето в воздухе. Пользуюсь кодом с сообщения 9. Данная команда не просит выбрать объект, и привязывается с помощью привязки nearest. В данном случае становится невозможным выбрать точку пересечения оси трассы скажем с осью опоры (может привязаться к оси опоры). Можно ли доработать код из сообщения 9, чтоб как в коде, написанном "Кулик Алексей aka kpblc" надо было выбрать сначала объект, а затем точку на нем (с возможностью привязки к пересечению линий)
Mqtaw вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как снять пикет по оси трассы

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моменты сопротивления составных сечений. Mayday Конструкции зданий и сооружений 21 30.05.2023 17:54
Кто должен отражать конструкционную арматуру в проекте? Малявка Технология и организация строительства 341 18.11.2012 22:53
Устройство стеновых сэндвич-панелей без прогонов dimoxa Конструкции зданий и сооружений 81 08.08.2011 12:07
Civil 3D. Как создать профиль(сечение) земли по оси трассы. _Andre_ Вертикальные решения на базе AutoCAD 4 24.05.2010 08:26