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

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

Новые команды для работы с полилинией

Ответ
Поиск в этой теме
Непрочитано 14.09.2006, 13:30 4 |
Новые команды для работы с полилинией
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

Данный набор программ является коллективным продуктом участников форумов autocad.ru и dwg.ru с моими доработками.
Захотелось собрать все программы для работы с полилиниями воедино и оформить как полагается.

=========== Доступные команды PLTOOLS=================
Редакция 17.06.2014
PL-JOIN -Объединение выбранных полилиний
PL-VFI -вставка вершин в выбранной полилинии в местах пересечения с
указанными полилиниями, линиями, дугами
PL-JOIN3D -Объединение 3D полилиний
PL-L2A -Замена линейного сегмента в полилинии дуговым сегментом.
PL-A2L -Замена дугового сегмента в полилинии линейным сегментом.
PL-DIV -Разбивает выбранный сегмент полилинии на указанное количество
сегментов или через указанное расстояние
PL-DIVAll -Разбивает все сегменты полилинии на указанное количество
сегментов или через указанное расстояние
PL-VxAdd -Добавляет новую вершину к полилинии
ENTREVS -Реверс объекта
ENTREV -Реверс объектов (множественный выбор)
PL-CW -Реверс выбранных полилиний по часовой стрелке
PL-CCW -Реверс выбранных полилиний против часовой стрелки
PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой
PL-VxDel -Удаление выбранной вершины
pl-VxOpt -Удаление совпадающих вершин из полилинии
PL-NoArc -Аппроксимация дуговых сегментов полилинии
PL-Clone -Построение полилинии путем копирования ее сегментов
PL-VxMove -Перемещение вершин полилинии
PL-Vx1 -Изменение начала полилинии
ConvTo2d -Преобразование линейных объектов в 2D полилинии
ConvTo3d -Преобразование линейных объектов в 3D полилинии
MPL -Построение средней линии Более продвинутая версия Rollin_Ball.lsp Find MidBoundary between two polylines.
R3P -Прямоугольгик по 3-м точкам
PL-P90 -Рисование перпендикулярных друг к другу сегментов полилинии
PL-CSE -Объединение 2d полилиний по примитиву
PL-SgWidth -Изменить ширину сегмента полилинии

Реверс дуговых сегментов полилинии из #79
На дуговых сегментах полилинии тип линий может быть "вверх тормашками", причем реверс не помогает. Этот артефакт можно побороть, если в полилинии включить "генерацию типа линий".

Панели, лисп и инструкции здесь http://dwg.ru/dnl/607
Иконки для темной темы здесь
Обсуждаем, критикуем, предлагаем

Миниатюры
Нажмите на изображение для увеличения
Название: plrevers.jpg
Просмотров: 15347
Размер:	30.3 Кб
ID:	21079  


Последний раз редактировалось VVA, 08.09.2023 в 13:25. Причина: ссылка на иконки для темной темы
Просмотров: 367952
 
Автор темы   Непрочитано 27.11.2012, 18:36
#401
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


WATRES, All в этом случае относится ко всем сегментам полилинии.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.11.2012, 19:55
#402
WATRES

горный инженер
 
Регистрация: 25.05.2011
Петербург
Сообщений: 19


Цитата:
Сообщение от VVA Посмотреть сообщение
WATRES, All в этом случае относится ко всем сегментам полилинии.
Да, понятно.
Жаль, что нет функции выбора нескольких объектов.
WATRES вне форума  
 
Непрочитано 27.12.2012, 16:01
#403
olega70


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


Здравствуйте!
Подскажите, сегодня перестала работать прополка полилиний, все остальное работает, вот ошибка.

Код:
[Выделить все]
nil
Команда: PL-VxRdc
ERRNO # 0: Ошибка Automation. Вызов метода AddItems из интерфейса 
IAcadSelectionSet завершился неудачно
_.redrawall
Заранее благодарен.

PS: Автокад2012, Win7 32bit.

Последний раз редактировалось olega70, 04.01.2013 в 15:53.
olega70 вне форума  
 
Автор темы   Непрочитано 30.12.2012, 20:42
#404
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


olega70, Без файла трудно что-то сказать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.12.2012, 19:26
#405
olega70


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


VVA, спасибо за отклик, щас не могу, на работе все находится, 4 января скину всю папку, но мне кажется что дело в другом, так как свою папку удалял полностью и копировал с другого компа, на котором все работает. Ну вобщем выйду на работу скину всю папку.

Еще раз спасибо.
Всех с наступающим Новым Годом!!!
Всех благ, здоровья и вдохновения!!!

Последний раз редактировалось olega70, 04.01.2013 в 15:51.
olega70 вне форума  
 
Непрочитано 04.01.2013, 12:26
#406
olega70


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


VVA, Вот вся папка Pltools.
Еще раз спасибо.

Последний раз редактировалось olega70, 04.01.2013 в 15:51.
olega70 вне форума  
 
