Autolisp para cotar linha (comprimento 3D)

; Cotar linha (comprimento da linha 3D) com texto

(defun c:cotarlin()
(command “dist” pause pause)
(setq d (getvar “distance”))
(setq Comprimento (strcat “Comprimento: ” (rtos d 2 2) “m”))
(command “text” “mid” pause “” pause Comprimento)
)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Autolisp: Selecionando objetos pela cor

; Seleciona todos os objetos com a cor branca e muda para vermelha

(DEFUN C:SelCor()

(setq ss1 (ssget  ‘((62 . 7))))

(command “change” ss1 “” “p” “c” “1” “”)

)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Autolisp para desfazer ações até determinado ponto

; Desfaz ações até objeto marcado

(defun c:cdesfazer()
(command “change” pause “” “P” “c” 191 “”)
(setq k 0)

(while (= k 0)
(setq objeto (ssget “l”))
(setq en (ssname objeto 0))
(setq en (entget en))
(setq en (assoc 62 en))
(setq corDoObjeto(cdr en))

(if (= corDoObjeto 191)
(progn (setq k 1))
(progn (command “erase” objeto “”)
 ; ou use (command “undo” “”)
)
)

)
)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Rotina para criar layers específicos para cada objeto

; Cria layers específicos para cada objeto existente no desenho.

(defun c:Objlay()
  (setq obj (ssget “X” ‘((0 . “HATCH”))) )
  (command “layer” “n” “hachura” “”)
  (command “change” obj “” “P” “LA” “HACHURA” “”)

  (setq obj (ssget “X” ‘((0 . “DIMENSION”))) )
  (command “layer” “n” “COTAS” “”)
  (command “change” obj “” “P” “LA” “COTAS” “”)
 
  (setq obj (ssget “X” ‘((0 . “TEXT”))) )
  (command “layer” “n” “TEXTO” “”)
  (command “change” obj “” “P” “LA” “TEXTO” “”)
 
  (setq obj (ssget “X” ‘((0 . “MTEXT”))) )
  (command “layer” “n” “TEXTO” “”)
  (command “change” obj “” “P” “LA” “TEXTO” “”)

  (setq obj (ssget “X” ‘((0 . “LEADER”))) )
  (command “layer” “n” “TEXTO” “”)
  (command “change” obj “” “P” “LA” “TEXTO” “”)

  ; inserir novos objetos.
)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Autolisp para calcular a área e dimensões (L x H) de um retângulo a partir de dois pontos

; Calcula a área e dimensões (L x H) de um retângulo a partir de dois pontos (Cantos)
; Escreve os valores no cento do retângulo

(defun c:2pa()
(setq Pie (getpoint “Canto 1  “))
(setq Psd (getpoint “Canto 2   “))

(setq xie (nth 0 Pie))
(setq yie (nth 1 Pie))

(setq xsd (nth 0 Psd))
(setq ysd (nth 1 Psd))

(setq Pid (list xsd yie ))
(setq Pse (list xie ysd ))

(command “area” “NON” Pie “NON” Pid “NON” Psd “NON” Pse “”)

(setq area (getvar “area”))
(command “dist” “NON” Pie “NON” Pid)
(setq d1 (* (getvar “distance”) 100))
(command “dist” “NON” Pie “NON” Pse)
(setq d2 (* (getvar “distance”) 100))

(setq pm (list (/ (+ (nth 0 Pie) (nth 0 Psd)) 2) (/ (+ (nth 1 Pie) (nth 1 Psd)) 2)))
(setq X (rtos (/ d1 100) 2 2))
(setq Y (rtos (/ d2 100) 2 2))
(setq CalcDim (strcat “Área = ” (rtos area 2 2) ” – Dimensões: ” X “x” Y ” m”))

(command “text” pm “0.50” “” CalcDim)
)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Autolisp para salvar modificações sem criar arquivo de backup .BAK

; Salva modificações sem criar arquivo de backup .BAK
; Útil, se o arquivo é muito grande e já existe backup em outro lugar.

(defun c:SSB()
  (setvar “isavebak” 0)
  (command “qsave”)
  (setvar “isavebak” 1)
)

Publicado em AutoCAD, Autolisp | Deixe um comentário

Autolisp para copiar dados de um arquivo txt e colocar em atributos

;; Copia dados de um arquivo txt e coloca em atributos
;; k define onde o arquivo começa a ser lido
;; x armazena a linha lida

(defun c:arq2att()
(setq k (getreal “Defina a linha do início da leitura (Zero: primeira linha)”))
(setq o (entsel “Selecione Atributo “))
(setq arq (open “c:\\dados.txt” “r”))

(while o

(setq x (read-line arq))

(if (= k 1) (setq x (read-line arq)))

(if x
(command “change” o “” “” “” “” “” “” x “” “”)
)

(setq o (entsel “Selecione Atributo “))

)
(close arq)
)

Publicado em AutoCAD, Autolisp | Deixe um comentário