Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Как получить длины линий объекта?

Тема в разделе "Autodesk", создана пользователем annageo, 24 май 2010.

  1. olegzyr

    Форумчанин

    Регистрация:
    2 сен 2010
    Сообщения:
    1.225
    Симпатии:
    137
    Адрес:
    г. Томск
    Как же все таки решается эта задача?
    Установил лисп. Отметил полилинию. Вызвал команду. Она в ответ :выбирите участок. Что это значит? Снова отмечаю -снова получаю "выбирите участок". Может кто разъяснит чайнику?
     
    #21
  2. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.749
    Симпатии:
    2.505
    Адрес:
    Сибирь
    значит "отметить полилинию"
    после того ка вызвали команду и выбрали полилинию, нажми F2, как показано в анимации из моего предыдущего поста.
     
    #22
  3. olegzyr

    Форумчанин

    Регистрация:
    2 сен 2010
    Сообщения:
    1.225
    Симпатии:
    137
    Адрес:
    г. Томск
    Disney
    Все делаю по-порядку, но в ответ:Выбирите участок <Выход>:; ошибка: no function definition:
    VLAX-ENAME->VLA-OBJECT

    Может 2008 автокад виноват.
    Анимацию не могу найти
     
    #23
  4. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.749
    Симпатии:
    2.505
    Адрес:
    Сибирь
    исправил, скачай ещё раз lisp файл.
    это картинка, над ней ещё написано: Нажмите для увеличения
     
    #24
  5. olegzyr

    Форумчанин

    Регистрация:
    2 сен 2010
    Сообщения:
    1.225
    Симпатии:
    137
    Адрес:
    г. Томск
    Картинка- белый экран. Нажимаю- экран увеличивается, и ничего не происходит!
    (Добавление)
    Проверил новый вариант. Пришлось расширение поменять. Но ничего не изменилось. Открыл блокнотом- там половина строк забита словом "NUL"
     
    #25
  6. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.749
    Симпатии:
    2.505
    Адрес:
    Сибирь
    походу у тебя инет медленный, прикладываю анимацию к этому сообщению
    расширение чего? не смотря на то, что в прикрепление написано dist_list.LSP, ворум для удобство всё архивирует, поэтому скачается архив dist_list.tar.gz, который не нужно переименовывать, а надо просто разархивировать, ну или вот тебе код программы, скопируй прям от сюда
    Код (раскрыть)
    Код:
    (defun c:dist_list (/ polyline Koord first Text_size Text_style a b Geo_vibor get-vexs group-by-num Make_text)
      ;;;
    ;;;Geo_vibor
    ;;;
    
      (defun geo_vibor (zap tip err / flag name)
        (setq Flag2 t)
        (setvar "ERRNO" 0)
        (while Flag2
          (cond
    	((and
    	   (setq name
    		  (car (entsel zap))
    	   )
    	   (wcmatch (cdr (assoc 0 (entget name))) tip)
    	 )
    	 (setq Flag2 nil
    	       name name
    	 )
    	)
    	((= (getvar "ERRNO") 52)
    	 (setq Flag2 nil)
    	)
    	(t (princ (strcat err tip)))
          )
        )
      )
      ;; written by Fatty T.O.H.
      ;; group list by number
      (defun group-by-num (lst num / ls ret)
        (if	(= (rem (length lst) num) 0)
          (progn
    	(setq ls nil)
    	(repeat	(/ (length lst) num)
    	  (repeat num
    	    (setq ls
    		      (cons (car lst) ls)
    		  lst (cdr lst)
    	    )
    	  )
    	  (setq	ret (append ret (list (reverse ls)))
    		ls  nil
    	  )
    	)
          )
        )
        ret
      )
      ;;get polyline vertices
      (defun get-vexs (pline_obj / verts)
        (setq verts	(vlax-get pline_obj 'Coordinates)
    	  verts
    		(cond
    		  ((wcmatch (vlax-get pline_obj 'Objectname)
    			    "AcDb2dPolyline,AcDb3dPolyline"
    		   )
    		   (group-by-num verts 3)
    		  )
    		  ((eq (vlax-get pline_obj 'Objectname)
    		       "AcDbPolyline"
    		   )
    		   (group-by-num verts 2)
    		  )
    		  (T nil)
    		)
        )
      )
      (defun Make_text (pt str)
        (entmakex (list (cons 0 "TEXT")
    		    (cons 10 pt)
    		    (cons 40 Text_size)
    		    (cons 7 Text_style)
    		    (cons 1 str)
    	      )
        )
      )
      (vl-load-com)
      (if (setq polyline (Geo_vibor	"\nВыбирите участок <Выход>:"
    				"*POLYLINE"
    				"\nМимо или объект не "
    		     )
          )
        (progn
          (setq Koord      (get-vexs
    			 (vlax-ename->vla-object
    			   polyline
    			 )
    		       )
    	    first      (car Koord)
    	    Koord      (cdr Koord)
    	    Text_size  (getvar "TEXTSIZE")
    	    Text_style (getvar "TEXTSTYLE")
    	    b	       (/ Text_size 2.0)
    	    a	       1
          )
          (Make_text (polar first 0.785398 b) (itoa a))
    
          (foreach x
    		 Koord
    	(princ (strcat "\n"
    		       (itoa a)
    		       "-"
    		       (itoa (setq a (1+ a)))
    		       "	"
    		       (rtos (distance first (setq first x)) 2)
    	       )
    	)
    	(Make_text (polar first 0.785398 b) (itoa a))
          )
        )
      )
      (princ)
    
    )

    на всякий случай Как использовать лисп
     

    Вложения:

    #26
  7. olegzyr

    Форумчанин

    Регистрация:
    2 сен 2010
    Сообщения:
    1.225
    Симпатии:
    137
    Адрес:
    г. Томск
    расширение чего? не смотря на то, что в прикрепление написано dist_list.LSP, ворум для удобство всё архивирует, поэтому скачается архив dist_list.tar.gz, который не нужно переименовывать, а надо просто разархивировать, ну или вот тебе код программы, скопируй прям от сюда

    Когда разархивировал файл лисп, у него осталось оасширение tar. Поэтому я и заменял на лисп. А внутри были кракозябры, но сейчас все получилось, помог код программы!Спасибо!
     
    #27
  8. xdimonx

    Форумчанин

    Регистрация:
    26 апр 2016
    Сообщения:
    47
    Симпатии:
    4
    Здравствуйте, Disney! Этот лисп хорошо работает с полилинией без дуг, а если с дугами полилиния будет? У меня полилиния с дугами и необходимо сделать извлечение всех длин участков полилинии.
     
    #28
  9. kheylan66

    Форумчанин

    Регистрация:
    28 мар 2012
    Сообщения:
    311
    Симпатии:
    188
    Адрес:
    kheylan@mail.ru
    xdimonx, используй программы с сайта http://www.maestrogroup.com.ua/support/ GeomProps.zip или getdwgprops.zip не помню именно какую.
    Разархвируй zip и сбрось файл.apx просто перетаскиванием из проводника в autocad, только один раз, дальше программа будет загружаться автоматически. В палитре свойств будет отражаться общая площадь и длина полилиний, после их выбора. Если надо только длину дуг, расчлени полилинии и выбери необходимые тебе дуги, программа посчитает.
     
    #29
    xdimonx нравится это.
  10. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.749
    Симпатии:
    2.505
    Адрес:
    Сибирь
    Держи.
     

    Вложения:

    • dist_list.LSP
      Размер файла:
      2,3 КБ
      Просмотров:
      20
    #30
    xdimonx нравится это.
  11. xdimonx

    Форумчанин

    Регистрация:
    26 апр 2016
    Сообщения:
    47
    Симпатии:
    4
    Спасибо! Очень помогли!
     
    #31
  12. Alex_Shaton

    Форумчанин

    Регистрация:
    30 июл 2013
    Сообщения:
    258
    Симпатии:
    250
    Адрес:
    Беларусь Гомель
    Уважаемый Disney! Можно ли отредактировать код из поста 30, чтобы в чертеж вставлялось бы не округленное значение длины всей полилинии, а сумма значений длин ее сегментов, округленных до первого знака после запятой?
     
    #32
  13. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.749
    Симпатии:
    2.505
    Адрес:
    Сибирь
    Так он вроде и не вставляет ни каких длин в чертёж...
     
    #33
  14. Alex_Shaton

    Форумчанин

    Регистрация:
    30 июл 2013
    Сообщения:
    258
    Симпатии:
    250
    Адрес:
    Беларусь Гомель
    Действительно. Прошу прощения, не разобрался. Под эту задачу нужна другая программа.
     
    #34

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление