Re: Приёмы ускорения работы в AutoCAD

> Артур
Мне понравился твой подход, но т.к. я еще в АКАДе не спец, не мог бы ты выслать файл акд.mnu и обьяснить шо с ним дальше делать , или засвети его прямо в форуме. Спасибо.

Re: Приёмы ускорения работы в AutoCAD

Для 2004 метод Артура становится морочnым. Там есть регулируемая задержка удержания правой кнопки.

Re: Приёмы ускорения работы в AutoCAD

Интересная/полезная тема получилась. Примите вклад.
   Еще во времена 10-го автокада, когда место на столе
(пардон, стола не было, - на экране) было еще в бОльшем
дефиците, реализовал на лиспе две идеи: 1) Редактировать
ВСЁ одной командой. 2) Рисовать ВСЁ одной командой.
Не верите?
   Первую идею можно увидеть в реализации Autodesk в
команде _properties. Реализовано во многом лучше, чем у
меня (все-таки - Виндовс, все-таки - Autodesk). Команда
_properties особенно полезна для начинающих: помогает
понять структуру автокадовских объектов.
   А вторая идея еще ждет своих реализаторов. Основное в
ней: использование в качестве меню имеющихся на экране
примитивов.
   Пример: Если открыт файл, в котором есть много
пунктирных зеленых и тонких полосок, то велика
вероятность, что захочется рисовать в этом файле такие
же. Для этого достаточно щелкнуть по изображению и
запускается команда, которой это изображение создано.
   Конкретизирую: На экране вижу букву. Хочу такие же.
Запускаю команду "РИСОВАТЬ ВСЁ", клацаю по букве,
указываю точку вставки и пишу не глядя. При этом цвет,
стиль, углы, высота - такие же, как в образце. И, если
оказалось, что указанная буква БЛОК (бывает и такое), то
вставляется такой же блок. А, если оказалось, что буква
создана в многострочном редакторе, то он и запускается.
   Ждал, что хоть в 2005-ом появится такая возможность.
Не дождался. А тот (ДОСовский) вариант работает и в
АСАД_2005, но, конечно, только в командной строке и
далеко не со всеми примитивами. Если бы взялся
кто-нибудь сделать такое в стиле команды _properties (да
еще с пользовательскими настройками!), то количество
кнопочек на столе (и в голове) можно было бы значительно
уменьшить.

Re: Приёмы ускорения работы в AutoCAD

Попробуй из моей коллекции

