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

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

Прошу помочь лиспиком

Ответ
Поиск в этой теме
Непрочитано 21.12.2007, 13:07 #1
Прошу помочь лиспиком
Pavka
 
Москва
Регистрация: 27.09.2007
Сообщений: 8

Подскажите как перевернуть атрибуты блока.
Надо во всех блоках проверить все атрибуты и если угол поворота текста 180 сделать его 0, а если 270 - 90.

Заранее СПАСИБО
Просмотров: 1639
 
Непрочитано 21.12.2007, 13:21
#2
Кулик Алексей aka kpblc
Moderator

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


Без обработки постоянных атрибутов и контроля состояния слоев:
Код:
[Выделить все]
(defun c:rot-attr (/ *error* adoc selset func_getattr)
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (defun func_getattr (blk / lst)
    (if (>= (vlax-safearray-get-u-bound
              (vlax-variant-value (vla-getattributes blk))
              1
              ) ;_ end of vlax-safearray-get-u-bound
            (vlax-safearray-get-l-bound
              (vlax-variant-value (vla-getattributes blk))
              1
              ) ;_ end of vlax-safearray-get-l-bound
            ) ;_ end of >=
      (foreach attr
                    (vlax-safearray->list
                      (vlax-variant-value (vla-getattributes blk))
                      ) ;_ end of vlax-safearray->list
        (setq lst (cons attr lst))
        ) ;_ end of foreach
      ) ;_ end of if
    (if (>= (vlax-safearray-get-u-bound
              (vlax-variant-value (vla-getconstantattributes blk))
              1
              ) ;_ end of vlax-safearray-get-u-bound
            (vlax-safearray-get-l-bound
              (vlax-variant-value (vla-getconstantattributes blk))
              1
              ) ;_ end of vlax-safearray-get-l-bound
            ) ;_ end of >=
      (foreach attr (vlax-safearray->list
                      (vlax-variant-value (vla-getconstantattributes blk))
                      ) ;_ end of vlax-safearray->list
        (setq lst (cons attr lst))
        ) ;_ end of foreach
      ) ;_ end of if
    lst
    ) ;_ end of defun


  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if (setq selset (ssget "_:L" '((0 . "INSERT") (66 . 1))))
    (foreach ent (mapcar 'vlax-ename->vla-object
                         (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
                         ) ;_ end of mapcar
      (foreach item (func_getattr ent)
        (cond
          ((equal (vla-get-rotation item) pi 1e-3)
           (vl-catch-all-apply '(lambda () (vla-put-rotation item 0.)))
           )
          ((equal (vla-get-rotation item) (* pi 1.5) 1e-3)
           (vl-catch-all-apply '(lambda () (vla-put-rotation item (* pi 0.5))))
           )
          ) ;_ end of cond
        (vl-catch-all-apply '(lambda () (vla-put-backward item :vlax-false)))
        ) ;_ end of foreach
      ) ;_ end of foreach
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Код не тестировал
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 21.12.2007 в 14:59. Причина: Код изменен. Добавлена обработка BackWard
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2007, 13:27
#3
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


Скорость ответа потрясающая.
Спасибо за отзывчивость
Pavka вне форума  
 
Непрочитано 21.12.2007, 13:33
#4
Кулик Алексей aka kpblc
Moderator

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


Я только что код поменял, так что копируй тот что есть
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2007, 13:40
#5
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


Как бы расширить возможности програмки:
1. запрашивала набор блоков, а не 1 блок
2. вертикальный текст оставляла вертикальным( 270 градусов меняла на 90 градусов а не на 0)
Pavka вне форума  
 
Автор темы   Непрочитано 21.12.2007, 13:43
#6
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


я за вами не успеваю ))
огромное СПАСИБО
Pavka вне форума  
 
Непрочитано 21.12.2007, 13:43
#7
Кулик Алексей aka kpblc
Moderator

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


Я ж говорю, что код поменял...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2007, 13:46
#8
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


Спасибо
Pavka вне форума  
 
Автор темы   Непрочитано 21.12.2007, 13:51
#9
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


вопрос второй
как в наборе блоков поменять аттрибут на его порядковый номер в этом наборе (грубо пронумеровать от 1 до ...)
Pavka вне форума  
 
Непрочитано 21.12.2007, 14:07
#10
Кулик Алексей aka kpblc
Moderator

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


А вот это уже в поиск по "нумерация атрибутов", например: http://www.google.ru/search?complete...1%81%D0%BA&lr=
Ну или вбить самостоятельно в окно поиска
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2007, 14:48
#11
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


ещё одна просьба:
в первом лиспике Флаг backwards сбрасывать для атрибутов
Pavka вне форума  
 
Непрочитано 21.12.2007, 14:59
#12
Кулик Алексей aka kpblc
Moderator

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


Загнал в #2. Но код не тестил - некогда
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2007, 16:10
#13
Pavka


 
Регистрация: 27.09.2007
Москва
Сообщений: 8


Спасибо всё работает
Pavka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Прошу помочь лиспиком

Реверс. Автоматическая пакетная печать множества рамок (форматов) из пространства модели и листов
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сборка больших схем в SCAD X-DeViL SCAD 165 05.12.2012 17:13
Mеталлическая лестница с деревянными ступенями. прошу совета shpyliova Архитектура 97 25.05.2009 05:38
помогите открыть файл, очень прошу Denis_iris AutoCAD 6 18.05.2007 11:00
Кто может помочь разобраться с АДТ 2006 Silavsale Прочее. Программное обеспечение 6 08.06.2006 12:52
Прошу рассмотреть предолжение по созданию ряда 3Д моделей annikov Прочее. Архитектура и строительство 3 19.01.2006 19:00