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

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

Нумерация мультивыносок.

Ответ
Поиск в этой теме
Непрочитано 15.11.2011, 14:44 #1
Нумерация мультивыносок.
shartal
 
Регистрация: 12.08.2009
Сообщений: 447

На форуме есть несколько чудесных лиспов которые нумеруют атрибуты и текст, но с мультивыносками ни один не работает. Нельзя ли как-то исправить ситуацию.

Последний раз редактировалось shartal, 15.11.2011 в 15:41.
Просмотров: 52899
 
Непрочитано 15.11.2011, 17:18
#2
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


Цитата:
но с мультивыносками ни один не работает.
Есть например нумерация по ходу расстановки.
http://forum.dwg.ru/showthread.php?p=814881&#post814881
Oliver_88 вне форума  
 
Непрочитано 15.11.2011, 18:55
2 | #3
ASLYS

Delineante
 
Регистрация: 26.12.2006
Ростов-на-Дону/Madrid
Сообщений: 396
<phrase 1=


Цитата:
Сообщение от shartal Посмотреть сообщение
На форуме есть несколько чудесных лиспов которые нумеруют атрибуты и текст, но с мультивыносками ни один не работает. Нельзя ли как-то исправить ситуацию.
это на каком-то другом форуме не работает, а на этом все работает как надо
Вложения
Тип файла: lsp AsmiTools_Renum.lsp (3.9 Кб, 1209 просмотров)
ASLYS вне форума  
 
Непрочитано 16.11.2011, 09:35
#4
VVA

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


Здесь Альтернатива нумерации атрибутов блоков есть еще подборка.
Да и у гугла можно спросить
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.11.2011, 10:51
#5
shartal


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


Спасибо AsmiTools_Renum.lsp то что надо.
shartal вне форума  
 
Непрочитано 16.11.2011, 11:38
#6
Nata1

Инженер
 
Регистрация: 10.11.2008
Владимирская обл., пос. Вольгинский
Сообщений: 147


А как сохранить код по ссылке сообщения #2? По ссылке интересует сообщение #3, а там реактор. objectAppended.LSP? Потом надо в скобках название команды вводить, чтобы выполнилась.
__________________
AutoCAD 2014
Nata1 вне форума  
 
Непрочитано 16.11.2011, 14:21
#7
ASLYS

Delineante
 
Регистрация: 26.12.2006
Ростов-на-Дону/Madrid
Сообщений: 396
<phrase 1=


команду можно вводить как обычно _copy
ASLYS вне форума  
 
Непрочитано 02.04.2013, 14:21
#8
Garand


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


В AsmiTools_Renum не получается обнулить ранее введенное значение суффикса или префикса. Нажатие пробела, как указано в описании не помогает. Системную переменную CMDECHO менял - безрезультатно.
В чем может быть дело?
Поправка: при вводе пробела в командной строке значение обнуляется, при вводе в окошке динамического ввода - нет.

Последний раз редактировалось Garand, 02.04.2013 в 15:21.
Garand вне форума  
 
Непрочитано 21.07.2016, 12:02
#9
Джеймс Борщ


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


Допилил в AsmiTools_Renum возможность изменять инкремент:
Код:
[Выделить все]
 (defun c:renum (/ oldPref oldSuf oldStart oldIncr 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))
  (if(not rnm:Incr)(setq rnm:Incr 1))
  (setq oldPref rnm:Pref 
        oldSuf rnm:Suf
	oldStart rnm:Start
        oldIncr rnm:Incr); end setq 
  (setq rnm:Pref 
    (getstring T 
      (strcat "\nPrefix: <"rnm:Pref">: "))) 
  (if(= "" rnm:Pref)(setq rnm:Pref oldPref)) 
  (if(= " " rnm:Pref)(setq rnm:Pref "")) 
  (setq rnm:Suf 
    (getstring T 
      (strcat "\nSuffix: <"rnm:Suf">: "))) 
  (if(= "" rnm:Suf)(setq rnm:Suf oldSuf)) 
  (if(= " " rnm:Suf)(setq rnm:Suf "")) 
  (setq rnm:Start 
    (getint 
      (strcat "\nStarting number <" 
         (itoa rnm:Start)">: "))) 
  (if(null rnm:Start)(setq rnm:Start oldStart))
  (setq rnm:Incr ; increment 
    (getint 
      (strcat "\nIncrement <" 
         (itoa rnm:Incr)">: "))) 
  (if(null rnm:Incr)(setq rnm:Incr oldIncr)) ; end of increment
     (while T 
       (setq curStr(strcat rnm:Pref(itoa rnm:Start)rnm:Suf)) 
         (setq curText 
           (car 
             (nentsel "\n<<< Pick TEXT, MTEXT, MULTILEADER or ATTRIBUTE or press Esc to quit >>> "))) 
       (if 
         (and 
           curText 
           (member(cdr(assoc 0(entget curText))) '("TEXT" "MTEXT" "ATTRIB" "MULTILEADER")) 
           ); end and 
         (progn 
         (vla-put-TextString 
           (vlax-ename->vla-object curText)curStr) 
            (setq rnm:Start( + rnm:Incr rnm:Start)) ; added increment
         ); end progn 
        (princ "\n<!> This is not DText or MText <!>") 
        ); end if 
       ); end while 
   (princ) 
  ); end of c:renum
