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

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

Ссылки

Ответ
Поиск в этой теме
Непрочитано 22.11.2006, 21:50 #1
Ссылки
kminas
 
Регистрация: 25.02.2006
Сообщений: 71

Я начинаю учится языку AutoLisp. Раньше, когда еще чертили в DOSе в AutoCADe, а может быть в надстройке была команда "ссылка", с помощью которой можно было расположить объект на определенном расстоянии, относительно привязок (пересечения, конечной точки или центра круга и т.д.). Кто-нибудь знает об этой команде. И, если, можно, как это может решается на AutoLisp-е?
Просмотров: 2929
 
Непрочитано 23.11.2006, 08:15
#2
Кулик Алексей aka kpblc
Moderator

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


_offset ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2006, 09:31
#3
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Может этот лисп? (остался еще от ACAD'а 12)
Код:
[Выделить все]
;---------------------- ALONG
(defun ALONG (/ e p1 p2 l d a)
  (while (or
	   (null (car e))
	   (/= (cdr (assoc 0 (entget (car e)))) "LINE")
	 )
    (setq e (entsel "\nSelect a line: "))
  )
  (redraw (car e) 3)
  (setq p1 (cdr (assoc 10 (entget (car e)))))
  (setq p2 (cdr (assoc 11 (entget (car e)))))
  (setq l (distance p1 p2))
  (prompt "\nLine length is ")
  (prompt (rtos l))
  (initget (+ 1 2) "Divide")
  (setq d (getdist "\n<Distance along line>/Divide: "))
  (cond	((= d "Divide")
	 (initget (+ 1 2 4))
	 (setq d (/ l (getreal "\nDivision factor: ")))
	)
  )
  (redraw (car e) 4)
  (if (< (distance (cadr e) p1) (distance (cadr e) p2))
    (setq pt (polar p1 (angle p1 p2) d))
    (setq pt (polar p2 (angle p2 p1) d))
  )
)
;---------------------- POLARPT
(defun POLARPT (/ p d a)
  (initget 1)
  (setq p (getpoint "\nPolar to: "))
  (initget (+ 1 2 4))
  (setq d (getdist p "\nPolar distance: "))
  (initget 1)
  (setq a (getangle p "\nPolar angle: "))
  (setq pt (polar p a d))
)
;---------------------- RELATIVE
(defun RELATIVE	(/ a b)
  (initget 1)
  (setq a (getpoint "\nRelative to: "))
  (initget 1)
  (setq b (getpoint "\nRelative co-ordinates: "))
  (setq	pt (list (+ (car a) (car b))
		 (+ (cadr a) (cadr b))
	   )
  )
)
;---------------------- DATUM
(defun DATUM (/ b)
  (if (null dat$)
    (progn
      (initget 1)
      (setq dat$ (getpoint "\nSelect datum origin: "))
    )
  )
  (while (or (= b "Reset") (null b))
    (initget 1 "Reset")
    (setq b (getpoint "\nReset/<Enter relative co-ordinates>: "))
    (if	(= b "Reset")
      (progn
	(initget 1)
	(setq dat$ (getpoint "\nSelect datum origin: "))
      )
    )
  )
  (setq	pt (list (+ (car dat$) (car b))
		 (+ (cadr dat$) (cadr b))
	   )
  )
)
;---------------------- MIDPT
(defun MIDPT (/ a b)
  (initget 1)
  (setq a (getpoint "\nFirst point: "))
  (initget 1)
  (setq b (getpoint "\nSecond point: "))
  (setq pt (polar a (angle a b) (/ (distance a b) 2.0)))
)
;---------------------- MAIN FUNCTION
(defun SNAP (/ x)
  (initget "Along Datum Midpt Polar Relative")
  (setq x (getkword "\nAlong/Datum/Midpt/Polar/<Relative>: "))
  (cond	((= x "Along") (along))
	((= x "Datum") (datum))
	((= x "Midpt") (midpt))
	((= x "Polar") (polarpt))
	(T (relative))
  )
)
CB вне форума  
 
Автор темы   Непрочитано 23.11.2006, 19:50
#4
kminas


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


Спасибо друзья, но я не спец по AutoLisp. Но буду учиться и попробую проверить, как подсказки будут работать.
kminas вне форума  
 
Автор темы   Непрочитано 24.11.2006, 00:06
#5
kminas


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


крЫс! То что ты говоришь это parallel или подобие или копируй по нормали. Это относится к копированю линии, а я спрашивал привязку целого объекта и не обязательно его копирование, а и перенос.
kminas вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Ссылки