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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сквозная нумерация динамических блоков

Сквозная нумерация динамических блоков

Ответ
Поиск в этой теме
Непрочитано 18.09.2007, 17:45
Сквозная нумерация динамических блоков
zenon
 
Остекляем!!! Алюминим!!!
 
Москва
Регистрация: 21.02.2005
Сообщений: 3,825

Назрело!
В связи с введением динамических блоков начиная с AutoCAD2006, по роду моей деятельности появилась возможность рисовать монтажную схему стоек с указание ее длины в аттрибуте, с автоматическим изменением аттрибута в зависимости от удлинения стойки.
Поэтому назрел вопрос о сквозной нумерации, то бищь присвоении 2му аттрибуту номера стойки в зависимости от ее длины.
см. чертеж
[ATTACH]1190123036.dwg[/ATTACH]
Можно ли расстановку позиций реализовать программно?
ps предварительно расставив стойки.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
Просмотров: 88323
 
Непрочитано 22.12.2009, 10:02
#141
Crane


 
Регистрация: 07.05.2009
Астрахань
Сообщений: 103


Подскажите пожалуйста в каком посте взять работающий лисп-файл, как в нем указать нужный дин.блок и его свойства - для маркировки элементов по длинам. Как лисп подгружать в акад вроде ясно, а вызывать его с комстроки? Мой блок это стержень с изменяемой длиной. Будут два варианта горизонтальный и вертикальный.
Очень нужно, помогите плиз.
Вложения
Тип файла: dwg
DWG 2007
str.dwg (77.7 Кб, 2556 просмотров)
__________________
Debes, ergo potes

Последний раз редактировалось Crane, 23.12.2009 в 13:36.
Crane вне форума  
 
Непрочитано 14.09.2010, 13:04
#142
dafara


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


Здравствуйте.
Проектирую ОПС, необходимо промаркировать извещатели (сквозная нумерация) по всему проекту. Пользуюсь программами для маркировки, но при этом, если где-нибудь в середине проекта один извещатель удаляется, то нужно перенумеровывать все остальные заново. Есть ли возможность пронумеровать их так, чтобы при удалении одного элемента, вся остальная цепочка перестраивалась автоматически? Пример.dwg
dafara вне форума  
 
Непрочитано 14.09.2010, 13:57
#143
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от dafara Посмотреть сообщение
Здравствуйте.
Проектирую ОПС, необходимо промаркировать извещатели (сквозная нумерация) по всему проекту. Пользуюсь программами для маркировки, но при этом, если где-нибудь в середине проекта один извещатель удаляется, то нужно перенумеровывать все остальные заново. Есть ли возможность пронумеровать их так, чтобы при удалении одного элемента, вся остальная цепочка перестраивалась автоматически? Вложение 45267
Можно. Для этого следует подписаться на соответствующее событие, на которое повесите свой код обработки.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.09.2010, 14:06
#144
dafara


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


hwd, а можно по подробнее? Может есть пример какой-нибудь?
dafara вне форума  
 
Непрочитано 14.09.2010, 14:18
#145
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от dafara Посмотреть сообщение
hwd, а можно по подробнее? Может есть пример какой-нибудь?
Чтобы "поподробнее" - вам сначала следует озвучить язык, на котором пишете код.
Если на .Net, то (ежели мне не изменяет память) "поймать" удаление примитива можно подписавшись на событие ObjectErased объекта Database. Однако я не думаю, что стоит это делать, поскольку событие будет генерироваться при удалении каждого примитива (насколько я помню). Если вы выбрали и удалили сразу несколько примитивов, к примеру у вас 10 000 вхождений блоков и вы удаляете номера с 5 по 15, то после удаления каждого примитива будет выполняться перенумерация. Сами должны понимать, что это будет не самый быстрый процесс. Лучше создать спец. команду, которую можно было бы вызвать принудительно, после удаления примитивов. Эта команда должна выбирать нужные вам вхождения блоков и выполнять корректировку нумерации - так будет быстрее (имхо).
Если пишете на Lisp - тут я не подскажу, однако юзать реакторы в данном вопросе всё так же не советую.

