Форум › Форуми › BIM и инженерна графика › Бързо генериране на чертежи с АutoLisp
- This topic has 1 отговор, 2 участника, and was last updated преди 6 years, 6 months by doaiena.
-
АвторПубликации
-
април 4, 2018 в 23:32 #190eng_P_DimitrovУчастник
Здравейте,
Тук ще ви помогнем за бързо генериране на чертеж на ВиК шахта.
В началото, се вижда че всичко е функция на няколко параметъра:
Размери на шахтата и рамери на отвора:
Ето и самия АутоЛисп код:
––-
(defun c:sha()
;основни данни
(setq wi (getint „Въведи дължина шахта:“))
(setq leg (getint „Въведид широчина шахта:“))
(setq op (getint „Въведи страна отвор:“))
(setq k1 (getpoint „Кликни за начална точка“))
;точки плоча
(setq k2(polar k1 0 wi))
(setq k3(polar k2 (/ pi 2)leg))
(setq k4(polar k3 pi wi))
(setq k5(polar k1 (/ pi 4) -35.3553339))
(setq k6(polar k2 (/ pi 1.333333) -35.3553339))
(setq k7(polar k3 (/ pi 4) 35.3553339))
(setq k8(polar k4 (/ pi 1.333333) 35.3553339))
;точка надпис
(setq k9(polar k4 0 (/ wi 2)))
(setq k10(polar k9 (/ pi 2) 50))
;точка котиране
(setq k11(polar k6 (/ pi 2) -30))
(setq k12(polar k11 (/ pi 2) -30))
(setq k13(polar k6 0 30))
(setq k14(polar k13 0 30))
;точки отвор
(setq k15(polar k1 0 op))
(setq k16(polar k15 (/ pi 2) op))
(setq k17(polar k16 pi op))
(setq k18(polar k1 (/ pi 4) -28.2043))
(setq k19(polar k15 (/ pi 1.333333) -28.2043))
(setq k20(polar k16 (/ pi 4) 28.2043))
(setq k21(polar k17 (/ pi 1.333333) 28.2043))
;точки дъно
(setq d1(polar k2 0 200))
(setq d2(polar d1 0 wi))
(setq d3(polar d2 (/ pi 2)leg))
(setq d4(polar d3 pi wi))
(setq d5(polar d1 (/ pi 4) -35.3553339))
(setq d6(polar d2 (/ pi 1.333333) -35.3553339))
(setq d7(polar d3 (/ pi 4) 35.3553339))
(setq d8(polar d4 (/ pi 1.333333) 35.3553339))
;точка надпис
(setq d9(polar d4 0 (/ wi 2)))
(setq d10(polar d9 (/ pi 2) 50))
;точка котиране
(setq d11(polar d6 (/ pi 2) -30))
(setq d12(polar d11 (/ pi 2) -30))
(setq d13(polar d6 0 30))
(setq d14(polar d13 0 30))
;дефиниране стил
(command „-style“ „standart“ „simplex.shx“ „“ „0.75“ „“ „“ „“ „“ „“ )
(command „DIMTXSTY“ „standart“)
(command „DIMTXT“ „12.0000“ )
(command „DIMBLK“ „ArchTick“)
(command „DIMASZ“ „8“)
(command „DIMTAD“ „1“ )
(command „DIMGAP“ „5“)
(command „DIMDEC“ „0“)
(command „DIMTOLJ“ „0“)
(command „DIMTOH“ „Off“)
(command „DIMEXO“ „20“)
;чертане
(command „pline“ k1 „w“2 „“ k2 k3 k4 k1 „“)
(command „pline“ k5 „w“2 „“ k6 k7 k8 k5 „“)
(command „pline“ k1 „w“2 „“ k15 k16 k17 k1 „“)
(command „pline“ k18 „w“2 „“ k19 k20 k21 k18 „“)
(command „-hatch“ „w“ „n“ k1 k2 k3 k4 k1 k5 k6 k7 k8 k5 „“ „“ „p“ „ANSI31“ „50“ „“ „“ „“)
(command „text“ „s“ „standart“ „j“ „mc“ k10 „15“ „“ „КОФРАЖЕН ПЛАН ПЛОЧА“ „“ „“)
(command „dimlinear“ K5 K1 „h“ K11 „“ „“)
(command „dimlinear“ K1 K2 „h“ K11 „“ „“)
(command „dimlinear“ K2 K6 „h“ K11 „“ „“)
(command „dimlinear“ K5 K6 „h“ K12 „“ „“)
(command „dimlinear“ K7 K3 „v“ K13 „“ „“)
(command „dimlinear“ K3 K2 „v“ K13 „“ „“)
(command „dimlinear“ K2 K6 „v“ K13 „“ „“)
(command „dimlinear“ K7 K6 „v“ K14 „“ „“)
;чертане дъно
(command „pline“ d1 „w“2 „“ d2 d3 d4 d1 „“)
(command „pline“ d5 „w“2 „“ d6 d7 d8 d5 „“)
(command „-hatch“ „w“ „n“ d1 d2 d3 d4 d1 d5 d6 d7 d8 d5 „“ „“ „p“ „ANSI31“ „50“ „“ „“ „“)
(command „text“ „s“ „standart“ „j“ „mc“ d10 „15“ „“ „КОФРАЖЕН ПЛАН ДЪНО“ „“ „“)
(command „dimlinear“ d5 d1 „h“ d11 „“ „“)
(command „dimlinear“ d1 d2 „h“ d11 „“ „“)
(command „dimlinear“ d2 d6 „h“ d11 „“ „“)
(command „dimlinear“ d5 d6 „h“ d12 „“ „“)
(command „dimlinear“ d7 d3 „v“ d13 „“ „“)
(command „dimlinear“ d3 d2 „v“ d13 „“ „“)
(command „dimlinear“ d2 d6 „v“ d13 „“ „“)
(command „dimlinear“ d7 d6 „v“ d14 „“ „“)
)
май 12, 2018 в 18:02 #204doaienaУчастникЗдравейте,
Във вида, в който е написана програмата, тя няма да работи. Ето така трябва да изглежда една завършена програма:
;FUNCTION
(defun c:sha ( / wi leg op k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11 k12 k13 k14 k15 k16 k17 k18 k19 k20 k21
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 varsList *error* *varList*)(setq *varList* ‘(wi leg op k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11 k12 k13 k14 k15 k16 k17 k18 k19 k20 k21
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 varsList *error*));Възстановяване от грешки
(defun *error* ( msg )
(cond
((not (member msg ‘(„Function cancelled“ „quit / exit abort“)))
(princ „\nВъзникна грешка.“)
)
(T
(princ „\nИзход.“)
)
);cond(if varsList
(foreach var varsList (setvar (read var) (eval (read var))))
)(if *varList*
(foreach var *varList* (set var nil))
)
(setq *varList* nil)(command-s „_.undo“ „_end“ )
(command-s „_.regen“)(princ)(gc)(gc)(princ)
);defun
;Възстановяване от грешки;начало на undo/CTR+Z
(command „_.undo“ „_begin“);дефиниране на стил
(command „-style“ „standart“ „simplex.shx“ „“ „0.75“ „“ „“ „“ „“);Запазване на променливи в списък и задаване на нови стойности
(mapcar ‘(lambda (var value)(set (read var) (if (equal (getvar (read var)) „“) „.“ (getvar (read var))))
(setq varsList (cons var varsList))
(setvar (read var) value)
)
(list „OSMODE“ „3DOSMODE“ „DIMTXSTY“ „DIMTXT“ „DIMBLK“ „DIMASZ“ „DIMTAD“ „DIMGAP“ „DIMDEC“ „DIMTOLJ“ „DIMTOH“ „DIMEXO“)
(list 0 0 „standart“ 12 „ArchTick“ 8 1 5 0 0 0 20)
);mapcar;основни данни
(if (and (setq wi (getint „Въведете дължина на шахта:“)
leg (getint „Въведете шорочина на шахта:“)
op (getint „Въветеде размер на отвора:“)
k1 (getpoint „Посочете начална точка:“)
);setq
);and
(progn;точки плоча
(setq k2 (polar k1 0 wi)
k3 (polar k2 (/ pi 2) leg)
k4 (polar k3 pi wi)
k5 (polar k1 (/ pi 4) -35.3553339)
k6 (polar k2 (/ pi 1.333333) -35.3553339)
k7 (polar k3 (/ pi 4) 35.3553339)
k8 (polar k4 (/ pi 1.333333) 35.3553339)
;точка надпис
k9 (polar k4 0 (/ wi 2))
k10 (polar k9 (/ pi 2) 50)
;точки котиране
k11 (polar k6 (/ pi 2) -30)
k12 (polar k11 (/ pi 2) -30)
k13 (polar k6 0 30)
k14 (polar k13 0 30)
;точки отвор
k15 (polar k1 0 op)
k16 (polar k15 (/ pi 2) op)
k17 (polar k16 pi op)
k18 (polar k1 (/ pi 4) -28.2043)
k19 (polar k15 (/ pi 1.333333) -28.2043)
k20 (polar k16 (/ pi 4) 28.2043)
k21 (polar k17 (/ pi 1.333333) 28.2043)
;точки дъно
d1 (polar k2 0 200)
d2 (polar d1 0 wi)
d3 (polar d2 (/ pi 2) leg)
d4 (polar d3 pi wi)
d5 (polar d1 (/ pi 4) -35.3553339)
d6 (polar d2 (/ pi 1.333333) -35.3553339)
d7 (polar d3 (/ pi 4) 35.3553339)
d8 (polar d4 (/ pi 1.333333) 35.3553339)
;точка надпис
d9 (polar d4 0 (/ wi 2))
d10 (polar d9 (/ pi 2) 50)
;точки котиране
d11 (polar d6 (/ pi 2) -30)
d12 (polar d11 (/ pi 2) -30)
d13 (polar d6 0 30)
d14 (polar d13 0 30)
);setq;чертаене
(command „pline“ k1 „w“2 „“ k2 k3 k4 k1 „“)
(command „pline“ k5 „w“2 „“ k6 k7 k8 k5 „“)
(command „pline“ k1 „w“2 „“ k15 k16 k17 k1 „“)
(command „pline“ k18 „w“2 „“ k19 k20 k21 k18 „“)(command „-hatch“ „w“ „n“ k1 k2 k3 k4 k1 k5 k6 k7 k8 k5 „“ „“ „p“ „ANSI31“ „50“ „“ „“)
(command „text“ „s“ „standart“ „j“ „mc“ k10 „15“ „“ „КОФРАЖЕН ПЛАН ПЛОЧА“)(command „dimlinear“ K5 K1 „h“ K11)
(command „dimlinear“ K1 K2 „h“ K11)
(command „dimlinear“ K2 K6 „h“ K11)
(command „dimlinear“ K5 K6 „h“ K12)(command „dimlinear“ K7 K3 „v“ K13)
(command „dimlinear“ K3 K2 „v“ K13)
(command „dimlinear“ K2 K6 „v“ K13)
(command „dimlinear“ K7 K6 „v“ K14);чертаене дъно
(command „pline“ d1 „w“2 „“ d2 d3 d4 d1 „“)
(command „pline“ d5 „w“2 „“ d6 d7 d8 d5 „“)(command „-hatch“ „w“ „n“ d1 d2 d3 d4 d1 d5 d6 d7 d8 d5 „“ „“ „p“ „ANSI31“ „50“ „“ „“)
(command „text“ „s“ „standart“ „j“ „mc“ d10 „15“ „“ „КОФРАЖЕН ПЛАН ДЪНО“)(command „dimlinear“ d5 d1 „h“ d11)
(command „dimlinear“ d1 d2 „h“ d11)
(command „dimlinear“ d2 d6 „h“ d11)
(command „dimlinear“ d5 d6 „h“ d12)(command „dimlinear“ d7 d3 „v“ d13)
(command „dimlinear“ d3 d2 „v“ d13)
(command „dimlinear“ d2 d6 „v“ d13)
(command „dimlinear“ d7 d6 „v“ d14)
));if;връщане на променливи
(foreach var varsList (setvar (read var) (eval (read var))));край на undo/CTR+Z
(command „_.undo“ „_end“ )(princ)
);defun
;END FUNCTIONАко имате въпроси, свързани с програмиране/автоматизиране в среда AutoCAD, ще се радвам да помогна.
-
АвторПубликации
- Трябва да влезете в профила си, за да отговорите в темата.