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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замена текста мтекста и атрибутов с помощью lsp и dcl

Замена текста мтекста и атрибутов с помощью lsp и dcl

Ответ
Поиск в этой теме
Непрочитано 18.02.2010, 08:47 #1
Замена текста мтекста и атрибутов с помощью lsp и dcl
МИХАИЛCAD
 
Регистрация: 19.11.2009
Сообщений: 21

с помощью этих программ меняю на чертеже тексты и мтексты
а вот атрибуты не получается!
помогите пожалуйста!

Вложения
Тип файла: rar замена текста.rar (1.3 Кб, 170 просмотров)

Просмотров: 3604
 
Непрочитано 18.02.2010, 09:08
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Внес минимальные изменения - теперь и атрибуты обрабатываются. В файле DCL ничего не менял. В файле LSP:
  • Заменил в выборе объекта ENTSEL на NENTSEL.
  • Изменил в паре мест строки, выводимые в командную строку.
  • Добавил обновление объекта после модификации.
Вложения
Тип файла: lsp TEXTDWGLIST.LSP (3.7 Кб, 137 просмотров)
Do$ вне форума  
 
Непрочитано 18.02.2010, 10:07
#3
Кулик Алексей aka kpblc
Moderator

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


У меня ощущение, что код как-то странно написан (я про исходный). Зачем там строка типа (setq val (strcat val))? И сравнение
Код:
[Выделить все]
(if (= dval "")
    (setq dval "<>")
    )
Весьма странно. Полное ощущение, что еще хотелось изначально и размеры обрабатывать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.02.2010, 11:41
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Точно! И название функции DN_AppendDim. Наверное, сперва эта функция была создана именно для размеров, а потом какой-то Кулибин ее "перенацелил"
Do$ вне форума  
 
Автор темы   Непрочитано 19.02.2010, 01:51
#5
МИХАИЛCAD


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


кулибин это я
Класс!
работает как звэр!
Большое спасибо вам уважаемые!
Appreciated!
ну вот теперь каждый чертёжник может сгрузить это
и заменять на чертеже какието тексты на часто повторяющиеся словосочетания
а ещё я вставляю стандартные фразы с помощю подобных програм
вот они...

а вот программка с помощью которой я расставляю объекты на одинаковом расстоянии
как бы сделать так чтобы показывать Array direction и Distance for array за один приём?
Вложения
Тип файла: rar note.rar (2.2 Кб, 86 просмотров)
Тип файла: rar ARRM.rar (368 байт, 78 просмотров)

Последний раз редактировалось МИХАИЛCAD, 19.02.2010 в 02:14. Причина: добавление
МИХАИЛCAD вне форума  
 
