1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны перебои в работе.
    Скрыть объявление

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

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

  1. olegzyr

    olegzyr Форумчанин

    Как же все таки решается эта задача?
    Установил лисп. Отметил полилинию. Вызвал команду. Она в ответ :выбирите участок. Что это значит? Снова отмечаю -снова получаю "выбирите участок". Может кто разъяснит чайнику?
     
  2. BearDyugin

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

    значит "отметить полилинию"
    после того ка вызвали команду и выбрали полилинию, нажми F2, как показано в анимации из моего предыдущего поста.
     
  3. olegzyr

    olegzyr Форумчанин

    Disney
    Все делаю по-порядку, но в ответ:Выбирите участок <Выход>:; ошибка: no function definition:
    VLAX-ENAME->VLA-OBJECT

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

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

    исправил, скачай ещё раз lisp файл.
    это картинка, над ней ещё написано: Нажмите для увеличения
     
  5. olegzyr

    olegzyr Форумчанин

    Картинка- белый экран. Нажимаю- экран увеличивается, и ничего не происходит!
    (Добавление)
    Проверил новый вариант. Пришлось расширение поменять. Но ничего не изменилось. Открыл блокнотом- там половина строк забита словом "NUL"
     
  6. BearDyugin

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

    походу у тебя инет медленный, прикладываю анимацию к этому сообщению
    расширение чего? не смотря на то, что в прикрепление написано 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)
    
    )

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

    Вложения:

  7. olegzyr

    olegzyr Форумчанин

    расширение чего? не смотря на то, что в прикрепление написано dist_list.LSP, ворум для удобство всё архивирует, поэтому скачается архив dist_list.tar.gz, который не нужно переименовывать, а надо просто разархивировать, ну или вот тебе код программы, скопируй прям от сюда

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

    xdimonx Форумчанин

    Здравствуйте, Disney! Этот лисп хорошо работает с полилинией без дуг, а если с дугами полилиния будет? У меня полилиния с дугами и необходимо сделать извлечение всех длин участков полилинии.
     
  9. kheylan66

    kheylan66 Форумчанин

    xdimonx, используй программы с сайта http://www.maestrogroup.com.ua/support/ GeomProps.zip или getdwgprops.zip не помню именно какую.
    Разархвируй zip и сбрось файл.apx просто перетаскиванием из проводника в autocad, только один раз, дальше программа будет загружаться автоматически. В палитре свойств будет отражаться общая площадь и длина полилиний, после их выбора. Если надо только длину дуг, расчлени полилинии и выбери необходимые тебе дуги, программа посчитает.
     
    xdimonx нравится это.
  10. BearDyugin

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

    Держи.
     

    Вложения:

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

    xdimonx Форумчанин

    Спасибо! Очень помогли!
     
  12. Alex_Shaton

    Alex_Shaton Форумчанин

    Уважаемый Disney! Можно ли отредактировать код из поста 30, чтобы в чертеж вставлялось бы не округленное значение длины всей полилинии, а сумма значений длин ее сегментов, округленных до первого знака после запятой?
     
  13. BearDyugin

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

    Так он вроде и не вставляет ни каких длин в чертёж...
     
  14. Alex_Shaton

    Alex_Shaton Форумчанин

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