(изменено: Владимир Азарко, 6 мая 2009г. 17:47:47)

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

[COLOR=red][B]Редакция 06.05.2006[/B][/COLOR]
Добавлено:
[B]1.[/B]Переменная TEXTSIZE устанавливается равной высоте выбранного текста

B]Редакция 04.05.2006[/B]
Добавлено:
[B]1.[/B]Угловой размер AcDb3PointAngularDimension
[B]2.[/B]Анализ предварительного выбора
[B]3.[/B]Восстановление свойств по Ctrl+Z

[B]Редакция 01.05.2006[/B]
Добавлены команды
  [B]Q[/B] - только QUICKDRAW
  [B]QR[/B] - QUICKDRAW с восстановлением свойств обратно

[B]Редакция 29.04.2006[/B]

[B]1.[/B]Исправлена штриховка (SOLID)
[B]2.[/B]Эффективное имя динамического блока + восстановление динамических свойств

[B]Редакция 27.04.2006[/B]
Valery Brelovsky,
[B]1.[/B] Оставил при отрисовке полилинии две дополнительные ф-ции и возможность чертить полилинию сразу указывая точку.
[B]2.[/B] Добавил в размеры стиль
[B]3.[/B] Добавил восстановление предыдущих настроек слоя, цвета, типа линии, веса по завершении команды.
В связи с этим в 2-х местах (HATCH и TEXT) пришлось использовать командные реакторы. В Автокаде проблем нет. Требуется тестирование в вертикальных решениях. Поэтому выкдавываю новую версию отдельно.

;_ Редакция 06.05.2009 
;_Tip1381.LSP:  QUICKDRAW.LSP   Quickly draw another   ©1997, Rory Love 
;_ posted https://www.caduser.ru/forum/ 
(vl-load-com) 
(defun RESTOREPROPS () 
(mapcar 
'(lambda(x y) 
   (setvar x y) 
) 
'("clayer" "cecolor" "celtype" "celweight") 
*PREVPROPS* 
) 
(setq  *PREVPROPS* nil) 
(princ)         
  ) 