;Tip1381.LSP:  QUICKDRAW.LSP   Quickly draw another   (C)1997, Rory Love
(defun
     *MERRMSG* (MSG)
  (princ MSG)
  (setvar "cecolor" "BYLAYER")
  (setvar "blipmode" 1)
  (setvar "cmdecho" 0)
  (setvar "menuecho" 2)
  (setq *ERROR* M:ERR
        M:ERR NIL
  ) ;_ end of setq
  (princ)
) ;_ end of defun
(defun
     PROPS (/ COLOR LTYPE)
  (setvar "clayer" (FLDVAL 8 EL))
  (setvar
    "cecolor"
    (if (setq COLOR (FLDVAL 62 EL))
      (itoa COLOR)
      "bylayer"
    ) ;_ end of if
  ) ;_ end of setvar
  (setvar
    "celtype"
    (if (setq LTYPE (FLDVAL 6 EL))
      LTYPE
      "bylayer"
    ) ;_ end of if
  ) ;_ end of setvar
) ;_ end of defun
(defun
     XARC (/ CMD)
  (PROPS)
  (setq CMD "arc")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XCIRCLE (/ CMD)
  (PROPS)
  (setq CMD "circle")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XINSERT (/ CMD NAME XSIZE YSIZE ANG)
  (PROPS)
  (setq CMD   "insert"
        NAME  (FLDVAL 2 EL)
        XSIZE (FLDVAL 41 EL)
        YSIZE (FLDVAL 42 EL)
        ANG   (FLDVAL 50 EL)
  ) ;_ end of setq
  (prompt (strcat "\nCommand: " CMD " " NAME))
  (command
    CMD
    NAME
    "X"
    XSIZE
    "Y"
    YSIZE
    "R"
    (angtos ANG)
  ) ;_ end of command
) ;_ end of defun
(defun
     XLINE (/ CMD)
  (PROPS)
  (setq CMD "line")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XPOINT (/ CMD)
  (PROPS)
  (setq CMD "point")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XPLINE (/ CMD)
  (PROPS)
  (setq CMD "pline")
  (setvar "plinewid" (FLDVAL 40 EL))
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XSHAPE (/ CMD NAME SCALE)
  (PROPS)
  (setq CMD   "shape"
        NAME  (FLDVAL 2 EL)
        SCALE (FLDVAL 40 EL)
  ) ;_ end of setq
  (prompt
    (strcat
      "\nCommand: "
      CMD
      " "
      NAME
      " Starting point: "
    ) ;_ end of strcat
  ) ;_ end of prompt
  (command CMD NAME PAUSE SCALE)
) ;_ end of defun
(defun
     XSOLID (/ CMD)
  (PROPS)
  (setq CMD "solid")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XTEXT (/ CMD NAME CODE72 CODE73 JUSTIFY)
  (PROPS)
  (setq CMD    "dtext"
        NAME   (FLDVAL 7 EL)
        CODE72 (FLDVAL 72 EL)
        CODE73 (FLDVAL 73 EL)
  ) ;_ end of setq
  (setq JUSTIFY
         (cond ((= 0 CODE72) "L")
               ((= 1 CODE72) "C")
               ((= 2 CODE72) "R")
               ((= 3 CODE72) "A")
               ((= 4 CODE72) "M")
               ((= 5 CODE72) "F")
         ) ;_ end of cond
  ) ;_ end of setq
  (setq JUSTIFY
         (strcat
           (cond ((= 1 CODE73) "B")
                 ((= 2 CODE73) "M")
                 ((= 3 CODE73) "T")
                 (t "")
           ) ;_ end of cond
           JUSTIFY
         ) ;_ end of strcat
  ) ;_ end of setq
  (prompt
    (strcat "\nCommand: " CMD " Style " NAME " ")
  ) ;_ end of prompt
  (if (and (zerop CODE72) (zerop CODE73))
    (command CMD "S" NAME)
    (command CMD "S" NAME JUSTIFY)
  ) ;_ end of if
) ;_ end of defun
(defun
     XTRACE (/ CMD WID)
  (PROPS)
  (setq CMD "trace"
        WID (distance (FLDVAL 10 EL) (FLDVAL 11 EL))
  ) ;_ end of setq
  (prompt (strcat "\nCommand: " CMD ""))
  (command CMD WID)
) ;_ end of defun
(defun
     XVPORT (/ CMD PT)
  (PROPS)
  (initget 1)
  (setq CMD ".mview"
        PT  (getpoint
              (strcat "\nCommand: " CMD " First point: ")
            ) ;_ end of getpoint
  ) ;_ end of setq
  (command CMD PT)
) ;_ end of defun
;;; ------------- [FLDVAL]
;;; This sub-routine is called by other
;;; functions/commands and requires an integer
;;; argument,(code), and an entity
;;; list
;;; argument, (elst).  The function will return the
;;; value associated with "CODE" in
;;; "ELST".
(defun FLDVAL (CODE ELST) (cdr (assoc CODE ELST)))
;;; The command, "QUIKDRAW", will begin the AutoCAD
;;; command to draw a similar entity that the user
;;; is
;;; prompted to
;;; select.
;;; Before the command begins, the layer, color, &
;;; linetype properties will be set current, and if
;;; applicable,
;;; other options (e.g. style, scale, width, etc.)
;;; will
;;; be preset before the AutoCAD command is
;;; executed.
(defun
     QUICKDRAW (/ ENT EL)
  (setq M:ERR   *ERROR*
        *ERROR* *MERRMSG*
  ) ;_ end of setq
  (if (setq ENT (car (entsel "\nSelect object: ")))
    (progn
      (setq EL (entget ENT))
      (cond ((= "ARC" (FLDVAL 0 EL)) (XARC))
            ((= "CIRCLE" (FLDVAL 0 EL)) (XCIRCLE))
            ((= "INSERT" (FLDVAL 0 EL)) (XINSERT))
            ((= "LINE" (FLDVAL 0 EL)) (XLINE))
            ((= "POINT" (FLDVAL 0 EL)) (XPOINT))
            ((= "POLYLINE" (FLDVAL 0 EL)) (XPLINE))
            ((= "SHAPE" (FLDVAL 0 EL)) (XSHAPE))
            ((= "SOLID" (FLDVAL 0 EL)) (XSOLID))
            ((= "TEXT" (FLDVAL 0 EL)) (XTEXT))
            ((= "TRACE" (FLDVAL 0 EL)) (XTRACE))
            ((= "VIEWPORT" (FLDVAL 0 EL)) (XVPORT))
            (t
             (alert
               (strcat
                 (FLDVAL 0 EL)
                 " cannot be used with QUICKDRAW"
               ) ;_ end of strcat
             ) ;_ end of alert
            )
      ) ;_ end of cond
    ) ;_ end of progn
    (prompt "\nNothing selected.")
  ) ;_ end of if
  (setq *ERROR* M:ERR
        M:ERR NIL
  ) ;_ end of setq
  (princ)
) ;_ end of defun
(defun C:QUICKDRAW () (QUICKDRAW))
(defun C:Q () (QUICKDRAW))

