Re: Приёмы ускорения работы в AutoCAD
> Артур
Мне понравился твой подход, но т.к. я еще в АКАДе не спец, не мог бы ты выслать файл акд.mnu и обьяснить шо с ним дальше делать , или засвети его прямо в форуме. Спасибо.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Autodesk → AutoCAD → Приёмы ускорения работы в AutoCAD
Страницы Назад 1 2 3 4 5 6 7 8 9 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
> Артур
Мне понравился твой подход, но т.к. я еще в АКАДе не спец, не мог бы ты выслать файл акд.mnu и обьяснить шо с ним дальше делать , или засвети его прямо в форуме. Спасибо.
Для 2004 метод Артура становится морочnым. Там есть регулируемая задержка удержания правой кнопки.
Интересная/полезная тема получилась. Примите вклад.
Еще во времена 10-го автокада, когда место на столе
(пардон, стола не было, - на экране) было еще в бОльшем
дефиците, реализовал на лиспе две идеи: 1) Редактировать
ВСЁ одной командой. 2) Рисовать ВСЁ одной командой.
Не верите?
Первую идею можно увидеть в реализации Autodesk в
команде _properties. Реализовано во многом лучше, чем у
меня (все-таки - Виндовс, все-таки - Autodesk). Команда
_properties особенно полезна для начинающих: помогает
понять структуру автокадовских объектов.
А вторая идея еще ждет своих реализаторов. Основное в
ней: использование в качестве меню имеющихся на экране
примитивов.
Пример: Если открыт файл, в котором есть много
пунктирных зеленых и тонких полосок, то велика
вероятность, что захочется рисовать в этом файле такие
же. Для этого достаточно щелкнуть по изображению и
запускается команда, которой это изображение создано.
Конкретизирую: На экране вижу букву. Хочу такие же.
Запускаю команду "РИСОВАТЬ ВСЁ", клацаю по букве,
указываю точку вставки и пишу не глядя. При этом цвет,
стиль, углы, высота - такие же, как в образце. И, если
оказалось, что указанная буква БЛОК (бывает и такое), то
вставляется такой же блок. А, если оказалось, что буква
создана в многострочном редакторе, то он и запускается.
Ждал, что хоть в 2005-ом появится такая возможность.
Не дождался. А тот (ДОСовский) вариант работает и в
АСАД_2005, но, конечно, только в командной строке и
далеко не со всеми примитивами. Если бы взялся
кто-нибудь сделать такое в стиле команды _properties (да
еще с пользовательскими настройками!), то количество
кнопочек на столе (и в голове) можно было бы значительно
уменьшить.
Попробуй из моей коллекции
;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))
> Vova
Да, это именно ТА идея. Впору начинать тяжбу за первенство :), если б не истек срок давности. Но, как и у меня, выполнено на уровне идеи. Придется ждать Autodesk :(
BEST COMMAND!!!
Save(As)... Alt+F4!!!
TEMA 3AKPbITA!!! ;)
Черта с два она закрыта. Вот Vova дал материал, достойный не
мальчика, а мужа. И ttt молодец. Придется поработать в этом направлении. Это - системная идея, а все остальное в этой теме - детская болезнь профанов и анахоретов.
Я думаю, Autodesk не будет этим заниматься, это скорее может
появится в Express Tools.
Эта идея программы (от ttt) действительно заставляет задуматься... Я не верю что гуру Acada, остановились на этом и их не точит желание реализовать эту идею!!
Очень интересно что же случилось дальше!!
2Vova
QUICKDRAW-серьезная весч! вот только в 2007 не все работает :(
Наверное есть уже более новая версия? ;)
В архитектурном AA-2009-eng работает.
В архитектурном AA-2009-eng идея отрисовки по образцу реализована только для архитектурных объектов wall, door и т.п. (пункт контекстного меню арх. объекта - "Add Selected")
вот только в 2007 не все работает
похоже это в руском 2007
чтобы заработало попробуйте поставить подчерк _ перед именами англ.команд
вместо line _line и т.д.
>> Vova, за QUICKDRAW спасибо!!!
Yuriy,
Вы говорите о QUICKDRAW? Я попробовал в 2000 с блоками, а вот с линиями и полилиниями проблема да и с текстом. Я может много хочу от этой программы чего в ней нет.
[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))
Интересная идея.
Но больше интересует не тип созданного объекта, а метод, например примитив "LWPOLYLINE" может быть создан как _pline , так и _rectang или какой-либо пользовательской функцией R3P
Можно проверить полилинию на замкнутость и количество вершин и перпендикулярность сегментов. И если сегменты перпендикулярны, линейны, полилиния замкнута и вершин 3, то вызывать _rectang. А оно надо?
Можно сделать проще, при обработке полилинии добавить опции "Прямоугольник" и R3P
Думаю это будет лучше.
Можно сделать проще, при обработке полилинии добавить опции "Прямоугольник" и R3P
Думаю это будет лучше.
Это будет не проще, а корректнее, не каждый прямоугольник создан _rectang.
И не совсем удобно каждый раз выбирать образец:
В данную программу хотелось бы добавит: в функцию PROPS(setvar "CELWEIGHT" (FLDVAL 370 EL)), может ещё какие-нибудь свойства. Куда-нибудь запомнить (FLDVAL 0 EL) и всё из PROPS
И сделать другую кнопку которая сразу будет вызывать последнию использованную функцию Х* с нужными свойствами.
А то сам я как-то стесняюсь.
похоже это в руском 2007
чтобы заработало попробуйте поставить подчерк _ перед именами англ.команд
без "_" в русcком 2007 вообще бы ничего не работало.
2 Владимир Азарко
можете добавить в развитие системной идеи команды Hatch и Dim ?
и тогда эта программа может претендовать на добавление в раздел "Готовые программы"
Для поддержки трехмерных полилиний к коду Владимира Азарко, добавил
функцию
(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))
...
Для поддержки трехмерных полилиний к коду Владимира Азарко, добавил
Извиняюсь, но я в программировании не разбираюсь куда нужно добавить Ваш код. Просто скопировать и вставить в конце предыдущего? :)
К стати ко всему прочему после использования выше приведённой программы появляются при каждом клике (в месте клика), исчезают после зуммирования маленькие крестики.
после установки blipmode = 0 работает нормально. Как бы подправить программу чтобы исключить их самопроизвольное появление.
Да и кажется программу нужно было бы перенести в раздел готовых программ.
куда нужно добавить Ваш код
Внес поправки в сообщение от 17.04.2009 23:33:39
Yuriy,
Спасибо вставил по указанным адресам. Вот только что то не получается. Выбираю 3д полилинию а вычерчивается обычная полилиния. :)
Выбираю 3д полилинию а вычерчивается обычная полилиния.
Внес поправку в сообщение от 17.04.2009 23:33:39
вторая часть кода должна обязательно предшествовать
((wcmatch (FLDVAL 0 EL) "*POLYLINE") (XPLINE))
вторая часть кода должна обязательно предшествовать
((wcmatch (FLDVAL 0 EL) "*POLYLINE") (XPLINE))
Спасибо всё получилось. Теперь чертит 3д линию. :)
Отредактировал код в предыдущем посте.
Добавлено:
оработка 3DPOLYLINE
обработка POLYLINE (POLYLINE RECTANG R3P)
обработка DIMENSION
обработка HATCH
добавлена опция CLIP к VIEWPORT
+ еще один нюанс при работе с видовыми экранами (VIEWPORT)
При обработке видового экрана можно как строить новый, так и делать подрезанную
копию выбранного.
+ теперь вас не будут мучать белые крестики и зеленые человечки :)
Владимир Азарко,
Опробовал Ваши изменения в программе в части HATCH и DIMENSION. Скажу что впечатляет. Теперь одна кнопка а столько возможностей. Можно работать хоть с клавиатуры хоть с кнопки. Спасибо Вам большое. :)
Скажу что впечатляет.
Присоединяюсь!
Супер!!
Владимиру, спасибо!!!
Пока заметил сл. недостатки
- если цвет образца был не "bylayer" после завершения программы он не возвращается в исходное состояние.
- при выборе углового размера вызывается линейный
продолжаю тестирование ...
строку
(if (setq ENT (car (entsel "\nSelect object: ")))
заменил на
(if (setq ENT (car (entsel "\nВыберите образец для создания ему подобных: ")))
Владимир Азарко,
Опробовал в рабочем режиме. Со штриховками нет вопросов.
С поллиниями две дополнительные функции раздражали. Если я уже выбра черить полилинию то прямоугольник не к чему. И если мне нужно прямоугольник то лучше зайти в рисовать, и выбрать функцию прямоугольника. В первом варианте сразу выходит на точку и рисовал (чертил линию) в новом нужно было вспоминать что не нажал Ввод.
А вот с размерами если возможно. Воспринимает стой размера, а размер по текущему стилю. Хорошо бы было если бы в размере не только слой но и стиль выставлялся по образцу.
Но все ровно программа класс и этого у неё не отнимешь.
С благодарностью Вам. :)
Страницы Назад 1 2 3 4 5 6 7 8 9 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Autodesk → AutoCAD → Приёмы ускорения работы в AutoCAD
Форум работает на PunBB, при поддержке Informer Technologies, Inc