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

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

Как программно закрыть полилинию

Ответ
Поиск в этой теме
Непрочитано 10.05.2012, 08:16 #1
Как программно закрыть полилинию
Peter123
 
semsk
Регистрация: 04.04.2007
Сообщений: 9

Добрый день! Очень часто приходится закрывать открытые полинии. Сейчас делаю через окно свойств. Приходится делать много лишних движений. Вроде программа должна быть несложная, попробовал сам написать что то ругается. Использовал команду mpedit. Подскажите где косяк? Или может у кого есть готовая?

Код:
[Выделить все]
(defun c:cx ()

			(setq	Ss (ssget '((0 . "lwpolyline")))   
				SSN (if Ss (sslength Ss) 0)       
				CurEntIndex 0                        
			)
	(while (< CurEntIndex ssn)                                
			(setq 
				name1 (ssname Ss CurEntIndex)
				ssn1 (entget name1)
			)

(command "_mpedit" name1 "" "y" "c" "")
			(setq CurEntIndex (+ CurEntIndex 1)
			)

)
)

Последний раз редактировалось Кулик Алексей aka kpblc, 10.05.2012 в 12:22.
Просмотров: 3164
 
Непрочитано 10.05.2012, 08:40
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Попробуй такой код:
Код:
[Выделить все]
(defun c:cx ( / ss ssn curentlndex name1 ssn1)
(setq Ss (ssget '((0 . "lwpolyline"))) 
SSN (if Ss (sslength Ss) 0) 
CurEntIndex 0 
)
(while (< CurEntIndex ssn) 
(setq 
name1 (ssname Ss CurEntIndex)
ssn1 (entget name1)
)
(command "_pedit" "_m" name1 ""  "_c" "")
(setq CurEntIndex (+ CurEntIndex 1)
)
)
)
Profan вне форума  
 
Автор темы   Непрочитано 10.05.2012, 12:14
#3
Peter123


 
Регистрация: 04.04.2007
semsk
Сообщений: 9


Спасибо!! Работает!! не скажешь в чем в моем коде проблема?
Peter123 вне форума  
 
Непрочитано 10.05.2012, 12:27
1 | #4
Кулик Алексей aka kpblc
Moderator

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


Вариант 2:
Код:
[Выделить все]
 (vl-load-com)

(defun c:cx (/ adoc selset i *error*)

  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (if (= (type (setq selset (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget "_:L" '((0 . "LWPOLYLINE")))
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'pickset
         ) ;_ end of =
    (progn
      (setq i 0)
      (while (< i (sslength selset))
        (vl-catch-all-apply
          (function
            (lambda ()
              (vla-put-closed
                (vlax-ename->vla-object (ssname selset i))
                :vlax-true
                ) ;_ end of vla-put-closed
              ) ;_ end of lambda
            ) ;_ end of function
          ) ;_ end of vl-catch-all-apply
        (setq i (1+ i)
              ) ;_ end of setq
        ) ;_ end of while
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.05.2012, 12:33
#5
Peter123


 
Регистрация: 04.04.2007
semsk
Сообщений: 9


СпасибО!
Peter123 вне форума  
 
Непрочитано 10.05.2012, 13:50
1 | #6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Код:
[Выделить все]
(defun c:cx ( / ss )
(setq ss (ssget '((0 . "lwpolyline"))))
(if ss (command "_pedit" "_m" ss ""  "_c" "")
        (princ " Нет полилиний."))
(princ)
)
Profan вне форума  
 
Автор темы   Непрочитано 10.05.2012, 14:32
#7
Peter123


 
Регистрация: 04.04.2007
semsk
Сообщений: 9


Круто! самый короткий вариант!!!
Скажите, так почему не работает _mpedit? Может она из експресса?
Peter123 вне форума  
 
Непрочитано 10.05.2012, 14:35
1 | #8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Да, mpedit из Express Tools. Я с этой командой не разбирался, она тупо спрашивает, надо ли преобразовывать полилинии в полилинии.
Я так думаю, что она не понимает LWPOLILYNE.
Profan вне форума  
 
Автор темы   Непрочитано 11.05.2012, 08:57
#9
Peter123


 
Регистрация: 04.04.2007
semsk
Сообщений: 9


Цитата:
Сообщение от Profan Посмотреть сообщение
Да, mpedit из Express Tools. Я с этой командой не разбирался, она тупо спрашивает, надо ли преобразовывать полилинии в полилинии.
Я так думаю, что она не понимает LWPOLILYNE.
Тогда наверное ей нужно еще какие то модули или дополнительные функции чтобы сработать.
Peter123 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно закрыть полилинию

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP - 2D полилинию в 3D Andrej LISP 22 25.04.2019 11:40
как программно создать полилинию? mamuk Программирование 5 30.05.2011 11:44
Программно заполнить рамку чертежами и открыть другую solo123 Программирование 2 25.02.2011 19:46
Нужен лисп (добавить вершину в полилинию) Димас LISP 39 04.07.2006 11:08
подскажите как программно начертить линии разных типов Александер Программирование 4 30.06.2005 07:17