А кто-нибудь знает как отключить игнорирование пробелов в окне динамического ввода?
Джеймс Борщ вне форума  
 
Непрочитано 22.07.2016, 19:30
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,003


возможно, что это ключ T в
Код:
Сергей812 вне форума  
 
Непрочитано 22.07.2016, 19:52
#11
Кулик Алексей aka kpblc
Moderator

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


Только про DYNMODE не забывайте: http://adn-cis.org/getstring-and-dynmode.html
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.07.2016, 19:41
#12
Olga_выноски


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


Хелп ми!!!
Помогите разрешить наболевшее. Мы рисуем выноски. Очень конкретные. Линия, на конце блок из круга и номера внутри. Все. Чертеж состоит из набора деталей, мы их помечаем каждую. Эти выноски можно «тягать» за центр круга, что собственно нам и нужно. Таких выносок бывает на чертеже до 100 шт. Но! В какой-то момент (прозевал детальку) возникает необходимость изменить числа в кружке. Очень хотелось бы автоматизировать вот это изменение значений в блоке в выноске. Выбрать сколько-то выносок, и всем числам прибавить какое-то значение. Например, выбрали выноски 3, 4, 5 и превратили их в 6, 7, 8 Может, есть уже что-то готовое или кто может помочь? Спасибо.
Да, AutoCAD 2010.
Olga_выноски вне форума  
 
Непрочитано 25.07.2016, 19:53
#13
Кулик Алексей aka kpblc
Moderator

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


А на чем затык? Где свой код?
А если "вообще не хочу программировать самостоятельно" - то это в раздел "Поиск исполнителей"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.07.2016, 20:43
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,003


Offtop: у вас жесткое разделение труда - одни рисуют детали, другие выноски к ним?
прощелкать заново нумератором 100 выносок на чертеже - 2..3 минуты
Сергей812 вне форума  
 
Непрочитано 25.07.2016, 22:11
#15
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop: у вас жесткое разделение труда - одни рисуют детали, другие выноски к ним?
Offtop: Сергей812, смех-смехом, а я такое частенько встречал: умный инженер выдает проектное решение за пару минут со словами: "Я все сделал, осталось только оформить", - а потом не такие умные или не такие уж и инженеры тратят не один день на оформление - и не то, чтобы они медленно работали.
Olga_выноски, была на форуме тема "Увеличение отметок на определенную величину". Там Кулик Алексей aka kpblc предложил код, который по-моему, должен подойти с небольшими доработками. Он кажется, для текстов, но под выноски доработать несложно. Найдите поиском эту тему, проверьте код (только с текстами), и, если почти то, сообщите тут - может, кто-нибудь подправит.
skkkk вне форума  
 
Непрочитано 26.07.2016, 11:32
#16
VVA

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


Цитата:
Сообщение от Olga_выноски Посмотреть сообщение
Например, выбрали выноски 3, 4, 5 и превратили их в 6, 7, 8 Может, есть уже что-то готовое или кто может помочь?
Еще пару ссылок
numeric text editing (add or subtracting) см. #9
Increment Number in Tex
Lisp help. Need to +/- to number in text string
Lisp help. Need to +/- to number in text string (the swamp)
Lisp for adding number to multiple text entities?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.07.2016, 16:10
#17
Olga_выноски


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop: у вас жесткое разделение труда - одни рисуют детали, другие выноски к ним?
прощелкать заново нумератором 100 выносок на чертеже - 2..3 минуты
100 х на 3 вида х на несколько чертежей в день ))) да, в общем-то и недолго, но и так работа рутинная, хотелось бы изменить.
Я написала небольшую программку (вернее взяла на форуме готовую и подкорректировала под свою задачу), которая увеличивает номер в выноске на 1. (файл прилагаю). Хотелось бы еще и корректировку.
Перелопатила много готовых лиспов для работы с числами, перенумераторы. Но у нас аннотативная мультивыноска, с ней "никто не дружит".
Я уже пробовала создавать динамический блок - линия, кружок на конце и цифра внутри, но линия должна доходить до центра окружности, и остается видимой внутри круга.
Короче, может быть решение где-то совсем рядом, но мне не встречается (((
Моя программка очень короткая, но свою узкую задачу она решает
Вложения
Тип файла: lsp zx-OS.LSP (453 байт, 137 просмотров)
Olga_выноски вне форума  
 
Непрочитано 26.07.2016, 16:20
#18
Olga_выноски


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Offtop: Сергей812, смех-смехом, а я такое частенько встречал: умный инженер выдает проектное решение за пару минут со словами: "Я все сделал, осталось только оформить", - а потом не такие умные или не такие уж и инженеры тратят не один день на оформление - и не то, чтобы они медленно работали.
Olga_выноски, была на форуме тема "Увеличение отметок на определенную величину". Там Кулик Алексей aka kpblc предложил код, который по-моему, должен подойти с небольшими доработками. Он кажется, для текстов, но под выноски доработать несложно. Найдите поиском эту тему, проверьте код (только с текстами), и, если почти то, сообщите тут - может, кто-нибудь подправит.
Я прежде всего поискала по форумам, эту программу проверяла самой первой )). Не работает она с нашей мультивыноской с блоком.
Может как-то по-другому наши выноски рисовать, попроще?
Olga_выноски вне форума  
 
Непрочитано 26.07.2016, 18:24
#19
Olga_выноски


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А на чем затык? Где свой код?
А если "вообще не хочу программировать самостоятельно" - то это в раздел "Поиск исполнителей"
Да, уточняю свой вопрос. Прилагаю наш чертеж. И программку, которая вставляет мультивыноски с номерами, возрастающими на 1 (программка конечно очень урезанная, но свою задачу выполняет).
Имею большое желание изменять числа в мультивыносках.
А может быть есть возможность простановки и редактирования наших выносок и не средствами мультивыноски, а как-то иначе.
Вы дольше общаетесь на форуме, м.б. что-нить подскажете.
Буду благодарна любой помощи
Вложения
Тип файла: dwg
DWG 2004
перенумерация выносок.dwg (68.2 Кб, 410 просмотров)
Тип файла: lsp zx.LSP (453 байт, 157 просмотров)
Olga_выноски вне форума  
 
Непрочитано 26.07.2016, 23:01
1 | #20
VVA

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


Цитата:
Сообщение от Olga_выноски Посмотреть сообщение
Имею большое желание изменять числа в мультивыносках.
Изменил немного код Lee Maca под твой тип мультивыносок
Код:
[Выделить все]
(defun c:ML_Inc (/ *error* ParseNumbers uFlag ss attname)
  (vl-load-com)
  ;; Инкремент мультивыносок, у которых блок-источник имеет атрибут с тагом, хранящимся в переменной attname
 (setq attname "TAGNUMBER") ;_Имя аттрибута блока-источника, хранящего значение
  (defun *error* (msg)
    (setvar 'NOMUTT 0)
    (and uFlag (vla-EndUndoMark *doc))
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **")))
    (princ))
    (defun ParseNumbers (str / lst Num Aph x rtn)
    ;; Lee Mac  ~  20.09.09
    (setq lst (vl-string->list str) Num "" Aph "")
    (while (setq x (car lst))
      (setq lst (cdr lst))
      (cond (  (and (/= "" Num) (= 46 x))
               (setq Num (strcat Num (chr x))))
            (  (< 47 x 58)
               (setq Num (strcat Num (chr x))
                     rtn (cons Aph rtn) Aph ""))
            (t (setq Aph (strcat Aph (chr x))
                     rtn (cons (read Num) rtn) Num ""))))
    (vl-remove nil
      (vl-remove "" (reverse (cons Aph (cons (read Num) rtn))))))
  (setvar 'NOMUTT 0)
  (setq *inc* (cond (*inc*) (1)))
  (setq *inc* (cond ((getint (strcat "\nSpecify Increment <"
                                      (vl-princ-to-string *inc*) "> : ")))
                    (*inc*)))
  (setq *doc (cond (*doc) ((vla-get-ActiveDocument (vlax-get-acad-object)))))
  (setvar 'NOMUTT 1)
  (princ "\nSelect Text to Increment <All> : ")
  (if (or (ssget "_:L" '((0 . "MULTILEADER")))
          (ssget "_X"  '((0 . "MULTILEADER"))))
    (progn
      (setq uFlag (not (vla-StartUndoMark *doc)))
      (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *doc))
        (if (= 1 (vla-get-ContentType obj)) ;;_Мультивыноски имеют блок-источник
        (LM:SetMLeaderBlockAttributeValue obj attname
          (apply (function strcat)
                 (mapcar
                   (function
                     (lambda (x) (if (vl-position (type x) '(INT REAL))
                                   (mip-conv-to-str (+ x *inc*)) x)))
                   (ParseNumbers (LM:SetMLeaderBlockAttributeValue obj attname nil)))))))
      (vla-delete ss)
      (setq uFlag (vla-EndUndoMark *doc))))  
  (setvar 'NOMUTT 0)
  (princ))
;;---------=={ Set MLeader Block Attribute Value }==----------;;
;;                                                            ;;
;;  Sets the value of the specified tag for the specified     ;;
;;  MLeader                                                   ;;
;;------------------------------------------------------------;;
;;  Author: Lee McDonnell, 2010                               ;;
;;                                                            ;;
;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;  Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  mleader - ename/VLA-Object MLeader with attributed block  ;;
;;  tag     - Tagstring of the attribute to change            ;;
;;  value   - Value to which attribute will be set or nil    ;;
;;  (if value eq nil, then return current value )   ;;
;;------------------------------------------------------------;;
;;  Returns:  T if successful, else nil                       ;;
;;------------------------------------------------------------;;
(defun LM:SetMLeaderBlockAttributeValue ( mleader tag value / def id )
  (vl-load-com)
  ;; © Lee Mac 2010
  (if
    (and
      (eq "AcDbMLeader"
        (vla-get-Objectname
          (setq mleader
            (cond
              ( (eq 'VLA-OBJECT (type mleader)) mleader)
              ( (vlax-ename->vla-object mleader) )
            )
          )
        )
      )
      (= 1 (vla-get-ContentType mleader))
      (setq def
        (LM:Itemp
          (vla-get-Blocks
            (vla-get-ActiveDocument
              (vlax-get-acad-object)
            )
          )
          (vla-get-ContentBlockName mleader)
        )
      )
    )
    (if
      (progn
        (vlax-for obj def
          (if (and (eq "AcDbAttributeDefinition" (vla-get-Objectname obj))
                   (eq (strcase tag) (strcase (vla-get-TagString obj))))
            (setq id (vla-get-ObjectID obj))
          )
        )
        id
      )
      (if value
        (not (vla-SetBlockAttributeValue mleader id value))
        (vla-GetBlockAttributeValue mleader id)
        )
    )
  )
)
;;-----------------------=={ Itemp }==------------------------;;
;;                                                            ;;
;;  Retrieves the item with index 'item' if present in the    ;;
;;  specified collection, else nil                            ;;
;;------------------------------------------------------------;;
;;  Author: Lee McDonnell, 2010                               ;;
;;                                                            ;;
;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;  Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  coll - the VLA Collection Object                          ;;
;;  item - the index of the item to be retrieved              ;;
;;------------------------------------------------------------;;
;;  Returns:  the VLA Object at the specified index, else nil ;;
;;------------------------------------------------------------;;

(defun LM:Itemp ( coll item )
  ;; © Lee Mac 2010
  (if
    (not
      (vl-catch-all-error-p
        (setq item
          (vl-catch-all-apply
            (function vla-item) (list coll item)
          )
        )
      )
    )
    item
  )
)
    (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)))
      ) ;_ end of cond
    ) ;_ end of defun
Файл для тестирования в #17
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 27.07.2016 в 08:25.
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нумерация мультивыносок.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нумерация листов в AutoCad Sergk AutoCAD 21 11.03.2022 05:21
Сквозная нумерация чертежей Alxd Прочее. Архитектура и строительство 25 13.03.2014 14:53
Как программно удалить неиспользуемые стили мультивыносок. Makswell Программирование 6 08.04.2009 13:43
Нумерация дин.блоков "тыкая" мышью gizmo_zx Программирование 14 02.04.2009 11:44
Автоматическая нумерация текстов dorofei Программирование 8 18.01.2007 09:31