Пример возни с указанным мною событием:
Код:
[Выделить все]
//Microsoft
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Autodesk
using acad = Autodesk.AutoCAD.ApplicationServices.Application;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

namespace Bushman.GpsmTools
{
    public class Class1
    {
        DocumentCollection dm = acad.DocumentManager;
        Document dwg;
        Database db;
        Editor ed;
        const string ns = "hwd";//namespace of commands

        public Class1()
        {
            Drawing = acad.DocumentManager.MdiActiveDocument;
        }

        Document Drawing
        {
            get { return dwg; }
            set
            {
                dwg = value;
                if (dwg != null)
                {
                    db = dwg.Database; ed = dwg.Editor;
                }
                else
                {
                    db = null; ed = null;
                }
            }
        }

        [CommandMethod(ns, "cmd", CommandFlags.Modal)]
        public void Cmd()
        {
            db.ObjectErased += new ObjectErasedEventHandler(db_ObjectErased);
            ed.WriteMessage("\nПодписка на событие 'ObjectErased' произведена.\n");
        }

        void db_ObjectErased(object sender, ObjectErasedEventArgs e)
        {
            string operation = "Восстановлен";
            if (e.Erased) operation = "Удалён";
            ed.WriteMessage(string.Format("\n{0} примитив: '{1}'; ObjectId = {2}", operation, e.DBObject, e.DBObject.ObjectId));
        }
    }
}
Удаляем и восстанавливаем сразу три примитива, выбрав их рамкой:

__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 14.09.2010 в 14:40.
hwd вне форума  
 
Непрочитано 14.09.2010, 15:36
#146
dafara


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


hwd, спасибо!
dafara вне форума  
 
Непрочитано 14.09.2010, 15:43
#147
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от dafara Посмотреть сообщение
hwd, спасибо!
Т.е. вопрос решен?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.09.2010, 15:47
#148
dafara


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


Да. Я просто понял, что такое мне не по зубам. Казалось, что проблема может решиться при помощи использования Полей, или связывания атрибутов блоков с таблицей, в которой можно было бы редактировать значения атрибутов. А на уровне программирования не осилить с моим уровнем знаний.
Спасибо за потраченное время..
dafara вне форума  
 
Непрочитано 26.10.2010, 17:00
#149
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Доброго дня.
Нумерация блоков штучка интересная.
А можно сделать "Нумерация атрибутов в блоках из внешнего файла Excel или txt".
1) Имеются множества блоков с атрибутом "Позиция".
2) Имеется готовый файл Excel с позициями оборудования в котором пронумерован первый столбец А
Ячейка А1 = 1
Ячейка А2 = 2
Ячейка А3 = 2а
Ячейка А4 = 3
Ячейка А5 = 3а
Ячейка А6 = 3б
Ячейка А7 = 4
и т.д.

При запуске LISP:
3) Запрос на выбор EXCEL файла (Запоминание этого Excel файла).
4) Запрос выбора позиции
(princ "\nВведите номер позиции")
5) Ввод вручную позиции (к примеру "2а")
6) Lisp сверяет введенную позицию "2а" с выбранным EXCEL файлом и столбом А
7) Если находит "2а" то запрос выбрать дин. блоки с атрибутом "Позиция" и вставить ячейку А3 (см. пункт 2 "Ячейка А3 = 2а").
8) После вставки позиции в атрибут, подсветить атрибут цветом.
9) Если не находит "2а" то повтор.
(princ "\nДанной позиции не существует")
(princ "\nВведите номер позиции")

10) При повторном запуске lisp сохранять предыдущий вод позиции.

10) И самое необходимое. Ради чего это все надо. При изменении позиций в ячейках этого же Excel файле (к примеру "2а" я заменил на "2б"), во всех дин блокам атрибуты с "2а" поменялись на "2б".
Eddicordo вне форума  
 
Непрочитано 26.10.2010, 17:28
#150
VoVoRoNaLe

Конструктор
 
Регистрация: 29.10.2007
Сообщений: 157


Цитата:
Сообщение от Eddicordo Посмотреть сообщение
А можно сделать "Нумерация атрибутов в блоках из внешнего файла Excel или txt".
Воспользуйтесь командами експорта и импорта атрибутов блоков AttIn и AttOut (Express Tools)
VoVoRoNaLe вне форума  
 
Непрочитано 27.10.2010, 17:11
#151
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


VoVoRoNaLe
На примитивном уровне то что надо. Но примитивный уровень для использования одноразовый.
Но суть конечно почти то что надо.
Исходя с команды AttOut:
1) Сохраняет только указанные конкретные блоки BLOCKNAME *U166.
Как быть если нужно добавить или удалить блоки с атрибутами к предыдущему списку в txt?

2) Вытягивает все атрибуты и лишнюю информацию в txt.
Как убрать лишнюю информацию, а оставить только атрибут "Позиция" для вывода в txt?

3) Сохраняет порядок записи txt в зависимости от последовательности указаний блоков.
Как отсортировать по алфавиту?

4) Если выделить несколько блоков одинаковых один в один. Создаст две разных записи. Хотя позиция может быть одинаковая.
Как свести все записи с одинаковыми атрибутами в одно?

С командой AttIn вопросов практически нет. Ну разве что как при пересчете подсветить все измененные атрибуты?

Идея то какова всего этого.
Имеется спецификация в которой каждому оборудованию присваивается позиция.
"Температура" ее позиция "1"
"Гильза для температуры" ее позиция "1а"
"Давление" ее позиция "2"
"Перепад давления" ее позиция "3"
и.д.

Эти позиции проставляются на чертеже. Причем на чертеже может быть как одна позиция "2" так и десять позиций "2".
Позиции имею жесткую сортировку 1а, 1б, 2, 3, 4а, 4б, 4в, 5 и т.д.
И во время проектирования могут добавляться (удалятся) новые блоки с атрибут "Позиция" которые должны встать между поз. 2 и 3. Тобиш все остальные поз. после 3 смещаются на единицу. Типа 1а, 1б, 2, 3, 4, 5а, 5б, 5в, 6.

Последний раз редактировалось Eddicordo, 27.10.2010 в 17:28.
Eddicordo вне форума  
 
Непрочитано 27.10.2010, 17:29
#152
saa


 
Регистрация: 25.09.2008
Новосибирск
Сообщений: 218


Если обрабатывать в Excel, то большинство вопросов легко решаются:
1) скопировать вновь извлеченные и добавить к предыдущему списку;
2) удалить лишние столбцы в Excel;
3) сортировка в Excel;
4) у одинаковых блоков одинаковое имя, использовать атрибут, содержащий поле с именем блока, по имени сортировать в Excel. Если блок динамический, то использовать атрибуты со значениями параметров блока, по ним и сортировать.
__________________
www.saa-blogs.blogspot.com
saa вне форума  
 
Непрочитано 28.10.2010, 09:56
#153
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Да тут не суть важно где хранится сам список позиций. В Excel в txt, хоть сам AutoCad в табличной форме хранит позиции, либо другая внешняя программа.
Главное что бы:
1) Хранился список позиций.
2) Редактирование этого списка (добавить, удалить).
3) Сортировка списка по увеличению цифр.
4) Скрещение одинаковых атрибутов в одну.
5) Расстановка позиций со списка в разные блоки чертежа и чертежей.
6) При изменении списка позиций обновление всех блоков в одном и нескольких чертежах.
7) Подсвечивание внесенных атрибутов в список и измененных атрибутов в блоках.

Это касается не только позиций. А также можно будет использовать для расстановки номеров кабеля.
Короче говоря каждый найдет для себя применение.


Раньше использовал вот эту программу.
http://dwg.ru/dnl/101
Но она мало эффективная. При количестве (ячеек) позиций более 50 шт. начинает очень сильно тормозить. Не работает с атрибутами.
Нет возможности добавить новую позицию (ячейку) по сортировке. Приходилось новую позицию создавать в самом низу.
Короче не прижилась эта программка.
Для использования обычного пользователя очень заумная, тяжелая для использования.
Есть MyExpress.lsp кому интересно могу выложить поковыряться

Последний раз редактировалось Eddicordo, 28.10.2010 в 11:19.
Eddicordo вне форума  
 
Непрочитано 28.10.2010, 12:46
#154
VoVoRoNaLe

Конструктор
 
Регистрация: 29.10.2007
Сообщений: 157


Согласен с saa. Решаю ети задачи с помощю Excel. И многоразовых задач еще не встречал.
VoVoRoNaLe вне форума  
 
Непрочитано 28.10.2010, 13:45
#155
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Цитата:
Сообщение от VoVoRoNaLe Посмотреть сообщение
Согласен с saa. Решаю ети задачи с помощю Excel.
Можно продемонстрировать на примере поэтапно.
Какой ход всего процесса.
Цитата:
Сообщение от VoVoRoNaLe Посмотреть сообщение
И многоразовых задач еще не встречал.
Возьмем примеры:
1) Проект в разработке.
Вы уже пронумеровали все позиции по всем чертежам. Во время работы к Вам приходят технологи с изменениями которые влекут за собой изменения в позициях.
Вам необходимо пронумеровать абсолютно все позиции заново.
Нумеруете в ручную изменяя атрибуты?
2) Проект готовый.
Заказчик захотел внести изменения которые опять же влекут за собой изменения позиций и вам же опять необходимо пронумеровать все позиции.
Нумеруете в ручную изменяя атрибуты?
Eddicordo вне форума  
 
Непрочитано 03.11.2010, 11:12
#156
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Что все вбивают позиции вручную? И при изменения обновляют так же в ручную?
Или может кто то поделится дельным советом как проставлять удобно позиции и при изменениях, добавлении, удалении в одном месте обновлять их хоть каким то образом.
Сюда же можно отнести и Номера кабелям. Одни и те же номера на 5-20 чертежах. И при смещении или замене номеров кабеля обновление согласно какого то списка. В одном месте поменял позицию, номер кабеля. Обновил чертежи и получил результат и сокращение времени на пару дней.
Eddicordo вне форума  
 
Непрочитано 28.02.2011, 21:49
#157
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 54
<phrase 1= Отправить сообщение для Farest-1 с помощью Skype™


И так позаимствовав у Wetr его блоки решил пронумеровать кассеты на фасаде расставив использовал код от VVA в посте №134.
Всё бы хорошо но по подаются одинаковые блоки но с разной номерацией .
Файл с блоками прикладываю.
Вложения
Тип файла: rar Фасад.rar (906.4 Кб, 106 просмотров)
Farest-1 вне форума  
 
Непрочитано 02.03.2011, 23:35
#158
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 54
<phrase 1= Отправить сообщение для Farest-1 с помощью Skype™


Выкладываю спецификацию (в самом файле помечены желтым цветом повторяющиеся нумерации).
Кстати возможно ли в коде добавить ещё одну операцию например
есть 2-ва размера 744мм и 745мм -либо округлял или уменьшал.
Прошу в помощи в правке кода.

Код:
[Выделить все]
 ;_ Маркировка динамических блоков для Wetr
(defun c:NDB_W ( / adoc ss name bname lst lstLen poz attTo 
                            *error* dynProp1 dynProp2 dp1 dp2 i
              )
;;;================================================
;;;======== НАСТРОЙКИ ПРОГРАММЫ ===================
;;;================================================
 (vl-load-com)
 (defun *error* (msg)(princ msg)(vla-EndUndoMark adoc)) 
  (setq bname "*") ;_Имя блока 
  (setq dynProp1 "Высота(H) кассеты") ;_Имя динамического свойства1
  (setq dynProp2 "Ширина(B) кассеты") ;_Имя динамического свойства1
  (setq attTo "NAME") ;_Имя аттрибута куда вбивать

  (setq adoc (vla-get-activedocument (vlax-get-acad-object))) 
;;;============================================================= 
;;;====================== MAIN PART ============================ 
;;;============================================================= 
  (vla-StartUndoMark adoc)
  (setq *PREF* (mip-conv-to-str *PREF*))
  (setq *SUFF* (mip-conv-to-str *SUFF*))
  (princ "\nВведите префикс или Пробел - нет <")(princ *PREF*)(princ ">: ")
  (setq poz (getstring t))
  (if (/= poz "")(setq *PREF* poz))(if (= poz " ")(setq *PREF* ""))
  (princ "\nВведите суффикс или Пробел - нет <")(princ *SUFF*)(princ ">: ")
  (setq poz (getstring t))
  (if (/= poz "")(setq *SUFF* poz))(if (= *SUFF* " ")(setq *SUFF* ""))
  (if (and (setq ss (ssget  '((0 . "INSERT")(66 . 1))))
	   (princ "\nЭтап 1. Построение списка блоков.")
           (setq lstLen (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
           )
    (progn
      (princ "\nЭтап 2. Анализ блоков.")
      (setq i 0  lstLen (mapcar 'vlax-ename->vla-object lstlen))
      (foreach blk lstLen
        (setq name (cond 
                     ((and (vlax-property-available-p blk 'isdynamicblock) 
                           (= (vla-get-isdynamicblock blk) :vlax-true) 
                           ) ;_ end of and 
                      (vla-get-effectivename blk) 
                      ) 
                     (t (vla-get-name blk)) 
                     ) ;_ end of cond
	      i (1+ i)
              ) ;_ end of setq 
        (if (and (wcmatch (strcase name)(strcase bname))
		 (setq dp1 (GetDynamicBlockPropertyNameValue blk dynProp1))
		 (setq dp2 (GetDynamicBlockPropertyNameValue blk dynProp2))
		 )
	  (progn
          (setq lst (cons (strcat (itoa(fix dp1))":"(itoa(fix dp2))) lst))
	  )
	  ) 
         ;_ end of if 
        ) ;_ end of foreach
      (princ "... Обработано ")(princ i)(princ " блоков")
      (princ "\nЭтап 3. Построение списка из уникальных значений.")
      (setq lst (mip_MakeUniqueMembersOfList lst))
      (princ "\nЭтап 4. Обновление атрибутов блоков.")(setq i 0)
      (foreach blk lstLen
        (setq name (cond 
                     ((and (vlax-property-available-p blk 'isdynamicblock) 
                           (= (vla-get-isdynamicblock blk) :vlax-true) 
                           ) ;_ end of and 
                      (vla-get-effectivename blk) 
                      ) 
                     (t (vla-get-name blk)) 
                     ) ;_ end of cond
	      i (1+ i)
              ) ;_ end of setq 
        (if (and (wcmatch (strcase name)(strcase bname))
		 (setq dp1 (GetDynamicBlockPropertyNameValue blk dynProp1))
		 (setq dp2 (GetDynamicBlockPropertyNameValue blk dynProp2))
		 (setq poz (vl-position (strcat (itoa(fix dp1))":"(itoa(fix dp2))) lst))
		 )
	  (progn
          (mip-block-setattr-bylist blk
              (list (cons (strcase attTo)(strcat *PREF* (itoa (1+ poz)) *SUFF*))))
	  )
	  ) 
         ;_ end of if 
        ) ;_ end of foreach
      (princ "... Обновлено ")(princ i)(princ " атрибутов в блоках \n")
      (vla-regen adoc acactiveviewport) 
      ) ;_ end of progn 
    ) ;_ end of if
  (vla-EndUndoMark adoc)
  (princ) 
  )

(defun GetDynamicBlockPropertyList (obj / lstProperties)
 (if (and (vlax-property-available-p obj "IsDynamicBlock")
          (= (vla-get-IsDynamicBlock obj) :vlax-true)
          (setq lstProperties (vlax-safearray->list 
                                           (variant-value 
                                            (vla-GetDynamicBlockProperties obj)))))
  (progn
   (mapcar '(lambda (x)(list (vla-get-propertyname X)
                             (variant-value (vla-get-value X))
                             x
                             )) 
           lstProperties))))
(defun GetDynamicBlockPropertyNameValue ( obj PropertyName / Plist)
  (and
  (setq PropertyName (strcase PropertyName))
  (setq Plist (GetDynamicBlockPropertyList obj))
  (setq Plist (car(vl-remove-if-not '(lambda (x)
                                   (= (strcase (car x)) PropertyName))
                Plist
                ))
        )
  )
   (cadr Plist)
  )
(defun mip-block-setattr-bylist (obj att_list / txt lst) 
(if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj))) 
(setq att_list (mapcar '(lambda(x)(cons (strcase (mip-conv-to-str(car x)))(mip-conv-to-str(cdr x)))) att_list)) 
  (if (and obj 
           (not(vlax-erased-p obj)) 
           (= (vla-get-ObjectName obj) "AcDbBlockReference") 
      (eq :vlax-true (vla-get-HasAttributes obj)) 
      (vlax-property-available-p obj 'Hasattributes) 
      (vlax-write-enabled-p obj) 
      ) 
    (vl-catch-all-apply 
      (function 
   (lambda   () 
          (foreach at (vlax-invoke obj 'Getattributes) 
            (if (setq lst (assoc(strcase(vla-get-TagString at)) att_list)) 
              (vla-put-TextString at (cdr lst)) 
            ) 
            ) 
          ) 
        ) 
      ) 
    ) 
  ) 
(defun mip-conv-to-str (dat) 
  (cond ((= (type dat) 'INT)(setq dat (itoa dat))) 
         ((= (type dat) 'REAL)(setq dat (rtos dat 2 12))) 
        ((null dat)(setq dat "")) 
        (t (setq dat (vl-princ-to-string dat))))) 
(defun mip-put-hyperlink (ENAME URLDescription) 
  (if (eq (type ENAME) 'ENAME) 
    (setq ENAME (vlax-ename->vla-object ENAME)) 
  ) ;_ end of if 
  (vlax-for hyp (vla-get-hyperlinks ENAME) (vla-delete hyp)) 
  (vla-add (vla-get-hyperlinks ENAME) 
           "about:blank" 
           URLDescription 
  ) ;_ end of vla-add 
) ;_ end of DEFUN 

;;;Удаляет одинаковые (дубликаты) элементы из списка 
;;;(defun mip_MakeUniqueMembersOfList  ( lst / OutList head) 
;;;  (while lst 
;;;    (setq head (car lst) 
;;;          lst (vl-remove head lst) 
;;;          OutList (append OutList (list head)))) 
;;;  OutList 
;;;  ) 
(defun mip_MakeUniqueMembersOfList  ( lst / OutList head) 
  (while lst 
    (setq head (car lst) 
          lst (vl-remove-if '(lambda(pt)(equal pt head 1e-6)) lst) 
          OutList (append OutList (list head)))) 
  OutList 
  ) 
(defun member-i ( lst num / i) 
 (setq i 0)(while (and lst (not(equal (car lst) num 1e-6))) 
    (setq i (1+ i) lst(cdr lst))) 
  (if (equal (car lst) num 1e-6) i nil)) 
  (defun get-all-atts (obj) 

  (if (and obj 
      (eq :vlax-true (vla-get-HasAttributes obj)) 
      (vlax-property-available-p obj 'Hasattributes) 
       
      ) 
    (vl-catch-all-apply 
      (function 
   (lambda   () 
     (mapcar (function (lambda (x) 
               (cons (vla-get-TagString x) 
                (vla-get-TextString x) 
               ) 
             ) 
        ) 
        (append (vlax-invoke obj 'Getattributes) 
           (vlax-invoke obj 'Getconstantattributes) 
        ) 
     ) 
   ) 
      ) 
    ) 
  ) 
)
Вложения
Тип файла: rar Специф.rar (19.6 Кб, 120 просмотров)
Farest-1 вне форума  
 
Непрочитано 02.03.2011, 23:36
#159
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Farest-1 Посмотреть сообщение
в самом файле помечены желтым цветом повторяющиеся нумерации
Файла что-то не вижу... Или имеется в виду файл в #157?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.03.2011, 23:39
#160
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 54
<phrase 1= Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Файла что-то не вижу... Или имеется в виду файл в #157?
Забыл изначально прикрепить (сейчас всё нормально).
Farest-1 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сквозная нумерация динамических блоков

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

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