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

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

Нужен лисп, рисующий линию заданной длины

Ответ
Поиск в этой теме
Непрочитано 19.06.2006, 11:37 #1
Нужен лисп, рисующий линию заданной длины
ВоваН
 
Дороги, Конструкции, Тоннели
 
Сочи
Регистрация: 20.05.2004
Сообщений: 102

Есть:
Дуга

Надо:
Взять длину дуги (arclenght), и нарисовать прямую этой длиной.
(желательно от позиции курсора вправо).

Спасибо
Просмотров: 1887
 
Непрочитано 19.06.2006, 11:56
#2
Alan

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


Необходимо поиском найти "длина дуги" Например, здесь http://www.autocad.ru/cgi-bin/f1/board.cgi?t=22109QX
Далее уже, построить "прямую этой длиной" дело вкуса.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 19.06.2006, 12:15
#3
Кулик Алексей aka kpblc
Moderator

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


Втупую:
Код:
[Выделить все]
(defun c:drlinearc (/ ent pt adoc)
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark adoc)
  (if (and (setq ent (entsel))
	   (= (cdr (assoc 0 (entget (car ent)))) "ARC")
	   ) ;_ end of and
    (if	(setq pt (getpoint "\nУкажите точку <Выход> : "))
      (command
	"_.line"
	pt
	(list (+ (car pt) (vla-get-arclength (vlax-ename->vla-object (car ent))))
	      (cadr pt)
	      (caddr pt)
	      ) ;_ end of list
	""
	) ;_ end of command
      ) ;_ end of if
    ) ;_ end of if
  (vla-endundomark adoc)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.06.2006, 21:43
#4
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Дорогой kpblc.

Как я уже имел счастие вам неоднократно докладывать, бы есть кощунец и похабник, беспрестанно смушаюший неокрешие юные души :twisted: . Втупую надлежит делать так:
Код:
[Выделить все]
(defun c:drlinearc (/ adoc ass util pt sa) 
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (mapcar '(lambda (x y) (set x (vlax-get-property adoc y))) '(ass util)
	    '(ActiveSelectionset Utility))
  (if (> (vla-get-count ass) 0) (vla-clear ass))
  (vla-selectOnScreen ass (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0)) 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 0)) (list "*Arc")))
  (setq arc (vla-item ass 0))  
  (if (vl-catch-all-error-p (vl-catch-all-apply '(lambda ()
		(setq pt (vla-getPoint util nil "\nУкажите точку <Выход> : "))))) (exit) pt);if
  (setq sa (vlax-variant-value pt))
  (vlax-safearray-put-element sa 0 (+ (vla-get-arcLength arc) (vlax-safearray-get-element sa 0)))
  (vla-addline (vla-ObjectIDtoObject adoc (vla-get-OwnerID arc)) pt (vlax-make-variant sa))
);end
Лентяй вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп, рисующий линию заданной длины

Размещение рекламы