|
Тема |
Само рамка [re: Mинaвaщ] |
|
Автор | StSt (Нерегистриран) | |
Публикувано | 01.12.06 20:22 |
|
|
Тази програма е част от програма, която прави Viewports in Layouts като мащабира чертежа, завърта вюпортовете на указан ъгъл, прави вюпортове с дупки! и други екстри. Освен това GET-LAYOUT прави рамка с "опашка" и поставя маркери за сгъване, което за мен е много удобно.
Това с fit на вюпортовете го правех отдавна, но така е по удобно. Освен това тази програмка хваща и нестандартни листове, завъртането на листа (тя чете настройките на листа) така, че работи с всякакви листове. На tooth ще предложа да премести таблицата и рамката в лейаута и там да го нагласи - по принцип правилния подход е да се изчертават елементите (детайли, възли, схеми и т.н.) в моделното пространство, а оформянето на чертежа да се прави в листа (layout). Там се правят рамки надписни таблици, фирмени знаци и др. Аз поне така работя. Затова и преди доста време (проверих междувременно - 1994г, но съм я доработвал) направих споменатата по-горе програма и я ползвам непрекъснато.
Темата за оформяне на чертежите е доста по-обширна, и изключително важна и трябва да се обсъжда по-нашироко. В края на краищата може да направиш нещо гениално, но като не можеш да го представиш адекватно остава неразбрано и непонятно.
А на Mинaвaщ давам и вариант само с рамка по края на листа.
;ВАДИ ДАННИТЕ НА LAYOUT ОТ PGESETUP И ЧЕРТАЕ ПОЛИЛИНИЯ ПО ГРАНИЦИТЕ
(DEFUN GET-LAYOUT (/ OLSOMODE LAY PT1 PT2 PTI ROT INCH LW LH DL DR DB DT ENTLAY br br1 dob ptend )
(VL-LOAD-COM)
(SETQ OLSOMODE (GETVAR "OSMODE"))
(SETVAR "OSMODE" 16845)
(setq LAY(HANDENT(vla-get-Handle(vla-get-layout(vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))))))
ENTLAY (ENTGET LAY)
);setq
(if(not(VL-STRING-SEARCH "NONE" (STRCASE(cdr(ASSOC 2 ENTLAY)))))
(PROGN
(setq
PT1 (CDR(ASSOC 10 ENTLAY))
PTI (LIST (CDR(ASSOC 46 ENTLAY))(CDR(ASSOC 47 ENTLAY)))
ROT (CDR(ASSOC 73 ENTLAY))
INCH(CDR(ASSOC 72 ENTLAY))
LW(CDR(ASSOC 44 ENTLAY))
LH(CDR(ASSOC 45 ENTLAY))
DL(CDR(ASSOC 40 ENTLAY))
DB(CDR(ASSOC 41 ENTLAY))
DR(CDR(ASSOC 42 ENTLAY))
DT(CDR(ASSOC 43 ENTLAY))
)
(IF (= INCH 0)(SETQ INCH 2.54))
(COND
((= ROT 1)
(SETQ PT2 (MAPCAR '+ PTI (LIST (- LH DT DB)(- LW DR DL))))
);=1
((= ROT 0)
(SETQ PT2 (MAPCAR '+ PTI (LIST (- LW DR DL) (- LH DT DB))))
);=0
((= ROT 3)
(SETQ PT2 (MAPCAR '+ PTI (LIST (* -1(- LH DT DB))(* -1(- LW DR DL)))))
);=3
);COND
(if (and
(setq nab (ssget"c" PTI (MAPCAR '+ PTI '(0.1 0.1) )))
);and
(COMMAND "erase" nab (COMMAND))
);if
(COMMAND "RECTANGLE" (MAPCAR '+ PTI '(25 10)) (MAPCAR '+ PTI PT2 '(-10 -10)))
;чертае рамка на чертежа
(COMMAND "RECTANGLE" PTI (MAPCAR '+ PTI PT2 ))
);PROGN
(ALERT "НЯМА ИЗБРАН ПЛОТЕР
\nОТ \"PAGE SETUP\" ИЗБЕРЕТЕ ПЛОТЕР, РАЗМЕР И ОРИЕНТАЦИЯ НА СТРАНИЦАТА\n
И ОТНОВО СТАРТИРАЙТЕ '(GET-LAYOUT)'")
);if not None plotter
(SETVAR "OSMODE" OLSOMODE)
);GET-LAYOUT
|
| |
|
|
|