Pranchas

Como você faz para inserir um formato no desenho? você tem os blocos de A0 ao A4 já desenhados, certo? e insere eles normalmente como blocos… ok, eu também… mas e quando você precisa dum formato de dimensões fora do padrão? as veze acontece, não é? e aí? explode um formato parecido, etc…

mais…

(defun c:prancha (/ dx dy pt dt conv ndh sobr nde ndd
dxd n ndv flag l1 l2 x y d qtd
dq lays this
)
(
tbn:error-init (list (list “cmdecho” 0) t))
(
setq pt (getpoint “nPonto de inserção ?”)
dx (initget “A0 A1 A2 A3 A4” 0)
dx (getcorner pt
“nClique o Canto superior Direito ou [A0, A1, A2, A3, A4] )
dx (if dx dx “A1”)
dt 1.5
dq 50.0)
;escolhe as medidas da prancha:
(if (= (type dx) str)
(
mapcar
set
(dx dy)
(
nth (vl-position dx (“A0” “A1” “A2” “A3” “A4”))
((1188 840) (840 594) (594 420) (420 297) (210 297))))
(
mapcar (lambda (k a b) (set k (fix (abs ( a b)))))
(dx dy)
dx pt))
;calcula o nome da prancha:
(setq str (strcat “F” (itoa dx) “x” (itoa dy)))
;se o bloco ainda nao existe:
(if (not (tblsearch “block” str))
;cria:
(progn
;1º cria os layers e os estilos caso nao existam
(setq lays (vla-get-layers thisdrawing))
(
if (not (tblsearch “layer” “MG-EXTERNA”))
(
vla-put-color (vla-add lays “MG-EXTERNA”) 4))
(
if (not (tblsearch “layer” “MG-INTERNA”))
(
vla-put-color (vla-add lays “MG-INTERNA”) 9))
(
if (not (tblsearch “LTYPE” “HIDDEN2”))
(
vla-load (vla-get-linetypes thisdrawing) “HIDDEN2” “acad”))
(
if (not (tblsearch “layer” “MG-TRACEJADO”))
(
vla-put-linetype (vla-add lays “MG-TRACEJADO”) “HIDDEN2”))
;inicia a construção do bloco:
(entmake (list (0 . “BLOCK”) (cons 2 str) (8 . “0”)
(10 0.0 0.0 0.0) (70 . 2)))
;desenha o nome do bloco na margem esquerda:
(draw-text str (list dt (* dt 3))
“MG-EXTERNA” (/ pi 2) 2 “ISOCP” “tl”)
;desenha a margem externa, linha fina
(draw-pline2
(list (0 0) (list dx 0) (list dx dy) (list 0 dy))
“MG-EXTERNA” t)
;desenha a margem interna com offsets 25 a esquerda e 10 no resto:
(draw-pline2 (list (25 10) (list ( dx 10) 10)
(
list ( dx 10) ( dy 10))
(
list 25 ( dy 10)))
“MG-INTERNA” t)
;desenha a linha de corte, offset da margem externa:
(draw-pline2 (list (list ( dt) ( dt))
(
list (+ dt dx) ( dt))
(
list (+ dt dx) (+ dt dy))
(
list ( dt) (+ dy dt)))
“MG-TRACEJADO” t)
; a pedidos, desenha uma numeração nas margens:
; se vc quiser desabilitar isso, elimine <----------------daqui

(setq qtd (fix (/ ( dx 35) dq))
d (/ ( dx 35.0) qtd)
n 0)
(
repeat qtd
(setq x (+ 25 (* (+ n 0.5) d))
n (1+ n))
;textos da margem superior:
(draw-text (itoa n) (list x 7.5) “MG-EXTERNA”
0 4 “ISOCP” “mc”)
;textos da margem inferior:
(draw-text (itoa n) (list x ( dy 7.5))
“MG-EXTERNA” 0 4 “ISOCP” “mc”)
;linhas das margens direita e esquerda:
(setq x (+ 25 (* n d)))
(
if (/= n qtd)
(
progn
(draw-line (list x 10) (list x (+ 5 dt)) “MG-EXTERNA”)
(
draw-line (list x ( dy 10))
(
list x ( dy 5))
“MG-EXTERNA”))))
;agora textos e linhas nas margens superior e inferior:
(setq qtd (fix (/ ( dy 20.0) dq))
d (/ ( dy 20.0) qtd)
n 0)
(
repeat qtd
(setq y (+ 10 (* ( qtd 0.5) d))
qtd (1- qtd)
n (1+ n))
;textos na margem inferior:
(draw-text (i2b26 n) (list 22.5 y)
“MG-EXTERNA” 0 4 “ISOCP” “mc”)
;textos na margem superior:
(draw-text (i2b26 n) (list ( dx 7.5) y)
“MG-EXTERNA” 0 4 “ISOCP” “mc”)
;linhas:
(setq y (+ 10 (* qtd d)))
(
if (/= 0 qtd)
(
progn
(draw-line (list 20 y) (list 25 y) “MG-EXTERNA”)
(
draw-line (list ( dx 10) y)
(
list ( dx 5) y)
“MG-EXTERNA”))))
; se vc quiser desabilitar isso, elimine <---------------ate aqui ;agora as marcas de dobra… sim tem isso tambem!!!
;o processo de cálculo das marcas de dobra é beta…. blz?
;não vou me ater muito nele….

(setq ndh (fix (/ ( dx 25) 185)) ;nº de divisoes inteiras
sobr (rem ( dx 25) 185) ;sobra medida?
nde (if (zerop (rem ndh 2.0)) ;se for par
(if (> sobr 1) ;sobra medida?
(if (> sobr 92.5) ;sobra > 185/2?
ndh ;a sobra é a divisao impar
(1- ndh)) ;divide
(if ;nao sobra? uma vai para a direita
(= 2 ndh) ;so deu 2?
1 ;1 a esquerda 2 a direita
( ndh 2)))
(
if ;impar?
(> sobr 1) ;tem sobra?
( ndh 2) ;separa pra lado direito
ndh))
sobr ( dx 25 (* 185 nde))
ndd ( ndh nde)
ndd (if (= (zerop (rem ndd 2)) (zerop (rem nde 2)))
ndd
(1+ ndd))
dxd (if ndd
(/ ( dx (* nde 185) 25) (1+ ndd)))
n 1
flag (not (equal 0.0 dxd 0.001)))
;as divisoes que começam pela esquerda da prancha:
(if (> nde 0)
(
repeat (if flag
nde

(1- nde))
(
setq x ( dx (* n 185))
n (1+ n))
(
draw-line (list x 0) (list x 5) “MG-TRACEJADO”)
(
draw-line (list x dy) (list x ( dy 5)) “MG-TRACEJADO”)))
;divisoes que começam pelo lado direito da prancha
(setq n 1)
(
if flag
(repeat ndd
(setq x (+ 25 (* n dxd))
n (1+ n))
(
draw-line (list x 0) (list x 5) “MG-TRACEJADO”)
(
draw-line (list x dy) (list x ( dy 5)) “MG-TRACEJADO”)))

;divisoes de dobras verticais, multiplos do A4(h=297)
(setq y 297)
(
while (< y dy)
(
draw-line (list 0 y) (list 25 y) “MG-TRACEJADO”)
(
draw-line (list ( dx 10) y) (list dx y) “MG-TRACEJADO”)
(
setq y (+ y 297)))
;e fim:
(entmake ((0 . “ENDBLK”)))))
; AGORA insere a prancha como bloco:
(draw-insert str (trans pt 1 0) “MG-INTERNA”
(angle (trans (0 0) 1 0) (trans (1 0) 1 0)) 1 nil)
(
tbn:error-restore ))


Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, draw-text, draw-pline2, draw-line, i2b26, draw-insert, tbn:error-restore

Deixe um comentário

Carrinho de compras
Rolar para cima