Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   AutoCAD (https://промебельклуб.рф/forum/forumdisplay.php?f=34)
-   -   AutoCAD - советы, хитрости, наработки (https://промебельклуб.рф/forum/showthread.php?t=2115)

nikita55 27.05.2010 15:48

Доброго времени суток. есть вопросик по палитре инструментов, а именно по по библиотеке материалов. когда жму на инструмент(иконку бетона, например) то пишет " невозможно вызвать инструмент. Класс не зарегистрирован". подскажите в чем может быть проблема.

arsenii1981 27.05.2010 16:44

nikita55, я так понял что вы имели в виду штриховку . И при нажатии на неё выходит это сообщение? ни когда такого не было, самое простое переустановить автокад, (какая кстати версия и язык). И скриншот окна с ошибкой можно увидеть?

nikita55 27.05.2010 17:17

ну переустановка не помогает. версия AutoCAD Civil 3D 2010.
вот ссылка на ошибку http://s3.amazonaws.com/floomby/5_27...uzYIvgnQ4g.jpg

arsenii1981 27.05.2010 17:50

nikita55, значит что-то с самой программой, я думаю что просто в базе нет этих файлов текстур, или он не может их найти по данному адресу. Адрес к этой ссылке настраивается в опциях. Хотя с Civil ни когда не работал, могу и ошибаться.

ТАУР 01.06.2010 14:17

Поставте простой AutoCAD, зачем ставить Civil, Civil для изысканий, в нем много лишнего и не нужного для проектировщика мебели. AutoCAD можно взять здесь.

1986Pavel 18.07.2010 22:23

Автоматический перенос размеров, текстов и т.д. на соответствующий слой. Вообще отличный LISP

Код:

;;; Автор идеи Kenny Ramage, Эдуард, Torino, он же Кочетков Андрей
;;; Доработка Владимир Азарко (VVA)
;;; Опубликовано http://forum.dwg.ru/showpost.php?p=58664&postcount=25
;;;Автоматический перенос размеров на слой "размеры"
;;;и заливки на слой "заливка"
;;;Просто добавь этот файл в автозагрузку
(vl-load-com)
(setq *OldLayer* (getvar "CLAYER"))
(vl-cmdf "_layer" "_make" "Размеры" "_color" 142 "" "_lw" 0.18 "" "") ;_Создаем слой размеры и задаем цвет 142 ...
(vl-cmdf "_layer" "_make" "Штриховка" "_color" 5 "" "_lw" 0.30 "" "") ;_Создаем слой штриховка и задаем цвет 5
(vl-cmdf "_layer" "_make" "Текст" "_color" 152 "" "_lw" 0.30 "" "")    ;_Создаем слой текст и задаем цвет 126
(vl-cmdf "_layer" "_make" "Таблицы" "_color" 152 "" "_lw" 0.30 "" "")  ;_Создаем слой таблицы и задаем цвет 126
(vl-cmdf "_layer" "_make" "Выноски" "_color" 126 "" "_lw" 0.18 "" "")  ;_Создаем слой выноски и задаем цвет 126
(setvar "clayer" *OldLayer*)
(setq *OldLayer* nil)
;;;;;;По аналогии добавить создание своего слоя
;;; ...
;;;;;;
;;;;;;-------------------------------------------------------------
(if *vlr-cmd*
  (progn
    (setq *vlr-cmd* nil)
    (vlr-remove-all :vlr-command-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-cmd*)
  (setq    *vlr-cmd* (vlr-command-reactor "cmd"
            '((:vlr-commandwillstart . cmd-start)
              (:vlr-commandended . cmd-end)
              (:vlr-commandcancelled . cmd-end)
              (:vlr-commandfailed . cmd-end)))))
;;;;;;-------------------------------------------------------------
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart)
  (setq thecommandstart (nth 0 startcommandInfo))
  (if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER")))
  (cond
 ;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)   
    ((wcmatch thecommandstart "DIM*")  ;_Если выполняется команда DIM*
    (setvar "clayer" "размеры")      ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ...
    )
 ;;; Конец реакции на DIM*   
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH*
    (setvar "clayer" "штриховка")
    )
    ((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT)
    (setvar "clayer" "Текст")
    )
    ((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
    (setvar "clayer" "Таблицы")
    )
    ((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
    (setvar "clayer" "Выноски")
    )
    (t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев
;;;См http://forum.dwg.ru/showpost.php?p=318806&postcount=139
;;;и http://forum.dwg.ru/showpost.php?p=318806&postcount=143
    )
  (princ))
 ;;;-------------------------------------------------------------
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
      (wcmatch cmd_name "*HATCH*") ;_Если выполняется команда DIM*
      (wcmatch cmd_name "DIM*")    ;_Если выполняется команда *HATCH*
      (wcmatch cmd_name "*TEXT")  ;_Если выполняется команда *TEXT (TEXT DTEXT)
      (wcmatch cmd_name "*TABLE")  ;_Если выполняется команда ТАБЛИЦА
      (wcmatch cmd_name "*LEADER")  ;_Если выполняется команда *QLEADER или MLEADER
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*))
    (setq *OldLayer* nil)
    ))
 (princ))

Для использование сего ЛИСПа (кто не знает) делаем так. Создаем текстовый файл, копируем код и сохраняем с расширением .lsp. Название делаем любое, но лучше назвать информативно, так как в последствии подобных файлов может накопиться много и запутаетесь. Далее создаем папку на диске. Например D:\adsk\MyLisp. Сохраняем туда этот лисп файл.
Запускаем автокад, если не запущен. Вводим Команду "_appload" и добавляем этот файл в автозагрузку. Все. Теперь, как только вы проставляете какой-либо размер он автоматически переносится на слой "Размеры", текст на слой "Текст" и т.д.

1986Pavel 22.07.2010 07:50

Аннотативность
 
Для тех, кто не пользуется анотативностью советую попробовать ее использовать.

Создаем размерный стиль, делаем высоту букв, например 3,5 мм, величину стрелки 5 мм (как по ГОСТу) и устанавливаем, что он будет аннотативным.

При простановке размеров или написании текста в модели следует установить масштаб аннотаций, масштаб тот, который будет при печати.

На вкладке листов устанавливаем нужный масштаб и все аннотативные элементы принимают тот размер, который был выставлен непосредственно в размерном стиле, стиле текста, штриховке и т.д. Т.о. решается проблема с использованием кучи размерных стилей, стилей текста на разные масштабы.

У меня, например, всего 2 размерных стиля. Высота текста размера 3,5 мм и 5 мм. А раньше, когда не использовал аннотативность было штук 10 размерных стилей. И теперь на всех чертежах все тексты и размеры одинаковы (хотя размерный стиль один, а масштаб чертежа разный)
, что как бы более эстетично смотрится:).
http://s58.radikal.ru/i161/1007/49/bf055403103at.jpg

Тут масштаб 1:20
http://s57.radikal.ru/i158/1007/43/3cb20ec58b48t.jpg

Тут масштаб 1:16 (никаких манипуляций вручную с размером не происходило)
http://s49.radikal.ru/i124/1007/85/2172c14946b3t.jpg


http://i067.radikal.ru/1007/65/e4b63e40fd5bt.jpg


PS. На листах устанавливать нужно именно масштаб, а не масштабировать колесиком мыши.
Так же лучше установить значение сис. переменной ANNOAUTOSCALE "4". Это нужно для того, чтобы масштаб автоматически присваивался аннотативным элементам. Кто хочет в ручную этим заниматься оставьте значение "-4" :)

shushik 30.07.2010 12:31

ДА в 2010 акаде конечно много нововедений а особенно параметрический чертеж, точно так же как сделано в инвенторе

1986Pavel 09.08.2010 16:01

Актуально при создании шаблона пользовательского.

Есть в AutoCAD такая команда, как _dwgprops. Запускаем ее, после чего всплывает окошко свойств чертежа. Нас интересует вкладка custom. В нее можно записать собственные поля. Такие, как цвет материала, тип кромки, количество листов, номер заказа. В общем что захотите.

Далее вводим команду _field, выбираем категорию полей "Document" и видим среди стандартных полей наши созданные.

Я применил эту вещь вот в таком случае. В основной надписи листа у меня поля: "Номер заказа", количество листов, цвет кромки, цвет материала.