Непрочитано 19.02.2010, 09:22
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Не смог просто заменить GETANGLE и GETDIST на GETPOINT, добавил еще обработку нажатия ESC (привычка уже, спасибо kpblc'у ). По-хорошему, еще надо избавляться от команд, благо есть VLA функции COPY и MOVE (это на будущее ).
Еще добавил восстановление системной переменной после завершения работы программы.
Вложения
Тип файла: lsp ARRM.LSP (1.3 Кб, 81 просмотров)
Do$ вне форума  
 
Непрочитано 19.02.2010, 11:15
#7
Кулик Алексей aka kpblc
Moderator

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


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

(defun c:arrm2 (/ adoc *error* selset base dist ang count copy new step)

  (defun *error* (msg)
    (if copy
      (vl-catch-all-apply
        (function
          (lambda ()
            (vla-erase copy)
            ) ;_ end of lambda
          ) ;_ end of function
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of if
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (and (= (type (setq selset (vl-catch-all-apply
                                   (function
                                     (lambda ()
                                       (ssget "_:L")
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                                   ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (= (type (setq base (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (initget 1)
                                     (getpoint "\nBase point <Cancel> : ")
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           (member (type (setq dist (vl-catch-all-apply
                                      (function
                                        (lambda ()
                                          (getdist base "\nDistance for array <Cancel> : ")
                                          ) ;_ end of lambda
                                        ) ;_ end of function
                                      ) ;_ end of vl-catch-all-apply
                               ) ;_ end of setq
                         ) ;_ end of type
                   (list 'real 'int)
                   ) ;_ end of member
           (member (type (setq ang (vl-catch-all-apply
                                     (function
                                       (lambda ()
                                         (initget 1)
                                         (getangle base "\nArray direction <Cancel> : ")
                                         ) ;_ end of lambda
                                       ) ;_ end of function
                                     ) ;_ end of vl-catch-all-apply
                               ) ;_ end of setq
                         ) ;_ end of type
                   (list 'real 'int)
                   ) ;_ end of member
           (= (type (setq count (vl-catch-all-apply
                                  (function
                                    (lambda ()
                                      (initget 7)
                                      (getint "\nNumber of object copies <Cancel> : ")
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'int
              ) ;_ end of =
           ) ;_ end of and
    (progn
      (setq selset (mapcar (function vlax-ename->vla-object)
                           ((lambda (/ tab item)
                              (repeat (setq tab  nil
                                            item (sslength selset)
                                            ) ;_ end setq
                                (setq tab (cons (ssname selset (setq item (1- item))) tab))
                                ) ;_ end of repeat
                              ) ;_ end of LAMBDA
                            )
                           ) ;_ end of mapcar
            step   0.
            ) ;_ end of setq
      (repeat (1- count)
        (setq new (polar base ang (setq step (+ step (/ dist (1- count))))))
        (foreach ent selset
          (vla-move (setq copy (vla-copy ent)) (vlax-3d-point base) (vlax-3d-point new))
          (setq copy nil)
          ) ;_ end of foreach
        ) ;_ end of repeat
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.02.2010, 12:02
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Ну да, как-то так
А если вот это:
Код:
[Выделить все]
(member (type
   (setq dist (vl-catch-all-apply
         (function
    (lambda ()
      (getdist base "\nDistance for array <Cancel> : ")
    ) ;_ end of lambda
         ) ;_ end of function
       ) ;_ end of vl-catch-all-apply
   ) ;_ end of setq
 ) ;_ end of type
 (list 'real 'int)
) ;_ end of member
(member (type
   (setq ang (vl-catch-all-apply
        (function
   (lambda ()
     (initget 1)
     (getangle base "\nArray direction <Cancel> : ")
   ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
   ) ;_ end of setq
 ) ;_ end of type
 (list 'real 'int)
) ;_ end of member
Заменить на:
Код:
[Выделить все]
(= (type
     (setq
       ang
 (vl-catch-all-apply
   (function
     (lambda ()
       (initget 1)
       (getpoint base "\nAngle & Direction point <Cancel> : ")
     ) ;_ end of lambda
   ) ;_ end of function
 ) ;_ end of vl-catch-all-apply
     ) ;_ end of setq
   ) ;_ end of type
   'list
) ;_ end of =
И после
Код:
Вставить
Код:
[Выделить все]
(setq dist (distance base ang)
      ang  (angle base ang)
) ;_ end of setq
То получится одним щелчком указывать и угол и расстояние. Не проверял, правда...
Do$ вне форума  
 
Непрочитано 19.02.2010, 13:36
#9
Кулик Алексей aka kpblc
Moderator

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


Вся проблема в том, что лично мой код будет работать только в мировой системе координат. Преобразование точек я не делал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замена текста мтекста и атрибутов с помощью lsp и dcl



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовое редактирование свойств атрибутов блоков kgb Программирование 11 13.06.2023 14:39
Групповой поиск и замена текста Torino Программирование 22 05.03.2016 23:00
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Поиск и замена текста на чертежах Autodesk Inventor Бриг Прочее ПО от Autodesk 4 21.01.2009 17:05
Создание базы данных атрибутов текста чертежа в VBA -still alive- Программирование 4 26.08.2008 15:10