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

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

Не меняется тип линии

Ответ
Поиск в этой теме
Непрочитано 17.05.2011, 12:14 #1
Не меняется тип линии
Russik
 
Проектировщик
 
Киев-Харьков
Регистрация: 23.04.2010
Сообщений: 149

Оси сплошные, и в модели, и на листе. В свойствах пунктир, масштабы все перепробовал, не помогает. Кто сталкивался напишите решение пожалуйста.
Просмотров: 9639
 
Непрочитано 17.05.2011, 12:17
#2
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Попробуй,классная штука
Спасибо автору

Код:
[Выделить все]
 ;;; Re:] Kosarev (2007-03-01 18:11:02)  [наверх] 
;;; 
;;; Однажды на форуме увидел код, позволяющий двигая мышкой влево-вправо изменять свойство объекта
;;; с визуализацией результата. Понравилось. Пожалуй для операций, не требующих точности и для
;;; ленивых (о себе) — отличная штука.
;;; На суд общественности представлена функция, позволяющая на глаз изменять Масштаб Типа Линии объекта.
;;; Выбрал объект — двигай мышкой и смотри (если Тип Линии не "Continuous", конечно). Текущая информация
;;; выводится в инф. строке.
;;; О целесообразности применения предложенной функции можно спорить, но идея открытия ДАННОЙ ТЕМЫ в том,
;;; чтобы народ поделился подобным материалом.

(defun C:type_line (/ oldVAR obj errscl)
  (vl-load-com)

  ;; вспомогательная функция округления цифр до сотых
  (defun *x00* (VAL*)(distof (rtos VAL* 2 2)))

  ;; вспомогательная функция извлечения параметров объекта
  (defun *dxf* (KEY* SEL*)(cdr (assoc KEY* (entget (car SEL*)))))

  (princ "\n'\nU_Команда: МТИПЛИН /*Динамическое изменение Масштаба Типа Линии*/")

  ;; Сохранить текущие режимы
  (foreach x
   '("cmdecho" "nomutt" "modemacro")
    (setq oldVAR (cons (list x (getvar x)) oldVAR))
  )

  (setvar "cmdecho" 0)
  (setvar "nomutt" 1)
  (vl-cmdf "_.UNDO" "_BE")

  (if
    (vl-catch-all-error-p (vl-catch-all-apply
      (function (lambda (/ ob pt gr scl mess)
  ;;===========================================
  ;; корректно выбрать объект...
  (princ "\n")
  (while (progn
    (princ "Выбрать объект: ")(setq  ob (entsel))
    (cond
      ;;==========
      ((= 12 (car (grread T 4 1))) nil) ;; отмена правой клавишей
      ;;==========
      ((not ob)(princ "\nНичего не выбрано!  "))
      ;;==========
      ((= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (*dxf* 8 ob))))))
        (alert "\nОбъект на заблокированном слое !  ")(princ "\n")
      )
      ;;==========
      ;; не брать объекты не имеющие свойство "LinetypeScale" и БЛОКИ
      ((or
          (not (vlax-property-available-p
            (setq obj (vlax-ename->vla-object (car ob))) "LinetypeScale")
          )
          (= (vla-get-ObjectName obj) "AcDbBlockReference")
        )
        (alert (strcat  "\nOбъект \"" (*dxf* 0 ob) "\" невозможно изменить !  "))
        (princ "\n")
      )
      ;;==========
      ;; для других объектов...
      ((if (= (vla-get-ObjectName obj) "AcDbMline") ;; объект МУЛЬТИЛИНИЯ...

          ;; взять, если в составе есть элементы не тип.лин. "Continuous"
          (not (vl-remove-if
            (function (lambda (xx)(member (cdr xx) '("Continuous" "BYLAYER" "BYBLOCK"))))
            (vl-remove-if-not
              (function (lambda (x)(= 6 (car x))))(entget (*dxf* 340 ob)))
          ))
          ;; остальные объекты брать, если они сами не тип.лин. "Continuous"
          (or
            (member (vla-get-Linetype obj) '("Continuous" "BYBLOCK"))
            (not (assoc 6 (entget (car ob))))
          )
        ) ;;...if
        (alert "\nТип линии объекта \"Continuous\" !   \nИзменения невозможны !")
        (princ "\n")
      )
      ;;==========
    ) ;;...cond
  )) ;;...while...progn

  ;; если объект выбран правильно...
  (if
    (and
      (mapcar (function princ)(list
        "\n'\n[Объект \"" (*dxf* 0 ob) "\"]"
        "  Масштаб Типа Линии <" (*x00* (vla-get-LinetypeScale obj)) "> ... "
      ))
      (setq pt (trans (cadr ob) 1 0)) ;; стартовая точка отсчёта в WSC
    ) ;;...and

    (progn
      (while ;; цикл изменения "LinetypeScale" при движениии курсора...
        (and
          (= 5 (car (setq gr (grread T 12 0)))) ;; 0 — курсор виден
          (setq gr  (trans (cadr gr) 1 0)       ;; текущие координаты курсора в WCS
                scl (vla-get-LinetypeScale obj) ;; текущее значение "LinetypeScale"
          )
        )
        ;; запомнить начальное значение для отката
        (if (not errscl)(setq errscl scl))

        ;; зафиксировать допустимое минимальное значение
        (if (< scl 0.01)(vla-put-LinetypeScale obj (setq mess 0 scl 0.01)))

        (cond
          ((> (car pt)(car gr))                       ;; по Х влево
            (vla-put-LinetypeScale obj (/ scl 1.04))  ;; уменьшить масштаб
          )
          ((< (car pt)(car gr))                       ;; по Х вправо
            (vla-put-LinetypeScale obj (* scl 1.04))  ;; увеличить масштаб
          )
        );;...cond

        ;; ограничить интервал изменений за один сеанс +/- в 10 раз...
        (cond
          ((> scl (* errscl 10))
            (vla-put-LinetypeScale obj (setq mess 1 scl (* errscl 10)))
          )
          ((< scl (/ errscl 10))
            (vla-put-LinetypeScale obj (setq mess 1 scl (/ errscl 10)))
          )
        )

        ;; отображать текущие изменения в информационной строке
        (setvar "modemacro" (strcat
          ".   Масштаб Типа Линии = " (vl-princ-to-string (*x00* scl))
          (cond ((= 1 mess) "  [лимит сеанса]")((= 0 mess) "  [минимум]")(T ""))
          "   ."
        ))

        (setq mess nil pt gr) ;; скорректировать точку отсчёта
      ) ;;...while

      ;; окончательный результат округлить до сотых и отобразить в ком. строке
      (vla-put-LinetypeScale obj (princ (*x00* (vla-get-LinetypeScale obj))))
    ) ;;...progn
  ) ;;...if
  ;;====================================
      )) ;;...function lambda
    )) ;;...vl-catch-all-error-p

    ;; восстановить стартовое значение "LinetypeScale" при сбое
    (if errscl (progn (vla-put-LinetypeScale obj errscl)(princ (*x00* errscl))))

  ) ;;...if...vl-catch-all-error-p

  (if obj (progn (vlax-release-object obj)(setq obj nil))) ;; сбросить объект

  (vl-cmdf "_.UNDO" "_E")
  (foreach f OLDVAR (setvar (car f)(cadr f))) ;; реанимация режимов
  (princ)
) ;;...defun (C:МТИПЛИН)

 
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 17.05.2011, 20:34
#3
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Russik Посмотреть сообщение
Оси сплошные, и в модели, и на листе. В свойствах пунктир, масштабы все перепробовал, не помогает. Кто сталкивался напишите решение пожалуйста.
Это нужно видеть
Какие там типы линий для осей? Самодельные?
АлексЮстасу вне форума  
 
Непрочитано 17.05.2011, 22:20
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Масштаб типа линий настройте по вкусу
gomer вне форума  
 
Непрочитано 17.05.2011, 22:36
#5
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Или линий масштаб настроен плохо (не единица) или не стоит галочка - масштаб в единицах пространства листа.
Yuzer вне форума  
 
Непрочитано 17.05.2011, 23:03
#6
PeMCoH


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


И как пользоваться этим кодом?
PeMCoH вне форума  
 
Непрочитано 17.05.2011, 23:35
1 | #7
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,258
<phrase 1=


Цитата:
Сообщение от PeMCoH Посмотреть сообщение
И как пользоваться этим кодом?
Как использовать лисп, опубликованный на форуме
Солидворкер вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Не меняется тип линии



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Максимальная ошибка в узле 50797 по направлению 2: 0.387%. Kastrulkin Расчетные программы 11 06.12.2011 15:35
Расчёт по СНиПу стальной стойки квадратного сечения не предусмотрен. Filя Металлические конструкции 330 09.02.2011 19:47
Непонятки со связями bezo Расчетные программы 8 06.06.2010 12:34
Корректно ли написан тип линии Zlat21 AutoCAD 6 04.12.2007 10:07