(defun PROPS ( EL / COLOR LTYPE) 
  (setq *PREVPROPS* 
    (list (getvar "clayer") 
          (getvar "cecolor") 
          (getvar "celtype") 
          (getvar "celweight") 
          ) 
   ) 
  (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 
  (setvar 
    "celweight" 
    (if (setq LTYPE (FLDVAL 370 EL)) 
      LTYPE 
     -1 
    ) ;_ end of if 
  ) ;_ end of setvar 
) ;_ end of defun 
(defun XARC ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_ARC") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun XCIRCLE ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_circle") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun XELLIPSE ( EL IsFullEllipse / CMD) 
  (PROPS EL) 
  ;;IsFullEllipse - t - ellipse nil -arc 
  (setq CMD "_.ELLIPSE") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (if IsFullEllipse 
  (command CMD) 
  (command CMD "_ARC") 
    ) 
) ;_ end of defun 
(defun XINSERT ( EL / CMD NAME XSIZE YSIZE ANG blk DynPropList) 
  (PROPS EL) 
   
  (setq CMD   "_INSERT" 
   blk (vlax-ename->vla-object(FLDVAL -1 EL)) 
;;;       NAME  (FLDVAL 2 EL)  ;;;Rem VVA 29.04.2009 
   NAME (cond 
                     ((and (vlax-property-available-p blk 'isdynamicblock) 
                           (= (vla-get-isdynamicblock blk) :vlax-true) 
                           ) ;_ end of and 
            (setq DynPropList (GetDynamicBlockPropertyList blk)) 
                      (vla-get-effectivename blk) 
                      ) 
                     (t (vla-get-name blk)) 
                     ) ;_ end of cond 
        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 
  (CMDWAIGHT RS) 
  (if (and (setq blk (vlax-ename->vla-object(entlast))) 
      (vlax-property-available-p blk 'isdynamicblock) 
      (= (vla-get-isdynamicblock blk) :vlax-true) 
      ) ;_ end of and 
    (progn 
      (setq NAME (GetDynamicBlockPropertyList blk)) 
      (foreach item NAME 
   (if (setq ANG (assoc (car item) DynPropList)) 
   (vl-catch-all-apply '(lambda() 
            (vla-Put-Value (nth 2 item)(nth 1 Ang)) 
                ) 
     ) 
     ) 
   ) 
      ) 
    ) 
) ;_ end of defun 
(defun XLINE ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_.LINE") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun XPOINT ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_POINT") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun X3DPLINE ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_.3DPOLY") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun XPLINE ( EL / CMD WHAT) 
(initget "Pline REctang R3P") 
(setq WHAT (getpoint "\nPick a first point of polyline or [Pline/REctang/R3P] <Pline> :")) 
(PROPS EL) 
(cond ((= WHAT "REctang") 
       (setq CMD "_.RECTANG") 
       (prompt (strcat "\nCommand: " CMD " ")) 
       (command CMD "_W"  (FLDVAL 40 EL)) 
       ) 
      ((= WHAT "R3P") 
       (prompt (strcat "\nCommand: R3P")) 
       (C:R3P) 
       ) 
      ((and WHAT (listp WHAT)) 
       (setq CMD "_.PLINE") 
       (setvar "PLINEWID" (FLDVAL 40 EL)) 
       (command CMD WHAT) 
       ) 
      (t (setq CMD "_.PLINE") 
       (setvar "PLINEWID" (FLDVAL 40 EL)) 
       (command CMD) 
       ) 
      ) 
) ;_ end of defun 
(defun XDIM ( EL / CMD WHAT) 
(PROPS EL) 
(cond ((member '(100 . "AcDbRotatedDimension") EL) 
       (setq CMD "_.DIMLINEAR") 
       ) 
      ((member '(100 . "AcDbAlignedDimension") EL) 
       (setq CMD "_.DIMALIGNED") 
       ) 
      ((member '(100 . "AcDbArcDimension") EL) 
       (setq CMD "_.DIMARC") 
       ) 
      ((or 
    (member '(100 . "AcDb3PointAngularDimension") EL) 
    (member '(100 . "AcDb2LineAngularDimension") 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 " ")) 
(sssetfirst nil nil) 
(while (> (getvar "CMDACTIVE") 0)(command))   
(command  "_.DIMSTYLE" "_R" (FLDVAL 3 EL)) 
;;(command  "_.DIMSTYLE" "" "" (FLDVAL -1 EL)) 
;;; Valery Brelovsky 
;;; (GRAPHSCR)   
(command CMD) 
) 
(defun XHATCH ( EL / CMD) 
(setq CMD "_.BHATCH") 
  (if (FLDVAL 52 EL) 
    (setvar "HPANG" (FLDVAL 52 EL))) 
  (if (FLDVAL 41 EL) 
    (setvar "HPSCALE" (FLDVAL 41 EL))) 
(setvar "HPNAME" (FLDVAL 2 EL)) 
(prompt (strcat "\nCommand: " CMD " ")) 
(PROPS EL) 
(vla-sendcommand 
   (vla-get-activedocument (vlax-get-acad-object)) 
   "_.BHATCH\n") 
;;; (command CMD) 
) 
(defun XSHAPE ( EL / CMD NAME SCALE) 
  (PROPS EL) 
  (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 ( EL / CMD) 
  (PROPS EL) 
  (setq CMD "_solid") 
  (prompt (strcat "\nCommand: " CMD " ")) 
  (command CMD) 
) ;_ end of defun 
(defun XTEXT ( EL / CMD NAME CODE72 CODE73 JUSTIFY) 
  (PROPS EL) 
  (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
  (setvar "TEXTSIZE" (FLDVAL 40 EL))
  (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 ( EL / CMD WID) 
  (PROPS EL) 
  (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) 
  (PROPS (entget ENT)) 
  (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))(command CMD PT)(CMDWAIGHT RS)) 
    (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) 
      (or (vl-cmdf "_.VPCLIP" VP1 "_D") t) 
      (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") 
       ) 
     (RESTOREPROPS) 
     ) 
    ) 
) ;_ 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 *QDADOC*) 
    (princ)) ;_ end of defun 
(vl-load-com) 
(or *QDADOC* (setq *QDADOC* (vla-get-activedocument (vlax-get-acad-object)))) 
(setvar "CMDECHO" 0)(setvar "EXPERT" 5) 
(vla-endundomark *QDADOC*)   
(vla-startundomark *QDADOC*) 
(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 *QDADOC*) 
  (princ) 
) 
;;Возвращает список всех свойст динамического блока в виде списка 
;((Имя_свойства Текущее_значение Vla_объект_свойства)...) 
;; obj - Vla-указатель дин блока (vla-object) 
;;Пример 
;;(GetDynamicBlockPropertyList (vlax-ename->vla-object(car(entsel "\nВыбeри дин блок:")))) 
;;(("Видимость" "Канализация" #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15246fe4>) 
;;   ("Угол" 0.115395 #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15240fe4>) ...) 

(defun GetDynamicBlockPropertyList (obj / lstProperties) 
(if (and (vlax-property-available-p obj "IsDynamicBlock") 
          (= (vla-get-IsDynamicBlock obj) :vlax-true) 
          (setq lstProperties (vlax-safearray->list 
                                           (variant-value 
                                            (vla-GetDynamicBlockProperties obj))))) 
  (progn 
   (mapcar '(lambda (x)(list (vla-get-propertyname X) 
                             (variant-value (vla-get-value X)) 
                             x 
                             )) 
           lstProperties)))) 

;;; ------------- [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))) 
(defun CMDSTARTREACT ( RS ) 
  (if RS (progn 
  (if (not *QUICKDRAWCMDREACT*) 
     (setq *QUICKDRAWCMDREACT* (vlr-editor-reactor nil 
             '( 
               (:vlr-commandEnded . CMDWAIGHTREACT) 
               (:vlr-commandCancelled . CMDWAIGHTREACT) 
               (:vlr-commandFailed . CMDWAIGHTREACT) 
               ) 
             ) 
      ) 
  ) 
  (if (and (= (type *QUICKDRAWCMDREACT*) 'VLR-Editor-Reactor ) 
      (not (vlr-added-p *QUICKDRAWCMDREACT*)) 
      ) 
    (vlr-add *QUICKDRAWCMDREACT*) 
    ) 
    ));_ IF RS 
  ) 
(defun CMDWAIGHTREACT (objCall lstCallback)(RESTOREPROPS) 
  (if (vlr-added-p objCall)(vlr-remove objCall)) 
  (vla-endundomark *QDADOC*) 
  ) 
(defun CMDWAIGHT ( RS ) 
  ;;; RS - restore settings 
  ;;;     t - restore 
  ;;;     nil - not 
(if RS (progn   
(while (> (getvar "CMDACTIVE") 0)(command pause)) 
(RESTOREPROPS)));_ IF RS 
(vla-endundomark *QDADOC*) 
) 
;;; 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 ( RS / ENT EL *ERROR*) 
  ;;; RS - restore settings 
  ;;;     t - restore 
  ;;;     nil - not 
  (defun *ERROR* (MSG) 
  (princ MSG) 
  (if RS (RESTOREPROPS)) 
  (vla-endundomark *QDADOC*) 
  (princ) 
) ;_ end of defun 
(vl-load-com) 
(or *QDADOC* 
    (setq *QDADOC* (vla-get-activedocument (vlax-get-acad-object))) 
    ) 
(vla-endundomark *QDADOC*) 
(vla-startundomark *QDADOC*) 
(setvar "CMDECHO" 1) 
(setq ent (cadr(ssgetfirst))) 
(if ent 
    (setq ent (ssname ent 0)) 
    (setq ENT (car (entsel "\nSelect object: "))))   
(if ENT 
    (progn 
      (setq EL (entget ENT)) 
      (cond ((= "ARC" (FLDVAL 0 EL)) (XARC EL)(CMDWAIGHT RS)) 
            ((= "CIRCLE" (FLDVAL 0 EL)) (XCIRCLE EL)(CMDWAIGHT RS)) 
       ((= "ELLIPSE" (FLDVAL 0 EL)) 
        (XELLIPSE EL (and 
          (zerop (FLDVAL 41 EL)) 
          (equal (FLDVAL 42 EL) (* 2 PI) 1e-9) 
          ) 
             ) 
        (CMDWAIGHT RS) 
        ) 
            ((= "INSERT" (FLDVAL 0 EL)) (XINSERT EL)) 
            ((= "HATCH" (FLDVAL 0 EL))(CMDSTARTREACT RS)(XHATCH EL)) 
            ((= "LINE" (FLDVAL 0 EL)) (XLINE EL)(CMDWAIGHT RS)) 
            ((= "POINT" (FLDVAL 0 EL)) (XPOINT EL)(CMDWAIGHT RS)) 
       ((and (= "POLYLINE" (FLDVAL 0 EL)) 
        (= 8 (FLDVAL 70 EL))) (X3DPLINE EL)(CMDWAIGHT RS)) 
            ((wcmatch  (FLDVAL 0 EL) "*POLYLINE") (XPLINE EL)(CMDWAIGHT RS)) 
       ((wcmatch  (FLDVAL 0 EL) "*DIMENSION") (XDIM EL)(CMDWAIGHT RS)) 
            ((= "SHAPE" (FLDVAL 0 EL)) (XSHAPE EL)(CMDWAIGHT RS)) 
            ((= "SOLID" (FLDVAL 0 EL)) (XSOLID EL)(CMDWAIGHT RS)) 
            ((= "TEXT" (FLDVAL 0 EL))(CMDSTARTREACT RS)(XTEXT EL)) 
            ((= "TRACE" (FLDVAL 0 EL)) (XTRACE EL)(CMDWAIGHT RS)) 
            ((= "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 
  (princ) 
) ;_ end of defun 
;;;(defun C:QUICKDRAW () (QUICKDRAW)) 
(defun C:Q () (QUICKDRAW nil)) 
(defun C:QR () (QUICKDRAW t)) 
(princ "\nType in command line:") 
(princ "\nQR - QUICKDRAW with restore setting") 
(princ "\nQ - only QUICKDRAW")

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

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

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

Владимир Азарко,
Спасибо, что учли мою просьбу, про 3RP (даже вставили её в программу), надеюсь, другие пользователи тоже оценят эту функцию.
А, можно, что бы по Enter/Space вызывалась не Q, а последняя функция X*, или функции X* зациклить, с выходом по желанию пользователя?

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

Valery Brelovsky пишет:

Единственное, что не работаю с вертикальными решениями и не могу их опробовать.

Постараюсь сегодня опробовать в AA,MEP-2009-eng

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

Владимир Азарко,
Опробовал. С полилиниями та хорошо есть вариантность и если не необходимости то сразу чертится линия.
С размерами не очень получилось
Стиль определяется по образцу, размер ставится по объекту. Т.е. не по выбранным точкам, предлагается выбрать объект. И при этом выскакивает окно которое открывается по F2.

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

Valery Brelovsky пишет:

С размерами не очень получилось
Стиль определяется по образцу, размер ставится по объекту. Т.е. не по выбранным точкам, предлагается выбрать объект. И при этом выскакивает окно которое открывается по F2.

У меня AutoCAD 2009 - Русский
Все с размерами нормально, хочешь по точкам, хочешь по объекту(кстати по объекту - прикольно).
И текстовое окно не выскакивает.

(изменено: Владимир Азарко, 28 апреля 2009г. 15:29:31)

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

Valery Brelovsky, Весьма странно. В размерах добавилась только команда _DIMSTYLE для установки текущим стиль выбранного размера.
Впрочем немного изменил редакцию от 27.04.2009 заменил

(command  "_.DIMSTYLE" "" "" (FLDVAL -1 EL))

на

(command  "_.DIMSTYLE" "" (FLDVAL 3 EL))

в функции XDIM
Попробуй еще раз.

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

Владимир Азарко,

Нет не идёт. Вот запись с отчёта.
Select object:
Command: _.DIMALIGNED _.DIMSTYLE
Current dimension style:  ISO-25
Enter a dimension style option
[Save/Restore/STatus/Variables/Apply/?] <Restore>:
Enter a dimension style name, [?] or <select dimension>:
Select dimension: ISO-25

*Invalid selection*
Expects a point or Last
Function cancelled
Select dimension:

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

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

Владимир Азарко,
Я был не прав не назвав версию. Попробовал в 2009 всё нормально,а вот в 2000i выскакивает окно текста WINDOWS после которого нужно кликнуть на области экрана и тогда процесс пойдёт нормально по точкам. Это наверное изменить нельзя? У 2000i есть много глюков.

Это из 2009
Command: Q
Select object:
Command: _.DIMALIGNED _.DIMSTYLE
Current dimension style: ISO-25   Annotative: No
Enter a dimension style option
[ANnotative/Save/Restore/STatus/Variables/Apply/?] <Restore>:
Enter a dimension style name, [?] or <select dimension>: ISO-25
Current dimension style: ISO-25   Annotative: No

Command: _.DIMALIGNED
Specify first extension line origin or <select object>:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle]:
Dimension text = 954.77

А это из 2000i
Command: Q
Select object:
Command: _.DIMALIGNED _.DIMSTYLE
Current dimension style:  ISO-25
Enter a dimension style option
[Save/Restore/STatus/Variables/Apply/?] <Restore>:
Enter a dimension style name, [?] or <select dimension>: ISO-25
Current dimension style:  ISO-25
( в этом месте открыто окно Text WINDOWS)
Command: _.DIMALIGNED
Specify first extension line origin or <select object>:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle]:
Dimension text = 78.58

(изменено: Electr, 29 апреля 2009г. 10:05:15)

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

И еще с блоками проблема Акад 2008 англ. пишет :

_INSERT *U38_INSERT Enter block name or [?]: *U38
"U38.dwg": Can't find file in search path:

хотя имя блока "Щит"
А вообще спасибо большое!!! Очень удобная программа!!!

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

И еще с блоками проблема Акад 2008 англ. пишет :

_INSERT *U38_INSERT Enter block name or [?]: *U38
"U38.dwg": Can't find file in search path:

хотя имя блока "Щит"

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

Electr,
*U__ мнимый блок его и обычным способом не вставить. Копировать можно по моему не помню и не использую. С обычными блоками проблем нет.

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

проверил в AA-2008-2009-eng

при выборе штриховки "SOLID" и "GRADIENT" -
Command: q
Select object: AutoCAD variable setting rejected: "HPANG" nil


При запросе
Pick a first point of polyline or [Pline/REctang/R3P] <Pline> :
наверное вместо опций RE и R3P удобнее бы были R и 3
Pick a first point of polyline or [Pline/Rectang/r3p] <Pline> :

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

Valery Brelovsky пишет:

Electr,
*U__ мнимый блок его и обычным способом не вставить. Копировать можно по моему не помню и не использую. С обычными блоками проблем нет.

Так в том то и дело что блок не мнимый, я его создал, назвал, и вставил в чертеж обычным методом.

(изменено: Владимир Азарко, 29 апреля 2009г. 11:20:10)

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

Electr,

Так в том то и дело что блок не мнимый, я его создал, назвал, и вставил в чертеж обычным методом.

Обычным методом ты вставил динамический блок. Я про него совсем забыл. надо брать эффективное имя. Чуть позже подправлю.
Valery Brelovsky,

Это наверное изменить нельзя? У 2000i есть много глюков

У меня в загашнике есть 2002. Не знаю, есть ли отличия от 2000i :?:  Думаю исправить можно, просто не на чем проверить.

при выборе штриховки "SOLID" и "GRADIENT" -
Command: q
Select object: AutoCAD variable setting rejected: "HPANG" nil

Спасибо, исправлю.

(изменено: Valery Brelovsky, 29 апреля 2009г. 12:27:51)

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

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

Electr,

Valery Brelovsky,

ЦитатаЭто наверное изменить нельзя? У 2000i есть много глюков У меня в загашнике есть 2002. Не знаю, есть ли отличия от 2000i   Думаю исправить можно, просто не на чем проверить.

Сбросте на почту или сюда выложите я опробую. В принципе всё устраивает только в части размеров и то только то что окно выскакивает, а в остальном всё нормально. Или выложите сюда кусок файла на который нужно заменить в части размеров.

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

Обновил до редакции 29.04.2009
Исправлена штриховка и динамические блоки. После вставки динамического блока должны восстанавливаться его свойства.
Valery Brelovsky, Поставил виртуально win98 и Autocad 2000. Код работает, текстовые окна не выскакивают. Попробуй скопировать еще раз (ссылка вначале).

(изменено: Valery Brelovsky, 29 апреля 2009г. 16:38:11)

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

Владимир Азарко,
У меня win_XP загрузил обновления изменений нет окно выскакивает. Мы где то меняли -1 на 3 может вернуть тогда размер выбирался но окна не было.
Наверное это ещё один из глюков несовместимости win_XP с 2000 Автокадом. Так что не стоит ломать голову. С win_98 этого нет. Win из-за этого менять не буду а темболее на работе, а там та же проблема.

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

Valery Brelovsky,
Я ничего не убирал, просто -1 закоментарил (см. в конце ф-ции XDIM)

(prompt (strcat "\nCommand: " CMD " ")) 
(sssetfirst nil nil) 
(while (> (getvar "CMDACTIVE") 0)(command))   
(command  "_.DIMSTYLE" "_R" (FLDVAL 3 EL))    ;;Это закоментарить
;;(command  "_.DIMSTYLE" "" "" (FLDVAL -1 EL));;А Это РАСкоментарить 
(command CMD)

Попробуй перед строкой (command CMD) (в конце ф-ции XDIM)
дописать (GRAPHSCR)?

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

Владимир Азарко, Вы супер. Результатом отличный. Окно мелькает на долю секунды и сразу исчезает и можно продолжать нормально работать. Более плотно дальнейшим тестированием займусь завтра на работе. Сегодня выходной потому смог почти сразу реагировать на Ваши советы. Хотя и тестирования особого для меня уже не требуется. Функции которые меня интересовали работают отлично. Когда фирма перейдёт на более новые версии не известно. Так что если не достаст кпризис и будет работа то работать придётся в 2000i.
Спасибо Вам большое.  :)

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

Что-то совсем в дебри забрались))) Начинающим уже непонятно. Только первые пару страниц.
Сам именно начинающий. Недавно обнаружил одну вещь, может быть повторюсь.
1. Имеем какой либо объект.
2. Выделяем его.
3. Щелкаем мышкой на какой либо ручке, она становится красной.
4. Пробелом перебираем команды, они написаны в этот момент в командной строке.
5. Таким образом мы можем переместить, скопировать, повернуть объект, масштабировать и  т.д. Команды пробелом перебираются циклически. Хотя описано длинно, на деле все происходит очень быстро.
Лепет младенца, конечно, но для меня уже это - откровение. А вдруг есть еще такие же как я? :)

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

nostromo пишет:

Что-то совсем в дебри забрались))) Начинающим уже непонятно. Только первые пару страниц.

Сам именно начинающий. Недавно обнаружил одну вещь, может быть повторюсь.

1. Имеем какой либо объект.

2. Выделяем его.

3. Щелкаем мышкой на какой либо ручке, она становится красной.

4. Пробелом перебираем команды, они написаны в этот момент в командной строке.

5. Таким образом мы можем переместить, скопировать, повернуть объект, масштабировать и  т.д. Команды пробелом перебираются циклически. Хотя описано длинно, на деле все происходит очень быстро.

Лепет младенца, конечно, но для меня уже это - откровение. А вдруг есть еще такие же как я?

А если после того как щёлкнули левой кнопкой по ручке или просто при выделенном объекте, а потом по правой кнопке мыши то откроется меню и в нём можно выбрать нужную команду не перебирая их пробелом. Все когда то начинали. :)

(изменено: Yuriy, 30 апреля 2009г. 07:19:48)

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

мы можем, скопировать ...

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

используя опцию rotate + copy + basepoint + reference можно точно копировать по дуге или окружности например при расстановке кресел в зрительном зале по дуге.

(изменено: nostromo, 30 апреля 2009г. 07:39:40)

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

Yuriy пишет:

А если после того как щёлкнули левой кнопкой по ручке или просто при выделенном объекте, а потом по правой кнопке мыши то откроется меню и в нём можно выбрать нужную команду не перебирая их пробелом. Все когда то начинали. С улыбкой

Ну вот мне все таки кажется, что пробелом быстрее, чем правой кнопкой, а потом все таки водить по списку команд мышью. Наверное, если бы я начинал допустим с R9, то вообще бы отказался от панелей, но я всего полгода в автокаде. А прочитав эту ветку, прикинув все на себя, иногда прихожу к выводу, что многие работают через командную строку либо из принципа, либо в результате прошлого опыта, когда по другому и нельзя было. Не верю, что нарисовать полилинию быстрее через командную строку, чем щелкнуть по пиктограмме и сделать то же самое. Пока не верю... Тем более, что все таки частенько надо и раскладку еще переключать...
А через командную строку вообще все можно сделать, и наверняка даже есть такие люди :)

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

nostromo,
Вы знаете в данной ситуации Ваше дело. Но на правой кнопке сразу видишь список команд, а пробелом нужно перебирать по порядку.