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

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

Нужен лисп, проставляющий высоту точек

Ответ
Поиск в этой теме
Непрочитано 05.12.2006, 16:03 #1
Нужен лисп, проставляющий высоту точек
ВоваН
 
Дороги, Конструкции, Тоннели
 
Сочи
Регистрация: 20.05.2004
Сообщений: 102

Есть:
1. Точка с координатой Z=0
2. Рядом с точкой стоит высотная отметка (текст)
3. Таких точек 2500


Надо:
Вогнать отметку в координату Z
Просмотров: 3712
 
Непрочитано 05.12.2006, 16:07
#2
Кулик Алексей aka kpblc
Moderator

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


Ха, а текст - это что? просто текст? Блок с атрибутом? Если блок, то надо знать тэг атрибута.
---
Добавлено: и все равно руками надо будет сопоставлять точка - текст. Любое иное решение череповато боком.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2006, 16:09
#3
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Просто текст

Согласен на ручное тыкание
ВоваН вне форума  
 
Непрочитано 05.12.2006, 16:14
#4
Кулик Алексей aka kpblc
Moderator

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


Тогда попробуй такое:
Код удален из-за неправильного подхода.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2006, 16:20
#5
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


appload прошел,
какой командой запустить?

Команда: _chpo
Неизвестная команда "CHPO". Для вызова справки нажмите F1.
ВоваН вне форума  
 
Непрочитано 05.12.2006, 16:24
#6
Кулик Алексей aka kpblc
Moderator

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


chpo
То, что идет после символов (defun c:
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2006, 16:29
#7
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Команда: appload
Z.lsp успешно загружено.
Z.lsp добавлено в список автозагрузки.
Z.lsp успешно загружено.


Команда: ; ошибка: неверный тип аргумента: numberp: nil

Команда:
Команда: ; ошибка: неверный тип аргумента: numberp: nil

Команда:
Команда: chpo
Неизвестная команда "CHPO". Для вызова справки нажмите F1.
ВоваН вне форума  
 
Непрочитано 05.12.2006, 16:48
#8
Кулик Алексей aka kpblc
Moderator

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


Сорри, абшибся капитально. Спробуй:
Код:
[Выделить все]
(defun c:chpo (/                       adoc
               _kpblc-get-ent-no-error-by-type
               pt                      txt
               _kpblc-ent-modify-autoregen
               *error*
               )

  (defun *error* (msg)
    (VL-CATCH-ALL-APPLY
      '(LAMBDA ()
         (mapcar '(LAMBDA (x)
                    (vla-Highlight (vlax-ename->vla-object x) :vlax-false)
                    ) ;_ end of LAMBDA
                 (list pt txt)
                 ) ;_ end of mapcar
         ) ;_ end of LAMBDA
      ) ;_ end of VL-CATCH-ALL-APPLY
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (defun _kpblc-ent-modify-autoregen (ent        bit        value
                                      ext_regen  /          ent_list
                                      old_dxf    new_dxf    layer_dxf70
                                      )
    (if (not
          (and
            (or
              (= (strcase (cdr (assoc 0 (entget ent))) nil) "STYLE")
              (= (strcase (cdr (assoc 0 (entget ent))) nil) "DIMSTYLE")
              (= (strcase (cdr (assoc 0 (entget ent))) nil) "LAYER")
              ) ;_ end of or
            (= bit 100)
            ) ;_ end of and
          ) ;_ end of not
      (progn
        (setq ent_list (entget ent)
              new_dxf  (cons bit
                             (if (and (= bit 62) (= (type value) 'str))
                               (if (= (strcase value) "BYLAYER")
                                 256
                                 0
                                 ) ;_ end of if
                               value
                               ) ;_ end of if
                             ) ;_ end of cons
              ) ;_ end of setq
        (if (not (equal new_dxf (setq old_dxf (assoc bit ent_list))))
          (progn
            (entmod (if old_dxf
                      (subst new_dxf old_dxf ent_list)
                      (append ent_list (list new_dxf))
                      ) ;_ end of if
                    ) ;_ end of entmod
            (if ent_regen
              (entupd ent)
              (redraw ent)
              ) ;_ end of if
            ) ;_ end of progn
          ) ;_ end of if
        ) ;_ end of progn
      ) ;_ end of if
    ent
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (while
    (and (setq pt (ssget "_:S" '((0 . "POINT"))))
         (not (vla-highlight
                (vlax-ename->vla-object (setq pt (ssname pt 0)))
                :vlax-true
                ) ;_ end of vla-highlight
              ) ;_ end of not
         (setq txt (ssget "_:S" '((0 . "*TEXT"))))
         (not (vla-highlight
                (vlax-ename->vla-object (setq txt (ssname txt 0)))
                :vlax-true
                ) ;_ end of vla-highlight
              ) ;_ end of not
         ) ;_ end of and
     (_kpblc-ent-modify-autoregen
       pt
       10
       (list (car (cdr (assoc 10 (entget pt))))
             (cadr (cdr (assoc 10 (entget pt))))
             (atof (cdr (assoc 1 (entget txt))))
             ) ;_ end of list
       t
       ) ;_ end of _kpblc-ent-modify-autoregen
     (mapcar '(LAMBDA (x)
                (vla-Highlight (vlax-ename->vla-object x) :vlax-false)
                ) ;_ end of LAMBDA
             (list pt txt)
             ) ;_ end of mapcar
     ) ;_ end of while
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2006, 17:14
#9
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Спасибо

Только там нужно выделить обьекты 2 раза
ВоваН вне форума  
 
Непрочитано 05.12.2006, 17:19
#10
Кулик Алексей aka kpblc
Moderator

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


Ну а как иначе-то. Сначала выбирается точка, которую менять. Потом - текст, с которого берем значения. По-моему, достаточно логично. Или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2006, 17:30
#11
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


ОК

Понял, отстал

Спасибо большое !!!
ВоваН вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп, проставляющий высоту точек

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

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