Непрочитано 04.01.2013, 13:13
#407
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Я подозреваю, что запрашивался не код, а файл dwg...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.01.2013, 15:28
#408
olega70


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


Вот и сам файл, изолинии выделенные красным цветом, которым нужно сделать прополку, хотя на соседнем компе в этом же файле прополка работает.


Блин, ребят простите за весь мой флуд, потрите плиз все мои посты. Дело действительно было в самом файле. Извините за отнятое время.

Последний раз редактировалось olega70, 04.01.2013 в 15:53. Причина: Сам нашел проблему.
olega70 вне форума  
 
Непрочитано 04.01.2013, 19:00
#409
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


А что именно было в файле?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.01.2013, 19:31
#410
olega70


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


Да я, если честно, и не разбирался, просто скопировал все в новый файл и все заработало. Если интересно во вторник выложу его, если я его не удалил правда.


Так-с, файл не удалил, выкладываю.
Вложения
Тип файла: dwg
DWG 2000
PLAN 2012.dwg (2.07 Мб, 5371 просмотров)

Последний раз редактировалось olega70, 08.01.2013 в 10:32.
olega70 вне форума  
 
Автор темы   Непрочитано 09.01.2013, 20:00
#411
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


olega70, У меня в твоем файле PL-VxRdc отработала без ошибок. Автокад 2009 RUS SP3 + BonusPack, Windows 7 x32 4 Гб памяти
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.01.2013, 12:43
#412
olega70


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


VVA, да уж, странно как-то, ну да бог с ним, победил и хорошо.
olega70 вне форума  
 
Автор темы   Непрочитано 10.01.2013, 19:54
#413
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


olega70, Спишем на последсвия празднования нового года
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.01.2013, 16:00
#414
Alexeydwg2013


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


Отличный набор!
Подскажите, есть команда похожая на PL-DIVAll, только сразу же разбивающая полилинию на полилинии заданной длины?
Alexeydwg2013 вне форума  
 
Непрочитано 02.03.2013, 09:56
#415
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


VVA
Очень нехватает функции - продолжить полилинию. В стороннем коммерческом пакете PLCO. Выбор полилинии, после чего команда отрисовки полилинии как бы продолжается с последней вершины.
perpetule вне форума  
 
Непрочитано 02.03.2013, 11:03
#416
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Цитата:
Сообщение от perpetule Посмотреть сообщение
функции - продолжить полилинию.
Отсюда

Код:
[Выделить все]
 (defun c:con_pline (/		  ARC		ELEVATIONS
		    ENTITY	  ENTITY_LST	LAST_POINT
		    OLD_ANGDIR	  OLD_CMDECHO	OLD_OSMODE
		    OLD_PLINEWID  OLD_PROPERTIS	closed
		   )
		   ;|
Перерисовка полилинии с возможностью продолжения команды pline
|;
  (if (not *kpblc-activedoc*)
    (setq *kpblc-activedoc*
	   (vla-get-activedocument
	     (vlax-get-acad-object)
	   ) ;_end of vla-get-activedocument
    ) ;_end of vlax-get-acad-object
  ) ;_end of if
  (vla-endundomark *kpblc-activedoc*)
  (vla-startundomark *kpblc-activedoc*)
  (setq old_osmode (getvar "osmode"))
  (setq old_plinewid (getvar "plinewid"))
  (setq old_cmdecho (getvar "cmdecho"))
  (setq old_angdir (getvar "angdir"))
  (cond
    ((/= 0 (last (getvar "ucsxdir")) (last (getvar "ucsydir")))
     (princ "\nCannot continue in this UCS.")
     (princ)
    )
    ((vl-catch-all-error-p
       (setq entity
	      (vl-catch-all-apply
		'entsel
		'("\nSelect pline for continue: ")
	      )
       )
     )
     (princ)
    )
    ((not entity) (princ))
    ((not (eq "LWPOLYLINE"
	      (cdr (assoc 0
			  (setq entity_lst (entget (car entity)))
		   )
	      )
	  )
     )
     (princ "\nThis not pline.")
     (princ)
    )
    ((+runa_bit_in_flag
       4
       (cdr
	 (assoc	70
		(entget
		  (tblobjname
		    "layer"
		    (cdr (assoc	8
				(setq entity_lst (entget (car entity)))
			 )
		    )
		  )
		)
	 )
       )
     )
     (princ "\nPline is on the locked layer.")
     (princ)
    )
    ((not (equal '(210 0.0 0.0 1.0)
		 (assoc 210 entity_lst)
	  )
     )
     (princ "\nThis pline is not in WCS.")
     (princ)
    )
    ((cond
       ((+runa_bit_in_flag 1 (cdr (assoc 70 entity_lst)))
	(if (progn
	      (initget "Yes No")
	      (vl-catch-all-error-p
		(setq closed
		       (vl-catch-all-apply
			 'getkword
			 '("\nPolyline is closed, continue [Yes/No] <Yes>:")
		       )
		)
	      )
	    )
	  t
	  (cond
	    ((not closed) nil)
	    ((eq closed "Yes") nil)
	    (t t)
	  )
	)
       )
       (t nil)
     )
     (princ "\nEnd function.")
     (princ)
    )
    (t
     (setq old_propertis (+runa_mopc (car entity)))
     (setvar "cmdecho" 0)
     (setvar "angdir" 0)
     (setq elevations (list (cdr (assoc 38 entity_lst))))
     (entdel (car entity))
     (setq entity_lst (vl-remove-if-not
			(function
			  (lambda (x)
			    (member (car x)
				    '(10 40 41 42)
			    )
			  )
			)
			entity_lst
		      )
	   last_point (nth (- (length entity_lst) 4)
			   entity_lst
		      )
	   entity_lst (reverse (cddddr
				 (reverse entity_lst)
			       )
		      )
     )
     (setvar "osmode" 0)
     (vl-cmdf "_pline")
     (mapcar
       (function
	 (lambda (x)
	   (cond
	     ((= (car x) 10)
	      (vl-cmdf (trans (append (cdr x) elevations) 0 1))
	     )
	     ((= (car x) 40) (vl-cmdf "_w" (cdr x)))
	     ((= (car x) 41) (vl-cmdf (cdr x)))
	     ((= (car x) 42)
	      (cond
		((zerop (cdr x))
		 (if arc
		   (progn (vl-cmdf "_l")
			  (setq arc nil)
		   )
		 )
		)
		(arc (vl-cmdf "_a" (/ (* 720 (atan (cdr x))) pi)))
		(t
		 (vl-cmdf "_a" "_a" (/ (* 720 (atan (cdr x))) pi))
		 (setq arc t)
		)
	      )
	     )
	   )
	 )
       )
       entity_lst
     )
     (setvar "angdir" old_angdir)
     (setvar "cmdecho" 1)
     (vl-cmdf (trans (cdr last_point) 0 1))
     (setvar "osmode" old_osmode)
     (while (+runa_bit_in_flag 1 (getvar "CMDACTIVE"))
       (vl-cmdf pause)
     )
     (setvar "cmdecho" 0)
     (+runa_mopc old_propertis)
     (setvar "plinewid" old_plinewid)
     (setvar "cmdecho" old_cmdecho)
    )
  )
  (vla-endundomark *kpblc-activedoc*)
  (princ)
)

