Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Помогите в перенумерации выносок

Тема в разделе "Autocad", создана пользователем OlgaStadnik, 25 июл 2016.

  1. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    Хелп ми!!!
    Помогите разрешить наболевшее. Мы рисуем выноски. Очень конкретные. Линия, на конце блок из круга и номера внутри. Все. Чертеж состоит из набора деталей, мы их помечаем каждую. Эти выноски можно «тягать» за центр круга, что собственно нам и нужно. Таких выносок бывает на чертеже до 100 шт. Но! В какой-то момент (прозевал детальку) возникает необходимость изменить числа в кружке. Очень хотелось бы автоматизировать вот это изменение значений в блоке в выноске. Выбрать сколько-то выносок, и всем числам прибавить какое-то значение. Например, выбрали выноски 3, 4, 5 и превратили их в 6, 7, 8 Может, есть уже что-то готовое или кто может помочь? Спасибо.
    Да, AutoCAD 2010.
     
    #1
  2. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.567
    Симпатии:
    2.092
    Адрес:
    Москва
    Без примера чертежа с вашими блоками (хоть несколько штук на пустом чертеже)... врядли кто-то даже пытаться будет что-то делать.
     
    #2
  3. Сер-гео

    Форумчанин

    Регистрация:
    7 авг 2010
    Сообщения:
    4.105
    Симпатии:
    1.600
    Я думаю их устроит меню ГЕО, работа с текстом.
     
    #3
  4. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.716
    Симпатии:
    604
    Адрес:
    Ухта
    OlgaStadnik, а какие у Вас выноски:? Быстрые или мультивыноски?
     
    #4
  5. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
     

    Вложения:

    #5
  6. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.716
    Симпатии:
    604
    Адрес:
    Ухта
    OlgaStadnik, попробуйте этот вариант.
     

    Вложения:

    #6
  7. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    мультивыноски, файл-пример прилагаю
    --- Сообщения объединены, 25 июл 2016, Оригинальное время сообщения: 25 июл 2016 ---
    Я пробовала, после выбора выноски выдает сообщение:
    error: Automation Error. Description was not provided.
    --- Сообщения объединены, 25 июл 2016 ---
    Мне в общем-то не надо префиксы-суффиксы, мне только поменять число в кружочке :-)
     

    Вложения:

    #7
  8. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.716
    Симпатии:
    604
    Адрес:
    Ухта
    OlgaStadnik, с обычными мультивыносками этот лисп работает безотказно. По всей видимости проблема в аннотативности, или использование выносок с атрибутами. И страница разработчика, к сожалению закрыта.
     
    #8
  9. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    Спасибо. Да, нам важна аннотативность. Я все думаю, может эти наши выноски каким-то другим способом изображать, например, динамическим блоком. Я пробовала его создавать, но важна привязка окружности к концу линии, а тогда видна часть линии в круге. Вот вроде и несложная задачка, а никак не решается
     
    #9
  10. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.716
    Симпатии:
    604
    Адрес:
    Ухта
    OlgaStadnik, а посмотрите этот нумератор. Может устроит.
     
    #10
  11. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    Всем огромное спасибо. Мне уже помогли на другом форуме
     
    #11
  12. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.716
    Симпатии:
    604
    Адрес:
    Ухта
    Ну, и в дополнение, для логического завершения темы, нужно бы показать Решение вопроса. Может кто-то еще столкнется с этой проблемой. Или через Поиск будет разыскивать.
     
    #12
    MaxKal нравится это.
  13. OlgaStadnik

    Регистрация:
    28 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    ;; Изменил немного код 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
     
    #13

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление