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

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

Помогите написать лисп выводящий длину между двумя точками в число на чертеже!

Ответ
Поиск в этой теме
Непрочитано 29.12.2014, 22:32 #1
Помогите написать лисп выводящий длину между двумя точками в число на чертеже!
elektrek
 
Регистрация: 29.12.2014
Сообщений: 2

Помогите пожалуйста с лиспом! необходимо измерить расстояния между двумя точками и затем результат - расстояние, чтобы можно было вывести на чертеже! Что то вроде параллельного размера, но должно выводится: -"расстояние""м"-. Т.е. это например: -100м-, и чтобы текст (-100м-) был залит белым фоном! Заранее спасибо!
Просмотров: 3474
 
Непрочитано 29.12.2014, 22:56
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Это что, злой препод издевается?
Чем его Команда: _DIST не устраивает?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 29.12.2014, 23:31
#3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Ну да, похоже, опять сессия у будущих (или потенциальных?) инженегров
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 30.12.2014, 00:42
#4
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,208


Цитата:
Сообщение от Alan Посмотреть сообщение
_DIST
Вот спасибо! 12 лет как в Автокаде "инженегр", а про такую команду и не знал!
Nike вне форума  
 
Непрочитано 30.12.2014, 05:18
#5
vl74


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


Примечание - точность команды _DIST зависит от настроенной точности единиц чертежа.
vl74 вне форума  
 
Непрочитано 30.12.2014, 07:14
#6
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Создать стиль размера без линий и с заливкой текста.
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 30.12.2014, 07:17
#7
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,895


Для себя накидал вот такую простенькую прогу для замены стандартной команды DIST. В отличии от встроенной _dist, моя выводит длину не только между точками, но и длину отрезка или полилинии по желанию, плюс сохраняет результат в буфер обмена, откуда значение можно вставить в тот же текст на чертеже, калькулятор или exel... Правда не показывает dx, dy и dz, которые мне не нужны.

Может пригодится кому:
Код:
[Выделить все]
(defun c:di () (kr_distance))

;(kr_distance)
(defun kr_distance (/ p1 p2 dist *error*)
  (defun *error* (msg)
    (setq p1 nil dist nil p2 nil))
  (if (setq p1 (getpoint "\nНачало отрезка <выбрать отрезок или полилинию>"))
    
    (if (setq p2 (getpoint p1 "\nОкончание отрезка"))
      	(setq dist (distance p1 p2))
      );if
  
    (setq dist (vla-get-length (vlax-ename->vla-object (Kr_entsel "\nВыбери отрезок или полилинию" '("LINE" "LWPOLYLINE") nil))))
    );if

	(if dist (copyToclipboard (rtos dist  2 4)))
	(if dist (prompt (strcat "\nдлина: " (rtos dist 2 4))) (prompt (strcat "\nотмена")))
  (princ)
);defun



;
;  ! ***************************************************************************
;; !                           copyToclipboard
;; ! ***************************************************************************
;; ! Function : Copy text to clipboard
;; ! Argument : 'str'     - String
;; ! Returns  : nil
;; see http://www.theswamp.org/index.php?topic=21764.new
;; ! ****************************************************************************

(defun copyToclipboard ( text / htmlfile result)
 (setq result
        (vlax-invoke
            (vlax-get
                (vlax-get
                    (setq htmlfile (vlax-create-object "htmlfile"))
                   'ParentWindow
                )
               'ClipBoardData
            )
           'SetData
            "Text"
            text
        )
    )

    (vlax-release-object htmlfile)
    result
)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 30.12.2014, 20:46
#8
elektrek


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


Jonas спасибо огромное, чет сам не додумался Зачет сдал
elektrek вне форума  
 
Непрочитано 20.01.2015, 02:12 Krieger
#9
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


di.lsp



(defun c:di () (kr_distance))

;(kr_distance)
(defun kr_distance (/ p1 p2 dist *error*)
(defun *error* (msg)
(setq p1 nil dist nil p2 nil))
(if (setq p1 (getpoint "\nНачало отрезка <выбрать отрезок или полилинию>"))

(if (setq p2 (getpoint p1 "\nОкончание отрезка"))
(setq dist (distance p1 p2))
);if

(setq dist (vla-get-length (vlax-ename->vla-object (Kr_entsel "\nВыбери отрезок или полилинию" '("LINE" "LWPOLYLINE") nil))))
);if

(if dist (copyToclipboard (rtos dist 2 4)))
(if dist (prompt (strcat "\nдлина: " (rtos dist 2 4))) (prompt (strcat "\nотмена")))
(princ)
);defun



;
; ! ***************************************************************************
;; ! copyToclipboard
;; ! ***************************************************************************
;; ! Function : Copy text to clipboard
;; ! Argument : 'str' - String
;; ! Returns : nil
;; see http://www.theswamp.org/index.php?topic=21764.new
;; ! ****************************************************************************

(defun copyToclipboard ( text / htmlfile result)
(setq result
(vlax-invoke
(vlax-get
(vlax-get
(setq htmlfile (vlax-create-object "htmlfile"))
'ParentWindow
)
'ClipBoardData
)
'SetData
"Text"
text
)
)

(vlax-release-object htmlfile)
result
)

;|Функция Kr_entsel
*** Автор Морозов С.В. aka Krieger ***
Еденичный выбор объекта, замена функции entsel
Возвращает entity name выбранного примитива или nil, точку указки запоминает в переменной LASTPOINT
Параметры:
promt - предложение выбрать объект (string)
filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)

Примеры:
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
(Kr_entsel "\nВыберите объекты" nil nil)
(setq aa nil) (Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))

|;

(defun Kr_entsel (promt filter entlist / key n newentlist ent_point promt)

(setq key T n 0 newentlist nil)
(if (eq (type entlist) 'PICKSET)
(progn
(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
(setq entlist newentlist)
);progn
);if
(while key
(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
(if (or (eq (type ent_point) 'LIST) (not ent_point))
(if ent_point
(if (member (setq ent (car ent_point)) entlist)
(princ "\nПримитив уже выбран")
(if filter
(if (not (member (cdr (assoc 0 (entget ent))) filter))
(progn (setq str "\nНе верный выбор, выберите: ")
(princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
);progn
(setq key nil)
);if
(setq key nil)
);if
);if
(setq key T)
);if
(setq key nil)
);if
(setq key nil)
);if
);while
(if (eq (type ent_point) 'LIST)
(progn (setvar "LASTPOINT" (cadr ent_point)) ent)
ent_point
);if
);defun



Спасибо, огромное.
Вложения
Тип файла: lsp di.lsp (3.3 Кб, 84 просмотров)
__________________
tc71
perpetule вне форума  
 
Непрочитано 20.01.2015, 06:17
#10
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,895


Точно. Забыл её воткнуть.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите написать лисп выводящий длину между двумя точками в число на чертеже!

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Интерполяция отметок вершин полилинии между двумя заданными точками Кочетков Андрей Программирование 7 22.07.2019 20:14
Измерить расстояние между двумя точками в ЛИСТЕ, привязываясь к объектам в МОДЕЛИ Кочетков Андрей AutoCAD 9 12.06.2009 22:52
Интерполяция между двумя точками postbudka Программирование 27 21.05.2009 10:00