Re: Приёмы ускорения работы в AutoCAD

> Vova
Да, это именно ТА идея. Впору начинать тяжбу за первенство :), если б не истек срок давности. Но, как и у меня, выполнено на уровне идеи. Придется ждать Autodesk :(

Re: Приёмы ускорения работы в AutoCAD

BEST COMMAND!!!
Save(As)... Alt+F4!!!
TEMA 3AKPbITA!!! ;)

Re: Приёмы ускорения работы в AutoCAD

Черта с два она закрыта. Вот Vova дал материал, достойный не
мальчика, а мужа. И ttt молодец. Придется поработать в этом направлении. Это - системная идея, а все остальное в этой теме - детская болезнь профанов и анахоретов.
Я думаю, Autodesk не будет этим заниматься, это скорее может
появится в Express Tools.

(изменено: Largo_GT, 17 апреля 2009г. 00:40:03)

Re: Приёмы ускорения работы в AutoCAD

Эта идея программы (от ttt) действительно заставляет задуматься...  Я не верю что гуру Acada, остановились на этом и их не точит желание реализовать эту идею!!
Очень интересно что же случилось дальше!!
2Vova
QUICKDRAW-серьезная весч! вот только в 2007 не все работает :(
Наверное есть уже более новая версия? ;)

Re: Приёмы ускорения работы в AutoCAD

В архитектурном AA-2009-eng работает.
В архитектурном AA-2009-eng идея отрисовки по образцу реализована только для архитектурных объектов wall, door и т.п.  (пункт контекстного меню арх. объекта - "Add Selected")


Largo_GT пишет:

вот только в 2007 не все работает

похоже это в руском 2007
чтобы заработало попробуйте поставить подчерк _  перед именами англ.команд

вместо line _line и т.д.


>> Vova, за QUICKDRAW спасибо!!!

(изменено: Valery Brelovsky, 17 апреля 2009г. 09:34:32)

Re: Приёмы ускорения работы в AutoCAD

Yuriy,
Вы говорите о QUICKDRAW? Я попробовал в 2000 с блоками, а вот с линиями и полилиниями проблема да и с текстом. Я может много хочу от этой программы чего в ней нет.

(изменено: Владимир Азарко, 26 апреля 2009г. 22:56:58)

Re: Приёмы ускорения работы в AutoCAD

[FONT=Arial]Редакция 26.04.2009[/FONT]
В развитие системной идеи:

  • Должно работать в локализованных версиях

  • (NEW)Добавлена обработка POLYLINE (POLYLINE RECTANG R3P)

  • Добавлена обработка ELLIPSE

  • Добавлена обработка ELLIPSE ARC

  • (NEW)Добавлена обработка DIMENSION

  • (NEW)Добавлена обработка 3DPOLYLINE

  • (NEW)Добавлена обработка HATCH

;_Tip1381.LSP:  QUICKDRAW.LSP   Quickly draw another   ©1997, Rory Love
;_ Modify 16.04.2009 by VVA (Vladimir Azarko) :
;_ - Commands for the localised versions are adapted
;_ - Processing of primitive things is added (LWPOLYLINE, ELLIPSE, ELLIPSE ARC)
;_ - Add CLIP selected VIEWPORT
;_ posted https://www.caduser.ru/forum/topic9651.html
(vl-load-com)
(defun
     *MERRMSG* (MSG)
  (princ MSG)
  (setvar "cecolor" "BYLAYER")
;;;  (setvar "blipmode" 1)
  (setvar "cmdecho" 0)
  (setvar "menuecho" 2)
  (setq *ERROR* M:ERR
        M:ERR NIL
  ) ;_ end of setq
  (princ)
) ;_ end of defun
(defun
     PROPS (/ COLOR LTYPE)
  (setvar "clayer" (FLDVAL 8 EL))
  (setvar
    "cecolor"
    (if (setq COLOR (FLDVAL 62 EL))
      (itoa COLOR)
      "bylayer"
    ) ;_ end of if
  ) ;_ end of setvar
  (setvar
    "celtype"
    (if (setq LTYPE (FLDVAL 6 EL))
      LTYPE
      "bylayer"
    ) ;_ end of if
  ) ;_ end of setvar
) ;_ end of defun
(defun
     XARC (/ CMD)
  (PROPS)
  (setq CMD "_ARC")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XCIRCLE ( / CMD)
  (PROPS)
  (setq CMD "_circle")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XELLIPSE ( IsFullEllipse / CMD)
  (PROPS)
  ;;IsFullEllipse - t - ellipse nil -arc
  (setq CMD "_.ELLIPSE")
  (prompt (strcat "\nCommand: " CMD " "))
  (if IsFullEllipse
  (command CMD)
  (command CMD "_ARC")
    )
) ;_ end of defun
(defun
     XINSERT (/ CMD NAME XSIZE YSIZE ANG)
  (PROPS)
  (setq CMD   "_INSERT"
        NAME  (FLDVAL 2 EL)
        XSIZE (FLDVAL 41 EL)
        YSIZE (FLDVAL 42 EL)
        ANG   (FLDVAL 50 EL)
  ) ;_ end of setq
  (prompt (strcat "\nCommand: " CMD " " NAME))
  (command
    CMD
    NAME
    "_X"
    XSIZE
    "_Y"
    YSIZE
    "_R"
    (angtos ANG)
  ) ;_ end of command
) ;_ end of defun
(defun
     XLINE (/ CMD)
  (PROPS)
  (setq CMD "_.LINE")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XPOINT (/ CMD)
  (PROPS)
  (setq CMD "_POINT")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun X3DPLINE ( / CMD)
  (PROPS)
  (setq CMD "_.3DPOLY")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XPLINE ( EL / CMD WHAT)
(initget "Pline REctang R3P")
(setq WHAT (getkword "\nAs we will draw a polyline? [Pline/REctang/R3P] <Pline> :"))
(PROPS)
(cond ((= WHAT "REctang")
       (setq CMD "_.RECTANG")
       (prompt (strcat "\nCommand: " CMD " "))
       (command CMD "_W"  (FLDVAL 40 EL))
       )
      ((= WHAT "R3P")
       (prompt (strcat "\nCommand: R3P"))
       (C:R3P)
       )
      (t (setq CMD "_.PLINE")
       (setvar "PLINEWID" (FLDVAL 40 EL))
       (command CMD)
       )
      )
) ;_ end of defun
(defun
     XDIM ( EL / CMD WHAT)
(PROPS)
(cond ((member '(100 . "AcDbRotatedDimension") EL)
       (setq CMD "_.DIMLINEAR")
       )
      ((member '(100 . "AcDbAlignedDimension") EL)
       (setq CMD "_.DIMALIGNED")
       )
      ((member '(100 . "AcDbArcDimension") EL)
       (setq CMD "_.DIMARC")
       )
      ((member '(100 . "AcDb3PointAngularDimension") EL)
       (setq CMD "_.DIMANGULAR")
       )
      ((member '(100 . "AcDbDiametricDimension") EL)
       (setq CMD "_.DIMDIAMETER")
       )
      ((member '(100 . "AcDbRadialDimension") EL)
       (setq CMD "_.DIMRADIUS")
       )
      ((member '(100 . "AcDbOrdinateDimension")  EL)
       (setq CMD "_.DIMORDINATE")
       )
      (t (setq CMD "_.DIMLINEAR")
       )
  )
(prompt (strcat "\nCommand: " CMD " "))
(command CMD)
)
(defun
     XHATCH ( EL / CMD WHAT)
 (setq CMD "_.BHATCH")
 (setvar "HPANG" (FLDVAL 52 EL))
 (setvar "HPSCALE" (FLDVAL 41 EL))
 (setvar "HPNAME" (FLDVAL 2 EL))
 (prompt (strcat "\nCommand: " CMD " ")) 
 (PROPS)
 (vla-sendcommand
   (vla-get-activedocument (vlax-get-acad-object))
   "_.BHATCH\n")
 ;;; (command CMD)
)
(defun
     XSHAPE (/ CMD NAME SCALE)
  (PROPS)
  (setq CMD   "_shape"
        NAME  (FLDVAL 2 EL)
        SCALE (FLDVAL 40 EL)
  ) ;_ end of setq
  (prompt
    (strcat
      "\nCommand: "
      CMD
      " "
      NAME
      " Starting point: "
    ) ;_ end of strcat
  ) ;_ end of prompt
  (command CMD NAME PAUSE SCALE)
) ;_ end of defun
(defun
     XSOLID (/ CMD)
  (PROPS)
  (setq CMD "_solid")
  (prompt (strcat "\nCommand: " CMD " "))
  (command CMD)
) ;_ end of defun
(defun
     XTEXT (/ CMD NAME CODE72 CODE73 JUSTIFY)
  (PROPS)
  (setq CMD    "_dtext"
        NAME   (FLDVAL 7 EL)
        CODE72 (FLDVAL 72 EL)
        CODE73 (FLDVAL 73 EL)
  ) ;_ end of setq
  (setq JUSTIFY
         (cond ((= 0 CODE72) "_L")
               ((= 1 CODE72) "_C")
               ((= 2 CODE72) "_R")
               ((= 3 CODE72) "_A")
               ((= 4 CODE72) "_M")
               ((= 5 CODE72) "_F")
         ) ;_ end of cond
  ) ;_ end of setq
  (setq JUSTIFY
         (strcat
           (cond ((= 1 CODE73) "_B")
                 ((= 2 CODE73) "_M")
                 ((= 3 CODE73) "_T")
                 (t "")
           ) ;_ end of cond
           JUSTIFY
         ) ;_ end of strcat
  ) ;_ end of setq
  (prompt
    (strcat "\nCommand: " CMD " Style " NAME " ")
  ) ;_ end of prompt
  (if (and (zerop CODE72) (zerop CODE73))
    (command CMD "_S" NAME)
    (command CMD "_S" NAME JUSTIFY)
  ) ;_ end of if
) ;_ end of defun
(defun
     XTRACE (/ CMD WID)
  (PROPS)
  (setq CMD "_trace"
        WID (distance (FLDVAL 10 EL) (FLDVAL 11 EL))
  ) ;_ end of setq
  (prompt (strcat "\nCommand: " CMD ""))
  (command CMD WID)
) ;_ end of defun
(defun
     XVPORT ( ENT / CMD PT PT1 PT2 VP1)
  (initget "Clip")
  (setq CMD "_.mview"
        PT  (getpoint
              (strcat "\nCommand: " CMD " Pick first point or [Clip select viewport] <Clip>: ")
            ) ;_ end of getpoint
  ) ;_ end of setq
  (cond
    ((and PT (listp PT))(PROPS)(command CMD PT))
    (t
     (vl-load-com)
     (if (vlax-write-enabled-p (vlax-ename->vla-object ENT))
       (progn
     (setvar "CMDECHO" 0)
     (and
       (setq PT1 (getpoint "\nFirst point clipped rectangle <exit>: "))
       (setq PT2 (getcorner PT1 "\nSecond point clipped rectangle <exit>: "))
       (vl-cmdf "_.COPY" ENT "" "_non" "@" "_non"  "@" "")
       (setq VP1 (entlast))
       (vl-cmdf "_.Rectang" "_non" PT1 "_non" PT2)
       (setq PT nil PT (entlast))
       (or (command)(command) t)
       (vl-cmdf "_.VPCLIP" VP1 "_D")
       (or (command)(command) t)
       (vl-cmdf "_.VPCLIP"  VP1  PT)
       (or (command)(command) t)
       (vl-cmdf "_.VPCLIP" VP1 "_D")
       (or (command)(command) t)
       (setvar "CMDECHO" 1)
       (vl-cmdf "_.MOVE" VP1 "" (polar PT1 (angle PT1 PT2)(* 0.5 (distance PT1 PT2))))
       )
     )
       (alert "VIEWPORT on locket layer")
       )
     )
    )
) ;_ end of defun
(defun C:R3P ( / *error* pt1 pt2 pt1W pt2W ucs ucf isRus)
  (vl-load-com)
  (defun *error* (msg)(princ msg)
    (if ucs
    (progn
      (command "_.UCS" "_R" "TmpUcs")
      (command "_.UCS" "_D" "TmpUcs")
      )
    )
    (setvar "UCSFOLLOW" ucf)(vla-endundomark *adoc*)
    (princ)) ;_ end of defun
  (vl-load-com)
(or *adoc* (setq *adoc* (vla-get-activedocument (vlax-get-acad-object))))
(setvar "CMDECHO" 0)(setvar "EXPERT" 5)
(vla-startundomark *adoc*)
 (command "_.UCS" "_Save" "TmpUcs")
  (setq isRus (= (getvar "DWGCODEPAGE") "ANSI_1251")
          ucf (getvar "UCSFOLLOW"))
  (setvar "UCSFOLLOW" 0)
  (initget 1)
  (setq pt1 (getpoint
              (if isRus
                "\nПервая точка прямоугольника:"
                "\nThe first point of a rectangular:"
              ) ;_ end of if
            ) ;_ end of getpoint
  ) ;_ end of setq
  (setq pt1W (trans pt1 1 0))
  (initget 1 "Angle Угол _Angle Angle")
  (setq pt2 (getpoint pt1
                      (if isRus
                        "\nВторая точка прямоугольника [Угол]:"
                        "\nThe second point of a rectangular [Angle]:"
                      ) ;_ end of if
            ) ;_ end of getpoint
  ) ;_ end of setq
  (if (= pt2 "Angle")
    (progn
      (if (null (setq pt2 (getangle
                            (if isRus
                              "\nУкажите угол <0>: "
                              "\nEnter new angle <0>: "
                              ) ;_ end of if
                            )
                      )
                )
        (setq pt2 0)
        )
      (setq ucs (vl-cmdf "_.UCS"
                     "_N"
                     "_3"
                     "_non" pt1
                     "_non" (setq pt2 (polar pt1 pt2 10))
                     "_non" (polar pt2 (+ (angle pt1 pt2) (* 0.5 PI)) 10)
            ) ;_ end of vl-cmdf
  ) ;_ end of setq
        (setvar "orthomode" 1)
        (initget 1)
        (setq pt2 (getpoint (setq pt1 (trans pt1W 0 1))
                      (if isRus
                        "\nВторая точка прямоугольника:"
                        "\nThe second point of a rectangular:"
                      ) ;_ end of if
            ) ;_ end of getpoint
  ) ;_ end of setq
      
      );_progn
      )
  (setq pt1W (trans pt1 1 0)
        pt2W (trans pt2 1 0))
  (setq ucs (vl-cmdf "_.UCS"
                     "_N"
                     "_3"
                     "_non" pt1
                     "_non" pt2
                     "_non" (polar pt2 (+ (angle pt1 pt2) (* 0.5 PI)) 10)
            ) ;_ end of vl-cmdf
  ) ;_ end of setq
    (setvar "CMDECHO" 1)
  (command "_.RECTANGLE"
           "_non" (trans pt1W 0 1)
           ".X"
           "_non"  (trans pt2W 0 1)
  ) ;_ end of command
  (while (> (getvar "CMDACTIVE") 0)(command pause))
  (if ucs
    (progn
      (command "_.UCS" "_R" "TmpUcs")
      (command "_.UCS" "_D" "TmpUcs")
      )
    ) ;_ end of if
  (setvar "UCSFOLLOW" ucf)
(vla-endundomark *adoc*)
  (princ)
)

;;; ------------- [FLDVAL]
;;; This sub-routine is called by other
;;; functions/commands and requires an integer
;;; argument,(code), and an entity
;;; list
;;; argument, (elst).  The function will return the
;;; value associated with "CODE" in
;;; "ELST".
(defun FLDVAL (CODE ELST) (cdr (assoc CODE ELST)))
;;; The command, "QUIKDRAW", will begin the AutoCAD
;;; command to draw a similar entity that the user
;;; is
;;; prompted to
;;; select.
;;; Before the command begins, the layer, color, &
;;; linetype properties will be set current, and if
;;; applicable,
;;; other options (e.g. style, scale, width, etc.)
;;; will
;;; be preset before the AutoCAD command is
;;; executed.
(defun
     QUICKDRAW (/ ENT EL)
  (setq M:ERR   *ERROR*
        *ERROR* *MERRMSG*
  ) ;_ end of setq
  (if (setq ENT (car (entsel "\nSelect object: ")))
    (progn
      (setq EL (entget ENT))
      (cond ((= "ARC" (FLDVAL 0 EL)) (XARC))
            ((= "CIRCLE" (FLDVAL 0 EL)) (XCIRCLE))
        ((= "ELLIPSE" (FLDVAL 0 EL))
         (XELLIPSE (and
             (zerop (FLDVAL 41 EL))
             (equal (FLDVAL 42 EL) (* 2 PI) 1e-9)
             )
               )
         )
            ((= "INSERT" (FLDVAL 0 EL)) (XINSERT))
            ((= "HATCH" (FLDVAL 0 EL)) (XHATCH EL))
            ((= "LINE" (FLDVAL 0 EL)) (XLINE))
            ((= "POINT" (FLDVAL 0 EL)) (XPOINT))
        ((and (= "POLYLINE" (FLDVAL 0 EL))
          (= 8 (FLDVAL 70 EL))) (X3DPLINE))
            ((wcmatch  (FLDVAL 0 EL) "*POLYLINE") (XPLINE EL))
        ((wcmatch  (FLDVAL 0 EL) "*DIMENSION") (XDIM EL))
            ((= "SHAPE" (FLDVAL 0 EL)) (XSHAPE))
            ((= "SOLID" (FLDVAL 0 EL)) (XSOLID))
            ((= "TEXT" (FLDVAL 0 EL)) (XTEXT))
            ((= "TRACE" (FLDVAL 0 EL)) (XTRACE))
            ((= "VIEWPORT" (FLDVAL 0 EL)) (XVPORT ENT))
            (t
             (alert
               (strcat
                 (FLDVAL 0 EL)
                 " cannot be used with QUICKDRAW"
               ) ;_ end of strcat
             ) ;_ end of alert
            )
      ) ;_ end of cond
    ) ;_ end of progn
    (prompt "\nNothing selected.")
  ) ;_ end of if
  (setq *ERROR* M:ERR
        M:ERR NIL
  ) ;_ end of setq
  (princ)
) ;_ end of defun
(defun C:QUICKDRAW () (QUICKDRAW))
(defun C:Q () (QUICKDRAW))

Re: Приёмы ускорения работы в AutoCAD

Интересная идея.
Но больше интересует не тип созданного объекта, а метод, например примитив "LWPOLYLINE" может быть создан как _pline , так и _rectang или какой-либо пользовательской функцией R3P

Re: Приёмы ускорения работы в AutoCAD

Можно проверить полилинию на замкнутость и количество вершин и перпендикулярность сегментов. И если сегменты перпендикулярны, линейны, полилиния замкнута и вершин 3, то вызывать _rectang. А оно надо?
Можно сделать проще, при обработке полилинии добавить опции "Прямоугольник" и R3P
Думаю это будет лучше.

Re: Приёмы ускорения работы в AutoCAD

Владимир Азарко пишет:

Можно сделать проще, при обработке полилинии добавить опции "Прямоугольник" и R3P
Думаю это будет лучше.

Это будет не проще, а корректнее, не каждый прямоугольник создан _rectang.
И не совсем удобно каждый раз выбирать образец:
В данную программу хотелось бы добавит: в функцию PROPS(setvar "CELWEIGHT" (FLDVAL 370 EL)), может ещё какие-нибудь свойства. Куда-нибудь запомнить (FLDVAL 0 EL) и всё из PROPS
И сделать другую кнопку которая сразу будет вызывать последнию использованную функцию Х* с нужными свойствами.
А то сам я как-то стесняюсь.

(изменено: Largo_GT, 17 апреля 2009г. 22:03:49)

Re: Приёмы ускорения работы в AutoCAD

Yuriy пишет:


похоже это в руском 2007
чтобы заработало попробуйте поставить подчерк _ перед именами англ.команд

без "_" в русcком 2007 вообще бы ничего не работало.

2 Владимир Азарко
можете добавить в развитие системной идеи команды Hatch и Dim ?
и тогда эта программа может претендовать на добавление в раздел "Готовые программы"

(изменено: Yuriy, 25 апреля 2009г. 13:13:02)

Re: Приёмы ускорения работы в AutoCAD

Для поддержки трехмерных полилиний к коду Владимира Азарко, добавил

функцию

(defun 
     XPLINE3 (/ CMD) 
  (PROPS) 
  (setq CMD "_3dpoly") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun

можно вставить перед
(defun
     XSHAPE (/ CMD NAME SCALE) ...


строку

((and (wcmatch      (FLDVAL 0 EL) "*POLYLINE") (= 8 (FLDVAL 70 EL))) (XPLINE3))

вставить перед
((wcmatch  (FLDVAL 0 EL) "*POLYLINE") (XPLINE))
...

(изменено: Valery Brelovsky, 25 апреля 2009г. 09:03:09)

Re: Приёмы ускорения работы в AutoCAD

Yuriy пишет:

Для поддержки трехмерных полилиний к коду Владимира Азарко, добавил

Извиняюсь, но я в программировании не разбираюсь куда нужно добавить Ваш код. Просто скопировать и вставить в конце предыдущего? :)
К стати ко всему прочему после использования выше приведённой программы появляются при каждом клике (в месте клика), исчезают после зуммирования маленькие крестики.
после установки blipmode = 0 работает нормально. Как бы подправить программу чтобы исключить их самопроизвольное появление.

Да и кажется программу нужно было бы перенести в раздел готовых программ.

(изменено: Yuriy, 25 апреля 2009г. 09:30:57)

Re: Приёмы ускорения работы в AutoCAD

Valery Brelovsky пишет:

куда нужно добавить Ваш код

Внес поправки в сообщение от 17.04.2009 23:33:39

Re: Приёмы ускорения работы в AutoCAD

Yuriy,
Спасибо вставил по указанным адресам. Вот только что то не получается. Выбираю 3д полилинию а вычерчивается обычная полилиния. :)

Re: Приёмы ускорения работы в AutoCAD

Valery Brelovsky пишет:

Выбираю 3д полилинию а вычерчивается обычная полилиния.

Внес поправку в сообщение от 17.04.2009 23:33:39

вторая часть кода должна обязательно предшествовать
((wcmatch (FLDVAL 0 EL) "*POLYLINE") (XPLINE))

Re: Приёмы ускорения работы в AutoCAD

Yuriy пишет:

вторая часть кода должна обязательно предшествовать

((wcmatch (FLDVAL 0 EL) "*POLYLINE") (XPLINE))

Спасибо всё получилось. Теперь чертит 3д линию. :)

(изменено: Владимир Азарко, 26 апреля 2009г. 22:58:52)

Re: Приёмы ускорения работы в AutoCAD

Отредактировал код в предыдущем посте.
Добавлено:
оработка 3DPOLYLINE
обработка POLYLINE (POLYLINE RECTANG R3P)
обработка DIMENSION
обработка HATCH
добавлена опция CLIP к VIEWPORT

+ еще один нюанс при работе с видовыми экранами (VIEWPORT)
При обработке видового экрана можно как строить новый, так и делать подрезанную
копию выбранного
.
+ теперь вас не будут мучать белые крестики и зеленые человечки  :)

Re: Приёмы ускорения работы в AutoCAD

Владимир Азарко,
Опробовал Ваши изменения в программе в части HATCH и DIMENSION. Скажу что впечатляет. Теперь одна кнопка а столько возможностей. Можно работать хоть с клавиатуры хоть с кнопки. Спасибо Вам большое. :)

Re: Приёмы ускорения работы в AutoCAD

Valery Brelovsky пишет:

Скажу что впечатляет.

Присоединяюсь!
Супер!!
Владимиру, спасибо!!!

Пока заметил сл. недостатки
- если цвет образца был не "bylayer" после завершения программы он не возвращается в исходное состояние.

- при выборе углового размера вызывается линейный


продолжаю тестирование ...

строку
(if (setq ENT (car (entsel "\nSelect object: ")))

заменил на
(if (setq ENT (car (entsel "\nВыберите образец для создания ему подобных: ")))

Re: Приёмы ускорения работы в AutoCAD

Владимир Азарко,
Опробовал в рабочем режиме. Со штриховками нет вопросов.
С поллиниями две дополнительные функции раздражали. Если я уже выбра черить полилинию то прямоугольник не к чему. И если мне нужно прямоугольник то лучше зайти в рисовать, и выбрать функцию прямоугольника.  В первом варианте сразу выходит на точку и рисовал (чертил линию) в новом нужно было вспоминать что не нажал Ввод.
А вот с размерами если возможно. Воспринимает стой размера, а размер по текущему стилю. Хорошо бы было если бы в размере не только слой но и стиль выставлялся по образцу.
Но все ровно программа класс и этого у неё не отнимешь.
С благодарностью Вам. :)