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

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

Лисп_исправить ширину МВыноски

Ответ
Поиск в этой теме
Непрочитано 08.01.2023, 10:39 #1
Лисп_исправить ширину МВыноски
Ingpro
 
Регистрация: 11.07.2022
Сообщений: 495

Всем доброго дня! С Рождеством Христовым!
Есть лисп (MTW3<введите> для запуска) , который исправляет ширину MTEXT, ограничивающая рамка которого слишком широкая (или узкая), т.е. устанавливает ширину рамки по ширине текста.
Возможно ли такую процедуру применить для МВыноски? Спасибо.
Код:
[Выделить все]
 	(defun mip-mtext-wrap-BB (en / el SetHandles CheckHandles sclst)
 
(defun GetAnnoScales (e / dict lst rewind res)
 
 (if (and e 
          (setq dict (cdr (assoc 360 (entget e))))
          (setq lst (dictsearch dict "AcDbContextDataManager"))
          (setq lst (dictsearch (cdr (assoc -1 lst)) "ACDB_ANNOTATIONSCALES"))
          (setq dict (cdr (assoc -1 lst)))
     )
     (progn 
       (setq rewind t)
       (while (setq lst (dictnext dict rewind))
         (setq e (cdr (assoc 340 lst))
               res (cons (cdr (assoc 300 (entget e))) res)
               rewind nil
         ) 
       ) 
     )
 )
 (reverse res)
)
 
(defun CheckHandles (e / dict lst rewind nlst d42 d43 n p ptlst)
 
 (if (and e
          (setq dict (cdr (assoc 360 (entget e))))
          (setq lst (dictsearch dict "AcDbContextDataManager"))
          (setq lst (dictsearch (cdr (assoc -1 lst)) "ACDB_ANNOTATIONSCALES"))
          (setq dict (cdr (assoc -1 lst)))
     )
     (progn
       (setq rewind t)
       (while (setq lst (dictnext dict rewind))
         (setq nlst (cons lst nlst)
               rewind nil
         ) 
       )
       (cond ((= 1 (length nlst)))
             (t (foreach x nlst 
                   (setq d42 (cdr (assoc 42 x)) 
                         d43 (cdr (assoc 43 x))
                         n (/ d42 d43)
                         lst (cons n lst)
                         p (cdr (assoc 11 x))
                         ptlst (cons p ptlst))
                )
                (and
                  (vl-every '(lambda (x) (equal n x 1e-4)) lst)
                  (vl-every '(lambda (x) (equal p x 1e-4)) ptlst)
                )
             ) 
       )
     )
 )
)
 
(defun SetHandles (lst / oldlst charwidth ht pat)
 
  (setq lst (entget (cdr(assoc -1 lst)) '("ACAD")))
  (setq charwidth (* (cdr (assoc 42 lst)) 1.05) ;_1.035
        ht (cdr (assoc 43 lst))
        lst (subst (cons 41 charwidth) (assoc 41 lst) lst)
        lst (subst (cons 46 ht) (assoc 46 lst) lst)
        lst (if (assoc 75 lst)
                (subst (cons 75 0) (assoc 75 0) lst)
                (append lst (list(cons 75 0)))
            )
  )
  
 (if (and
       (setq pat (assoc -3 lst))
       (eq "ACAD" (caadr pat))
     )
     (progn
       (if (assoc 46 lst)
           (setq pat '(-3 ("ACAD")))
           (setq pat (cons -3 (list (subst (cons 1040 ht) (assoc 1040 (cdadr pat)) (cadr pat))))) 
       )
       (setq lst (subst pat (assoc -3 lst) lst))
     )
 )
 
 (setq lst (entmod lst))
 
)
 

(if (= (cdr (assoc 0 (setq EL (entget en '("*"))))) "MTEXT") 
    (cond ((and (setq sclst (GetAnnoScales en)) (CheckHandles en))
           (vl-cmdf "._chprop" en "" "_Annotative" "_No" "") 
           (SetHandles el)
           (vl-cmdf "._chprop" en "" "_Annotative" "_Yes" "")
           (foreach x sclst
             (vl-cmdf "._objectscale" en "" "_Add" x "")
           )
          )
          ((not (GetAnnoScales en))
           (SetHandles el)
          )
          (t nil)
    ) 
)
 
)
 
(defun C:MTW3 (/ ss i)

  (and (setq ss (ssget "_:L" '((0 . "MTEXT"))))
       (repeat (setq i (sslength ss))
               (mip-mtext-wrap-BB (ssname ss (setq i (1- i))))
       )
       (setq ss nil)
  )

)

Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 45
Размер:	14.7 Кб
ID:	252463  Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 45
Размер:	18.9 Кб
ID:	252464  Нажмите на изображение для увеличения
Название: 3.png
Просмотров: 47
Размер:	8.6 Кб
ID:	252465  Нажмите на изображение для увеличения
Название: 4.png
Просмотров: 46
Размер:	14.1 Кб
ID:	252466  Нажмите на изображение для увеличения
Название: 5.png
Просмотров: 46
Размер:	15.1 Кб
ID:	252467  



Последний раз редактировалось Ingpro, 08.01.2023 в 15:41.
Просмотров: 1264
 
Непрочитано 09.01.2023, 09:45
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Здесь достаточно для мультивыносок установить в свойстве "Ширина" значение в 0

----- добавлено через ~13 мин. -----
Добавил обнуление ширины
Код:
[Выделить все]
 
(defun mip-mtext-wrap-BB (en / el SetHandles CheckHandles sclst)
(defun GetAnnoScales (e / dict lst rewind res)
 (if (and e 
          (setq dict (cdr (assoc 360 (entget e))))
          (setq lst (dictsearch dict "AcDbContextDataManager"))
          (setq lst (dictsearch (cdr (assoc -1 lst)) "ACDB_ANNOTATIONSCALES"))
          (setq dict (cdr (assoc -1 lst)))
     )
     (progn 
       (setq rewind t)
       (while (setq lst (dictnext dict rewind))
         (setq e (cdr (assoc 340 lst))
               res (cons (cdr (assoc 300 (entget e))) res)
               rewind nil
         ) 
       ) 
     )
 )
 (reverse res)
)
(defun CheckHandles (e / dict lst rewind nlst d42 d43 n p ptlst)
 (if (and e
          (setq dict (cdr (assoc 360 (entget e))))
          (setq lst (dictsearch dict "AcDbContextDataManager"))
          (setq lst (dictsearch (cdr (assoc -1 lst)) "ACDB_ANNOTATIONSCALES"))
          (setq dict (cdr (assoc -1 lst)))
     )
     (progn
       (setq rewind t)
       (while (setq lst (dictnext dict rewind))
         (setq nlst (cons lst nlst)
               rewind nil
         ) 
       )
       (cond ((= 1 (length nlst)))
             (t (foreach x nlst 
                   (setq d42 (cdr (assoc 42 x)) 
                         d43 (cdr (assoc 43 x))
                         n (/ d42 d43)
                         lst (cons n lst)
                         p (cdr (assoc 11 x))
                         ptlst (cons p ptlst))
                )
                (and
                  (vl-every '(lambda (x) (equal n x 1e-4)) lst)
                  (vl-every '(lambda (x) (equal p x 1e-4)) ptlst)
                )
             ) 
       )
     )
 )
)
(defun SetHandles (lst / oldlst charwidth ht pat)
  (setq lst (entget (cdr(assoc -1 lst)) '("ACAD")))
  (setq charwidth (* (cdr (assoc 42 lst)) 1.05) ;_1.035
        ht (cdr (assoc 43 lst))
        lst (subst (cons 41 charwidth) (assoc 41 lst) lst)
        lst (subst (cons 46 ht) (assoc 46 lst) lst)
        lst (if (assoc 75 lst)
                (subst (cons 75 0) (assoc 75 0) lst)
                (append lst (list(cons 75 0)))
            )
  )
 (if (and
       (setq pat (assoc -3 lst))
       (eq "ACAD" (caadr pat))
     )
     (progn
       (if (assoc 46 lst)
           (setq pat '(-3 ("ACAD")))
           (setq pat (cons -3 (list (subst (cons 1040 ht) (assoc 1040 (cdadr pat)) (cadr pat))))) 
       )
       (setq lst (subst pat (assoc -3 lst) lst))
     )
 )
 (setq lst (entmod lst))
)
(if (= (cdr (assoc 0 (setq EL (entget en '("*"))))) "MTEXT") 
    (cond ((and (setq sclst (GetAnnoScales en)) (CheckHandles en))
           (vl-cmdf "._chprop" en "" "_Annotative" "_No" "") 
           (SetHandles el)
           (vl-cmdf "._chprop" en "" "_Annotative" "_Yes" "")
           (foreach x sclst
             (vl-cmdf "._objectscale" en "" "_Add" x "")
           )
          )
          ((not (GetAnnoScales en))
           (SetHandles el)
          )
          (t nil)
    ) 
)
)
 
(defun C:MTW31 (/ ss i en)
(vl-load-com)
  (and (setq ss (ssget "_:L" '((0 . "MTEXT,MULTILEADER"))))
       (repeat (setq i (sslength ss))
               (setq en (ssname ss (setq i (1- i))))
              (if (eq(cdr(assoc 0 (entget en))) "MULTILEADER")
                (vla-put-TextWidth (vlax-ename->vla-object en) 0)
                (mip-mtext-wrap-BB en)
                )
       )
       (setq ss nil)
  )
(princ)
)
Миниатюры
Нажмите на изображение для увеличения
Название: mv.png
Просмотров: 27
Размер:	25.0 Кб
ID:	252481  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 09.01.2023, 10:50
#3
Ingpro


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Здесь достаточно для мультивыносок установить в свойстве "Ширина" значение в 0
VVA, спасибо, но у меня ширина мультивыносок действительно уходит в 0, а хотелось бы всё-таки по ширине текста...
МТекст выставляется по ширине, как надо.
Миниатюры
Нажмите на изображение для увеличения
Название: 2023-01-09_10-51-08.png
Просмотров: 38
Размер:	15.2 Кб
ID:	252484  

Последний раз редактировалось Ingpro, 10.01.2023 в 10:06.
Ingpro вне форума  
 
Непрочитано 05.02.2023, 10:15
#4
Konstr_pgs


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


Лисп классный, тексты выставляются "по ширине", но немного неудобно править текст мвыноски с шириной "0" в редакторе текста.
Есть ли возможность изменить в этом лиспе ширину мвыноски из "0" в "по ширине"?
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 27
Размер:	18.9 Кб
ID:	253097  Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 27
Размер:	5.5 Кб
ID:	253098  Нажмите на изображение для увеличения
Название: 3.png
Просмотров: 25
Размер:	5.0 Кб
ID:	253099  
Konstr_pgs вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп_исправить ширину МВыноски

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Входит ли ширина перильных ограждений в ширину тротуара? Sergey Valerevich Автомобильные и железные дороги, мосты, тоннели и организация движения 6 28.04.2018 06:38
Какую принять ширину дверей лифта при замене лифтов отработавших свой срок. OSPV Прочее. Архитектура и строительство 6 16.01.2017 17:36
Как изменить ширину рамки многострочного атрибута? Сет AutoCAD 7 09.09.2015 12:54
в ширину коридора в жилом здании ф1.3 учитывают ширину двери dr.ZLO Архитектура 3 25.04.2012 10:45
Входит ли в ширину многоэтажной автостоянки, ширина въездных рамп. motor-serg Архитектура 9 09.02.2012 13:29