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

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

Отрисовка вертикальных линий по данным из полилинии

Ответ
Поиск в этой теме
Непрочитано 24.02.2013, 18:00 #1
Отрисовка вертикальных линий по данным из полилинии
Alex II
 
Регистрация: 27.11.2007
Сообщений: 126

Добрый день!

Помогите плз написать лисп, который бы рисовал вертикальные параллельные линии длинной 100 ед., причем расстояние между ними равнялось бы расстояниями между вершинами указанной полилинии, а количество этих линий соответсвенно равнялось бы количеству вершин полилинии.

Большое спасибо!!
Просмотров: 3322
 
Непрочитано 24.02.2013, 18:05
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


в ветку поиск исполнителей пожалуйте, либо свои наработки выкладывайте
gomer вне форума  
 
Автор темы   Непрочитано 24.02.2013, 20:14
#3
Alex II


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


Наработок не очень много, линии нарисовать смогу, но вот не знаю как узнать кол-во вершин и их коодинаты
Alex II вне форума  
 
Непрочитано 24.02.2013, 20:40
#4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от Alex II Посмотреть сообщение
Наработок не очень много, линии нарисовать смогу, но вот не знаю как узнать кол-во вершин и их коодинаты
Вы не стесняйтесь, выкладывайте код, а то тут телепатов мало и угадывать что Вам нужно и на каком языке Вы пишете, увы, некому.
Boxa на форуме  
 
Автор темы   Непрочитано 24.02.2013, 21:11
#5
Alex II


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


Выкладываю код. Он вставляет блок и отрисовывает горизонталные линии и две вертикальных, вставляет текст. Это все завязано на полной длине выбранной полилинии. А теперь появилась необходимость кроме этих двух вертикальных линии нарисовать еще несколько, количество которых будет равняться кол-ву вершин полилинии, а расстояние между ними будет равняться расстоянию между вершинами

Код:
[Выделить все]
 
(defun c:pr (poly_lenght poly_lenght_1 insertpt1 current_layer current_osmode pt1 pt2 pt3 pt4 tpt1 tpt2)

  (setq current_layer (getvar "CLAYER"))

  
  (if
    (not (tblsearch "layer" "HC.pr1" ));if layer does not exist make it
    (command "-layer" "m" "HC.pr1" "c" "white" "HC.pr1" "lt" "Continuous" "HC.pr1" "" ); "c" =color, "lt" = linetype
  )

  (if
    (not (tblsearch "layer" "HC.pr2" ));if layer does not exist make it
    (command "-layer" "m" "HC.pr2" "c" "blue" "HC.pr2" "lt" "Continuous" "HC.pr2" "" ); "c" =color, "lt" = linetype
  )
  (if
    (not (tblsearch "style" "HC_text"))
    (command "-style" "HC_text" "Arial" "0" "1" "0" "" "" "")
  )
  
  (command ".-LAYER" "_Set" "HC.pr1" "")

  
  (setq poly_lenght (vla-get-length (vlax-ename->vla-object (car (entsel)))))
  (setq poly_lenght_1 (+ poly_lenght 13))

    

  
  (setq insertpt1 (getpoint "\nInsertion point: "))
  (if (and insertpt1 (findfile (strcat "HC.st" ".dwg")))
    (command "_insert" "HC.st" insertpt1 "" "" "")
    (prompt "\nBlock not found in support path! ")
  )

  
  (setq current_osmode (getvar "osmode"))
  (setvar "osmode" 0)

 
  (setq pt1 (list (+ (car insertpt1) 25) (+ (nth 1 insertpt1) 35)))
  (setq pt2 (list (+ (car pt1) poly_lenght_1) (nth 1 pt1)))
  (command "._line" pt1 pt2 "")
  (print)

  (setq i 0)
  (while (<= i 25)
    (setq pt3 (list (car pt1) (- (nth 1 pt1) i)))
    (setq pt4 (list (+ (car pt3) poly_lenght_1) (nth 1 pt3)))
    (command "._line" pt3 pt4 "")
    (print)
    (setq i (+ i 5))
  )

  (setq pt3 (list (car pt1) (- (nth 1 pt1) i 5)))
  (setq pt4 (list (+ (car pt3) poly_lenght_1) (nth 1 pt3)))
  (command "._line" pt3 pt4 "")
  (princ)

  (setq k 0)
  (while (<= k poly_lenght)
    (setq tpt1 (list (+ (car pt1) 10 k) (nth 1 pt1)))
    (setq tpt2 (list (car tpt1) (+ (nth 1 tpt1) 1.5)))
    (command "._line" tpt1 tpt2 "")

    (command ".-LAYER" "_Set" "HC.pr2" "")
    (command
      "_.text" "_style" "HC_text"
      "_j" "_ML" (list (car tpt2) (+ (cadr tpt2) 0.3))
      1 ; text height
      270 ; rotation
      (strcat "XXXXXXXXXXX")
    )

    (command ".-LAYER" "_Set" "HC.pr1" "")
    (command "._line" (list (car tpt2) (+ (cadr tpt2) 11)) (list (car tpt2) (+ (cadr tpt2) 70)) "")
    (setq i 2.5)
    (while (<= i 12.5)
      (command
        "_.text" "_style" "HC_text"
        "_j" "_MC" (list (car tpt1) (- (cadr tpt1) i))
        1 ; text height
        270 ; rotation
        (strcat "00.00")
      )
      (setq i (+ i 5))
    )
    (command "._line" (list (car tpt1) (- (cadr tpt1) 15)) (list (car tpt1) (- (cadr tpt1) 30)) "")
    (princ)
    (setq k (+ k poly_lenght))
  )
  
   
  (setvar "CLAYER" current_layer)
  (setvar "osmode" current_osmode)
  (princ)
)
Alex II вне форума  
 
Непрочитано 27.02.2013, 06:58
#6
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Entget получить список примитива assoc получить значение из списка, entmake создать примитив
mamuk вне форума  
 
Непрочитано 27.02.2013, 11:20
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


А в чем у тебя "затык" линии выводить ты можешь - не знаешь как взять количество вершин или расстояния между ними? или не понимаешь как организовать цикл.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 27.02.2013, 11:39
#8
Alex II


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А в чем у тебя "затык" линии выводить ты можешь - не знаешь как взять количество вершин или расстояния между ними? или не понимаешь как организовать цикл.
Совершенно верно, не знал как взять количество вершин. Но уже узнал и все сделал, так что спасибо
Alex II вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отрисовка вертикальных линий по данным из полилинии

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Отрисовка косых линий в Автокад Olexan AutoCAD 1 22.11.2012 09:09
Отрисовка бордюров и вертикальных подпорных стен в Civil ganjour Вертикальные решения на базе AutoCAD 5 29.02.2012 13:25
Ищу шрифт с полыми контурными буквами из горизонтальных и вертикальных линий Baturin Поиск литературы, чертежей, моделей и прочих материалов 7 06.08.2009 13:02
отрисовка полилинии с ее длиной Victorovich Программирование 2 19.05.2008 18:25