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

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

Как с помощью LISP создать выноску и заполнить ее данными

Ответ
Поиск в этой теме
Непрочитано 14.01.2012, 15:15 #1
Как с помощью LISP создать выноску и заполнить ее данными
YuryK
 
Регистрация: 14.01.2012
Сообщений: 19

Добрый день! Прошу помощи в таком вопросе. Есть LISP взят у Полещука Н.Н. (переделан под себя) суть которого в следующем: выделяем объекты в модели, и получаем на выходе список с названиями слоев на которых находятся выделенные объекты. Надо создать выноску (_mleader) и записать в нее список с названиями слоев.
Чтобы было понятней поясню всю задачу. Я проектирую внутреннее электроснабжение, каждая группа располагается в своем слое, слой имеет название группы. В результате вышеизложенного должно получаться следующее: выделили участок трассы по которому идет несколько групп, получили выноску с названиями групп. ВСЕ! желательно все реализовать только средствами "чистого" AutoCAD. Заранее благодарен.

Вложения
Тип файла: lsp Трассы.lsp (1.2 Кб, 45 просмотров)

Просмотров: 2282
 
Непрочитано 15.01.2012, 12:51
#2
WST


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


YuryK,
Создавать для каждой группы слой не очень удобно.
Посмотри эту программу она может не только то что ты хочешь но и многое другое, правда я использую ее только для силового оборудования для освещения она не очень подходит.
WST вне форума  
 
Непрочитано 15.01.2012, 18:51
1 | #3
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Попробуй начать с этого примера
Код:
[Выделить все]
;; fixo ()2011 * all rights released
;; local defun
;; convert radians to degrees
(defun rtd (a)
(* 180.0 (/ a pi))
)

;;			Main part			;;
  (defun C:LGR (/ acsp adoc ang atch axss com_data layer_lst layer_text ldobj mtx p1 p2 ss)

    (setq adoc (vla-get-activedocument
		 (vlax-get-acad-object)
	       )
	  acsp (vla-get-block (vla-get-activelayout  adoc))
    )

    (vla-endundomark adoc)
    (vla-startundomark adoc)
   
    (prompt "\n   ---   Select object groups:    ---")
    
    (setq ss (ssget ))

    (setq axss (vla-get-activeselectionset adoc))
    
    (setq com_data nil);global
    
    (vlax-for a	axss
      (if (not (member (vla-get-layer a) com_data))
      (setq com_data (cons (vla-get-layer a) com_data))
    )
)

   (setq layer_lst (vl-sort com_data '<))
    
    (setq layer_text
	   (apply 'strcat
	   (mapcar (function (lambda(x)(strcat x "\\P")))
    layer_lst))
	  )

    (setq p1 (getpoint "\nТочка вставки выноски: ")
	  p2 (getpoint p1 "\nТочка полки выноски: ")
	  )
    (setq ang (rtd (angle p1 p2))
)

(cond
((< 0 ang 90)(setq atch 4))
((< 90 ang 180)(setq atch 6))
((< 180 ang 270)(setq atch 6))
((< 270 ang 360)(setq atch 4)))
    
(setvar "celweight" -1)
 (if (not (tblsearch "layer" "Leader")) 
(command "_.-layer" "m" "Leader" "c" "121" "Leader" "lt" "Continuous" "Leader" "lw" "0.0" "Leader" "");chane color: 121 is color index
   )
  (setq	mtx (vlax-invoke
	      acsp 'AddMText p2	0.0 layer_text)
  )
  (vlax-put mtx 'StyleName "Standard");<-- text style name
  (vlax-put mtx 'Height (getvar "dimtxt"));<--text height
  (vlax-put mtx 'Layer "Leader") ;<--layer name
  (vlax-put mtx 'Color 256);<--color bylayer
  
  (vlax-put mtx 'AttachmentPoint atch)
  (vlax-put mtx 'InsertionPoint  p2)


  (setq ldobj (vlax-invoke
    acsp
    'Addleader
    (apply 'append (list p1 p2))
    mtx
    acLineWithArrow
  )
	)
  (vla-put-layer ldobj (vlax-get mtx 'Layer))
  (vla-put-arrowheadsize ldobj (vlax-get mtx 'Height))
  (vla-put-textgap ldobj (vlax-get mtx 'Height))
  (vla-endundomark adoc)
  (princ)
 ) 
(princ "\n   ---   Для старта команда: LGR.   ---   ")
(prin1)
(vl-load-com)
(princ)
Олег (jr.) вне форума  
 
Непрочитано 16.01.2012, 12:28
#4
GRIFEL

пенсионер-конструктор
 
Регистрация: 11.02.2011
Калуга
Сообщений: 68


Строку (command "_.-layer" "m" "Leader" "c" "121" "Leader" "lt" "Continuous" "Leader" "lw" "0.0" "Leader" "")
для локализованных подправить:
(command "_.-layer" "_m" "Leader" "_c" "121" "Leader" "_lt" "Continuous" "Leader" "_lw" "0.0" "Leader" "")
иначе дурит .....
GRIFEL вне форума  
 
Автор темы   Непрочитано 17.01.2012, 18:52
#5
YuryK


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


Олег (jr.) Спасибо огромное. Убрал кое-что из того, что мне не нужно и сделал штатную мультивыноску. Все замечательно работает.

Результат выкладываю.
Вложения
Тип файла: lsp Выноски к трассам.lsp (1.1 Кб, 107 просмотров)

Последний раз редактировалось YuryK, 17.01.2012 в 21:40.
YuryK вне форума  
 
Непрочитано 18.01.2012, 14:16
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от YuryK Посмотреть сообщение
Олег (jr.) Спасибо огромное. Убрал кое-что из того, что мне не нужно и сделал штатную мультивыноску. Все замечательно работает.

Результат выкладываю.
Рад что пригодилось,
Успехов
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как с помощью LISP создать выноску и заполнить ее данными



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно-ли с помощью профилей создать 3D поверхность? Гиорги AutoCAD 11 24.05.2007 10:07
Как создать закрашеный прямоугольник с помощью shp/shx mental AutoCAD 4 27.12.2006 12:39
LISP: работа с буфером обмена с помощью VLisp Torino LISP 14 23.06.2005 13:16