Пишем значение поля в _dwgprops и это значение принимают все поля на всех листах. Удобная вещь, однако :)

1986Pavel 09.08.2010 17:13

Может еще кому понадобится. Я иной раз использую.

Код:

(Defun C:KUU (/ SS CNT LAY)

  (acet-error-init
    (list
      (list "cmdecho" 0)
      T                                        ;flag. True means use undo for error clean up.
    )                                        ;list
  )                                        ;acet-error-init
  (if (not (setq SS (ssget "_i")))
    (progn
      (prompt
        "\nSelect objects to be changed to the current layer: "
      ) ;_ end of prompt
      (setq SS (ssget))
    ) ;_ end of progn
  ) ;_ end of if
  (if SS
    (progn
      (setq CNT (sslength SS))
      (princ (acet-str-format "\n%1 found." (itoa CNT)))
                                        ; Report number of items found
      (sssetfirst nil nil)
      (command "_.move" SS "")                ; filter out objects on locked layers
      (if (> (getvar "cmdactive") 0)        ; if there are still objects left
        (progn
          (command "0,0" "0,0")
          (setq        SS  (ssget "_p")
                CNT (- CNT (sslength SS))
          ) ;_ end of setq
        )                                ; count them
        (setq SS nil)                        ; else abort operation
      ) ;_ end of if
      (if (> CNT 0)                        ; if items where filtered out
        (if (= CNT 1)
          (princ
            (acet-str-format "\n%1 was on a locked layer." (itoa CNT))
          )                                ; report it.
          (princ
            (acet-str-format "\n%1 were on a locked layer." (itoa CNT))
          ) ;_ end of princ
        ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
  (if SS
    (progn
      (setq LAY (getvar "CLAYER"))

      (command "_.chprop" SS "" "_la" LAY "")
      (command "_.chprop" SS "" "_C" "_bylayer" "")
      (command "_.chprop" SS "" "_LT" "_bylayer" "")
      (command "_.chprop" SS "" "_LW" "_bylayer" "")

      (if (= (sslength SS) 1)
        (prompt
          (acet-str-format
            "\nOne object changed to layer %1 (the current layer)."
            LAY
          ) ;_ end of acet-str-format
        ) ;_ end of prompt
        (prompt
          (acet-str-format
            "\n%1 objects changed to layer %2 (the current layer)."
            (itoa (sslength SS))
            LAY
          ) ;_ end of acet-str-format
        ) ;_ end of prompt
      ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
  (acet-error-restore)
  (princ)
)                                        ; defun

Эта команда переносит выбранные объекты на текущий слой и делает все свойства По слою/by layer

Если набор элементов уже есть, то переносит их на текущий слой без запроса, если активного набора нет, то выдает запрос на выбор объектов.

---------- Добавлено в 17:13 ---------- Предыдущее сообщение было написано в 17:00 ----------

Так же еще одна вещь. Понадобилась мне она правда один раз да и то не в мебели, но применить можно и не только со значком диаметра.

Код:

(defun C:DD (/)
(vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  )
  (if (not (setq DIM (ssget "_I" '((0 . "DIMMENSION")))))
    (progn
      (prompt "\nSelect dimension:")
      (setq DIM (ssget '((0 . "DIMENSION"))))
    ) ;_ end progn
  ) ;_ end if
  (setq nabor (sslength DIM))
  (setq r 0)
  (repeat nabor
    (setq xx (entget (ssname DIM r)))
    (setq r (1+ r))
    (entmod (subst (cons 1 "%%c<>") (assoc 1 xx) xx)); "%%c" - это символ диаметра. Заменить можно на любой другой префикс размера. (Допуск, градусы и т.п. или просто текст)
  ) ;_ end repeat
  (vla-endundomark adoc)
  (princ)
) ;_ end defun

Работает следующим образом. Добавляет символ диаметра для выбранных размеров. Выбирать можно секущей рамкой, не опасаясь что рамка захватывает и обычные примитивы. В активном наборе останутся все равно только размеры.


P.S. Если кому непонятно, что со всем этим делать и как запускать, то напишите - объясню все в подробностях.


Текущее время: 00:38. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL