quarta-feira, 15 de agosto de 2012

Autolisp para salvar textos do AutoCAD para arquivos



; Salva o conteúdo dos textos (text ou mtext) selecionados em um arquivo.

(defun c:text2arq()

(z1)

(setq arqz (open "c:\\dados.txt" "w"))
(setq n 1)
(setq color 4)
(while (= n 1)
(setq ent (entsel))
(if ent (progn
(command "change" ent "" "p" "c" color "")
(setq nome (nth 0 ent))
(setq ent (entget nome))
(setq ent (assoc 1 ent))
(setq z (cdr ent))
(print z arqz)
(z2)
)
(setq n 0)
)
)
(alert "Fim")
(close arqz)
(z3)
)
(defun z1()
(setvar "useri1" 1)
)
(defun z2()
(setvar "useri1" 2)
)
(defun z3()
(setq k1 (getvar "useri1"))
(if (= k1 2)
(progn
(while (/= k1 1)
(command "u")
(setq k1 (getvar "useri1"))
)
))
)



Autolisp para alinhar texto em relação à uma linha


; Alinha o texto selecionado em relação à uma linha

(defun c:atexto()
(print)
(prompt "Selecione a linha. ")
(setq obj (entsel))
(setq obj  (car obj))
(setq obj (entget obj))


(setq p1 (assoc 10 obj))
(setq p2 (assoc 11 obj))

(setq x1 (nth 1 p1))
(setq y1 (nth 2 p1))

(setq x2 (nth 1 p2))
(setq y2 (nth 2 p2))

(if (= (- X1 X2) 0)
(setq ang (/ pi 2))
(setq ang (atan (/ (- y1 y2) (- x1 x2))))
)
(setq ang (/ (* 180 ang) pi))

(setq obj (entsel "Selecione o texto. "))

(command "change" obj "" "" "" "" "" ang "")

)


Autolisp para criar vistas (viewports no layout) em escala



; Rotina para criar vistas (viewports no layout) em escala
; Iniciar no "Model"
; p1 e p2 -> vértices do retângulo que inclui o desenho a ser representado
; model em metros e layout em milímetros

(defun c:cv ()
  (setq escala (getreal "Escala da Vista que será criada no Layout: "))
  (setq fs (/ 1000 escala))
  (setq p1 (getpoint "Ponto Inferior esquerdo..."))
  (setq p2 (getpoint "Ponto Superior Direito..."))
  (setvar "tilemode" 0)
  (setq x1 (nth 0 p1))
  (setq y1 (nth 1 p1))
  (setq x2 (nth 0 p2))
  (setq y2 (nth 1 p2))

  (setq p3 (getpoint "Ponto Inferior Esquerdo da Vista que será criada..."))

  (setq x3 (nth 0 p3))
  (setq y3 (nth 1 p3))

  (setq dx (- x2 x1))
  (setq dy (- y2 y1))

  (setq p4 (list (+ x3 (* fs dx)) (+ y3 (* fs dy))))


  (setq p5 (list (+ x3 (* fs dx) 30) (+ y3 (* fs dy) 30)))
  (command "zoom" p3 p5)

  (command "mview" p3 p4)

  (prompt "Dê um duplo vista que foi criada e digite 0 ")

)
(defun c:0()
(command "zoom" p1 p2)
(setq p1 nil p2 nil)
(command "mview" "lock" "on" "l" "")
)



Autolisp para verificar se existem objetos com cores diferentes de 1 a 8


; Verifica se existem objetos com cores diferentes de 1 a 8
; Muda cores diferentes para a cor vermelha
; Não funciona se a cor do objeto estiver definida pela layer

(defun c:VerCor()

(setq en 0 k 0)

(setq o (ssget))

(while en

(setq en (ssname o k))
(setq k (+ k 1))

(setq objeto en)

(if en (progn

(setq en (entget en))

(setq dt (getvar "color"))

(setq en (assoc 62 en))
(setq corDoObjeto(cdr en))

(if (> corDoObjeto 8) (progn

(command "change" objeto "" "p" "c" "1" "")

))
))

)

)


Autolisp para verificar se existem objetos com cores diferentes de 1 a 8


; Verifica se existem objetos com cores diferentes de 1 a 8
; Muda cores diferentes para a cor vermelha
; Não funciona se a cor do objeto estiver definida pela layer

(defun c:VerCor()

(setq en 0 k 0)

(setq o (ssget))

(while en

(setq en (ssname o k))
(setq k (+ k 1))

(setq objeto en)

(if en (progn

(setq en (entget en))

(setq dt (getvar "color"))

(setq en (assoc 62 en))
(setq corDoObjeto(cdr en))

(if (> corDoObjeto 8) (progn

(command "change" objeto "" "p" "c" "1" "")

))
))

)

)


Autolisp para verificar se existem objetos com cores diferentes de 1 a 8


; Verifica se existem objetos com cores diferentes de 1 a 8
; Muda cores diferentes para a cor vermelha
; Não funciona se a cor do objeto estiver definida pela layer

(defun c:VerCor()

(setq en 0 k 0)

(setq o (ssget))

(while en

(setq en (ssname o k))
(setq k (+ k 1))

(setq objeto en)

(if en (progn

(setq en (entget en))

(setq dt (getvar "color"))

(setq en (assoc 62 en))
(setq corDoObjeto(cdr en))

(if (> corDoObjeto 8) (progn

(command "change" objeto "" "p" "c" "1" "")

))
))

)

)


Autolisp para verificar se existem objetos com cores diferentes de 1 a 8


; Verifica se existem objetos com cores diferentes de 1 a 8
; Muda cores diferentes para a cor vermelha
; Não funciona se a cor do objeto estiver definida pela layer

(defun c:VerCor()

(setq en 0 k 0)

(setq o (ssget))

(while en

(setq en (ssname o k))
(setq k (+ k 1))

(setq objeto en)

(if en (progn

(setq en (entget en))

(setq dt (getvar "color"))

(setq en (assoc 62 en))
(setq corDoObjeto(cdr en))

(if (> corDoObjeto 8) (progn

(command "change" objeto "" "p" "c" "1" "")

))
))

)

)