Nike вне форума  
 
Непрочитано 02.03.2013, 11:25 Nike
#417
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Спасибо! Заработало!
Там еще вот это необходимо

Перерисовка полилинии с возможностью продолжения команды pline + #416

Код:
[Выделить все]
 (defun +runa_bit_in_flag (bit flag / )
;|
(+runa_bit_in_flag 1 3)
|;
  (= (logand bit flag) bit))

Код:
[Выделить все]
 (defun +runa_mopc (ent_name /
          C_COLOR C_LAYER C_LINE_TYPE
          C_LINE_TYPE_SCALE
          C_LINE_WEIGHT OLD_PROPERTIS I)
;|
(+runa_mopc (car (entsel)))
(+runa_mopc (+runa_mopc (car (entsel))))
Reval - old propertis (layer linetype scale etc.)
|;
  (setq old_propertis (list (cons 8 (getvar "clayer"))
             (cons 6 (getvar "celtype"))
             (cons 62 (getvar "cecolor"))
             (cons 370 (getvar "celweight"))
             (cons 48 (getvar "celtscale"))
             ))
  (if (not (listp ent_name)) (setq ent_name (entget ent_name)))
  (setq c_layer (cdr (assoc 8 ent_name)))
  (setq c_line_type (if (setq i (assoc 6 ent_name))
            (cdr i) "BYLAYER"))
  (setq c_color
  (if (setq i (assoc 62 ent_name))
  (if (eq (type (setq i (cdr i))) 'STR) i (itoa i))
    "BYLAYER"))
  (setq c_line_weight (if (setq i (assoc 370 ent_name))
         (cdr i) -1))
  (setq c_line_type_scale (if (setq i (assoc 48 ent_name))
             (cdr i) 1.0))
  (setvar "clayer" c_layer)
  (setvar "celtype" c_line_type)
  (setvar "cecolor" c_color)
  (setvar "celweight" c_line_weight)
  (setvar "celtscale" c_line_type_scale)
  old_propertis
  )

perpetule вне форума  
 
Непрочитано 06.06.2013, 12:45
#418
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


perpetule, и как все это вместе запускать?
А понял- все три файла отдельными лиспами и подгружать
__________________
Kiev, Ukraine

Последний раз редактировалось sasha_lif, 06.06.2013 в 13:04.
sasha_lif вне форума  
 
Непрочитано 17.11.2013, 17:23
#419
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


А если полилиния внутри блока - как добавить новую вершину к полилинии ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Автор темы   Непрочитано 17.11.2013, 21:12
#420
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


maratovich, Проверить пока не могу, а из редактора блока команда не запускается?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Новые команды для работы с полилинией

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск