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

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

Автонумерация на пользу слаботочнику. есть идеи?

Ответ
Поиск в этой теме
Непрочитано 14.06.2013, 13:43 #1
Автонумерация на пользу слаботочнику. есть идеи?
zastroishik
 
Регистрация: 14.06.2013
Сообщений: 3

Всем гутен так! сразу скажу - с лиспом не дружу, пока по крайней мере, поэтому прошу помощи, если она возможна.
Суть: При черчении планов пожарной сигнализации приходится расставлять большое количество датчиков и их пронумеровывать по порядку. номер датчика выглядит следующим образом: ВТН.x/y , где BTH - тип датчика (BTH- дымовой, BTM - ручной, BTK - тепловой и т.д.), который связан с условным обозначением, х - номер шлейфа, y - порядок датчика в шлейфе. Бывает так, что какой-нибудь датчик в середине шлейфа пропадает, или при нумерации в ручную пропускается, и приходится все перенумеровывать. Это бесит. В этом суть проблемы.
Мое видение ее решения: я создаю блоки условного обозначения каждого типа датчика с обозначением типа BTH над ним. Далее есть какая-то программа (она как раз и нужна) с помощью которой я соединяю полилинией все датчики по порядку, в вершинах полилинии проставляется номер с приффексом "х/" и номером "y". Расположение номера вершина и типа датчика в моем блоке я подгадываю так, чтобы при наложении одно следовало за дугим. Полилиния чертилась в невидимом слое, а номер вершины - в слое который мне нужен. Далее - если необходимо удалить датчик - я удаляю вершину полилинии (или добавляю если наоборот) и все перенумеровывается.

Вот, в принципе, что хочется иметь)))
покапаться и неглубоко (а может и глубоко) разобраться с автолиспом может быть смогу и сам, и, как вариант, сделаю (правда пока ума не приложу как) такой лисп на основе лиспа num
Код:
[Выделить все]
 (defun c:num (/ oldPref oldSuf oldStart curStr newNum
           actDoc actSp oldEcho oldSize *error*)

  (defun *error* (msg)
    (setvar "CMDECHO" oldEcho)
    (princ)
    ); end *error*

  (vl-load-com)
  (if(not num:Size)(setq num:Size(getvar "DIMTXT")))
  (if(not num:Pref)(setq num:Pref ""))
  (if(not num:Suf)(setq num:Suf ""))
  (if(not num:Num)(setq num:Num 1))
  (setq oldPref num:Pref
        oldSuf num:Suf
        oldStart num:Num
   oldSize num:Size
   actDoc(vla-get-ActiveDocument
      (vlax-get-acad-object))
   oldEcho(getvar "CMDECHO")
   ); end setq
  (setvar "CMDECHO" 0)
  (if(= (vla-get-ActiveSpace actDoc) 1)
    (setq actSp(vla-get-ModelSpace actDoc))
    (setq actSp(vla-get-PaperSpace actDoc))
    ); end setq
  (setq num:Size
    (getreal
      (strcat "\nSpecify text size <"(rtos num:Size)">: ")))
  (if(null num:Size)(setq num:Size oldSize))
  (setq num:Pref
    (getstring T
      (strcat "\nType prefix: <"num:Pref">: ")))
  (if(= "" num:Pref)(setq num:Pref oldPref))
  (if(= " " num:Pref)(setq num:Pref ""))
  (setq num:Suf
    (getstring T
      (strcat "\nType suffix: <"num:Suf">: ")))
  (if(= "" num:Suf)(setq num:Suf oldSuf))
  (if(= " " num:Suf)(setq num:Suf ""))
  (setq num:Num
    (getint
      (strcat "\nEnter start number <"(itoa num:Num)">: ")))
  (if(null num:Num)(setq num:Num oldStart))
(while T
  (setq curStr(strcat num:Pref(itoa num:Num)num:Suf)
        newNum(vla-AddText actSp
        curStr (vlax-3d-point
       '(0.0 0.0 0.0)) num:Size))
  (vla-put-Alignment newNum acAlignmentMiddleCenter)
  (command "_.copybase"(trans '(0.0 0.0 0.0)0 1)(entlast)"")
  (command "_.erase" (entlast) "")
  (command "_.pasteclip" pause)
    (setq num:Num(1+ num:Num))
  ); end while
  (princ)
  ); end of c:num


(defun c:renum (/ oldPref oldSuf oldStart curText curStr)
  (vl-load-com)
  (if(not rnm:Pref)(setq rnm:Pref ""))
  (if(not rnm:Suf)(setq rnm:Suf ""))
  (if(not rnm:Start)(setq rnm:Start 1))
  (setq oldPref rnm:Pref
        oldSuf rnm:Suf
        oldStart rnm:Start); end setq
  (setq rnm:Pref
    (getstring T
      (strcat "\nType prefix: <"rnm:Pref">: ")))
  (if(= "" rnm:Pref)(setq rnm:Pref oldPref))
  (if(= " " rnm:Pref)(setq rnm:Pref ""))
  (setq rnm:Suf
    (getstring T
      (strcat "\nType suffix: <"rnm:Suf">: ")))
  (if(= "" rnm:Suf)(setq rnm:Suf oldSuf))
  (if(= " " rnm:Suf)(setq rnm:Suf ""))
  (setq rnm:Start
    (getint
      (strcat "\nEnter start number <"
         (itoa rnm:Start)">: ")))
  (if(null rnm:Start)(setq rnm:Start oldStart))
(while T
  (setq curStr(strcat rnm:Pref(itoa rnm:Start)rnm:Suf))
    (setq curText
      (car
        (nentsel "\nSelect DText/MText/Attribute or Esc to Quit ")))
  (if
    (and
      curText
      (member(cdr(assoc 0(entget curText))) '("TEXT" "MTEXT" "ATTRIB"))
      ); end and
    (progn
    (vla-put-TextString
      (vlax-ename->vla-object curText)curStr)
    (setq rnm:Start(1+ rnm:Start))
    ); end progn
    (princ "\nThis is not DText or MText! ")
    ); end if
  ); end while
  (princ)
  ); end of c:renum
.
вот только как вершину полилинии заставить нумероваться или хотя бы заставить обзавестись атрибутом - я не знаю и не могу нигде узнать.

Помогите, светлые головы!!!!
Просмотров: 3978
 
Непрочитано 14.06.2013, 14:04
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


посмотри что-нибудь из этого списка
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.06.2013, 14:26
#3
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


http://dwg.ru/dnl/11290

http://www.opsonline.ru/prog10

Последний раз редактировалось Nike, 14.06.2013 в 14:43.
Nike вне форума  
 
Непрочитано 14.06.2013, 15:48
#4
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


http://forum.dwg.ru/showthread.php?t=8707
не автокад, но зато можно органиовать практически любую нумерацию
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автонумерация на пользу слаботочнику. есть идеи?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Летние Олимпийские игры 2012. Болеем за наших! T-Yoke Разное 303 13.09.2012 11:56
есть идеи, как запроектировать гостиницу с вращающимся этажом? akka_dreamer Прочее. Архитектура и строительство 29 24.03.2010 15:26