Тема: LISP.lib Создание штриховки через entmakex
Сегодня меня попросили помочь, создать штриховку, без использования контуров и объектных методов. Контура имеют только линейные сегменты.
Потом уговорили выложить программу, так и делаю.
В программу передается список, со списками вершин контуров, они могут быть вложенными или пересекающимися...
В программе создается штриховка - "SOLID", если кому то нужно, уверен, вы сможете доделать.
В крайнем случае обращайтесь - помогу...
(defun entmakex-hatch (L) ;; By ElpanovEvgeniy ;; 03.04.2007 (entmakex (apply 'append (list (list '(0 . "HATCH") '(100 . "AcDbEntity") '(410 . "Model") '(100 . "AcDbHatch") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0) '(2 . "SOLID") '(70 . 1) '(71 . 0) (cons 91 (length l)) ) ;_ list (apply 'append (mapcar '(lambda (a) (apply 'append (list (list '(92 . 7) '(72 . 0) '(73 . 1) (cons 93 (length a))) (mapcar '(lambda (b) (cons 10 b)) a) '((97 . 0)) ) ;_ list ) ;_ apply ) ;_ lambda l ) ;_ mapcar ) '((75 . 0) (76 . 1) (47 . 1.) (98 . 2) (10 0. 0. 0.0) (10 0. 0. 0.0) (451 . 0) (460 . 0.0) (461 . 0.0) (452 . 1) (462 . 1.0) (453 . 2) (463 . 0.0) (463 . 1.0) (470 . "LINEAR") ) ) ;_ list ) ;_ apply ) ;_ entmakex )
Пример вызова
(setq h (entmakex-hatch '(((538.794 584.563) (895.629 584.563) (895.629 997.377) (538.794 997.377)) ((386.809 345.13) (670.955 345.13) (670.955 855.369) (386.809 855.369)) ) ) ;_ entmakex-hatch ) ;_ setq