CONTATO

 

José Filho S. Cunha

Email para contato:  jfdsc@hotmail.com

 

 

LISTAGEM DAS ROTINAS

 

 

Rotina carregar.lsp

Rotina modulo2.lsp

Rotina modulo3.lsp

Rotina modulo4.lsp

Rotina modulo5.lsp

Rotina paredes.lsp

Rotina modulo6.lsp

 

 

1.1.      Rotina carregar.lsp

 

(defun c:carregar ()

  ;==Inicio do módulo 1 do programa==

  (setq s1 "\nMódulo 1:\n\nDados iniciais da obra:\nNome e tipo de concreto utilizado.\n\n(Pressione OK)")

  (alert s1)

  ;Definiçao do nome da obra executada

  (setq nome (getstring "\nInsira o nome da obra a ser executada==> "))

  (setq arqi (open "Obra atual.txt" "w"))

  (princ nome arqi)

  (close arqi)

  ;Tipo do material utilizado

  (setq fck (getreal "Resistência do concreto utilizado (MPa)==> "))

  (setq moduloE (* 0.85 5600 (sqrt fck)))

  (setq moduloG (/ moduloE 3))

  (setq extensao ".txt")

  (setq numero1 "1")

  (setq abre1 (strcat nome numero1 extensao))

  (setq arq1 (open abre1 "w"))

  ;Impressão dos dados iniciais no arquivo

  (princ "#Resistência do concreto - fck(MPa)==> " arq1)

  (princ fck arq1)

  (princ "\n" arq1)

  (princ "#Módulo de elasticidade - E(MPa)==> " arq1)

  (princ moduloE arq1)

  (princ "\n" arq1)

  (princ "#Módulo de elasticidade transversal - G(MPa)==> " arq1)

  (princ moduloG arq1)

  (close arq1)

  (setq a (findfile "Espacial10"))

  (setq b "\\modulo2.lsp")

  (setq arquivo1 (strcat a b))

  (load arquivo1)

  (alert "Para carregar o módulo 2 do programa, digite 'modulo2' no prompt de comando após pressionar OK.")

)

 

1.2.      Rotina modulo2.lsp

 

(defun c:modulo2 ()

  ;==Inicio do módulo 2 do programa==

  (setq s2 "\nMódulo 2:\n\nDados a respeito dos níveis da edificação a ser executada:\n

           - Quantidade de níveis da edificação (exceto fundação/baldrames);\n

           - Altura de cada nível (face da laje inferior até a face da laje superior) (m);\n

           - Sobrecarga atuante em cada nível (kN/m2);\n

           - Carga permanente em cada nível (kN/m2);\n

  \n\n(Pressione OK)")

  (alert s2)

  (setq numero2 "2")

  (setq le1 (open "Obra atual.txt" "r"))

  (setq nome (read-line le1))

  (close le1)

  (setq abre2 (strcat nome numero2 extensao))

  (setq arq2 (open abre2 "w"))

  (princ "Nível" arq2)

  (princ "  |   " arq2)

  (princ "Altura (m)" arq2)

  (princ "  |   " arq2)

  (princ "Sobrecarga (kN/m2)" arq2)

  (princ "  |   " arq2)

  (princ "Carga permanente (kN/m2)" arq2)

  (princ "  |   " arq2)

  (princ "Cota (m)" arq2)

  (princ "\n" arq2)

  (initget 7)

  (setq npav (getint "\nInsira o número de niveis da edificação==> "))

  (setq cont1 1)

  (setq alt2 0)

  (repeat npav

    ;Altura de cada pavimento

    (setq cont1a (itoa cont1))

    (setq aa "Defina a altura (m) do nível ")

    (setq bb " ==>")

    (setq aviso1 (strcat aa cont1a bb))

    (initget 7)

    (setq alt (getreal aviso1))

    ;Sobrecarga atuante

    (setq cc "Defina a sobrecarga atuante (kN/m2) no nível ")

    (setq aviso2 (strcat cc cont1a bb))

    (initget 7)

    (setq sobre (getreal aviso2))

    ;Carga permanente

    (setq dd "Defina a carga permanente atuante (kN/m2) no nível ")

    (setq aviso3 (strcat dd cont1a bb))

    (initget 7)

    (setq perma (getreal aviso3))

    (setq alt3 (+ alt2 alt))

    (princ cont1a arq2)

    (princ "                 " arq2)

    (princ alt arq2)

    (princ "                " arq2)

    (princ sobre arq2)

    (princ "                        " arq2)

    (princ perma arq2)

    (princ "                " arq2)

    (princ alt3 arq2)

    (princ "\n" arq2)

    (setq cont1 (+ cont1 1))

    (setq alt2 alt3)

    )

  (close arq2)

  (setq a (findfile "Espacial10"))

  (setq b "\\modulo3.lsp")

  (setq arquivo1 (strcat a b))

  (load arquivo1)

  (alert "Para carregar o módulo 3 do programa (INSERÇÃO DOS EIXOS), digite 'modulo3' no prompt de comando após pressionar OK.")

  )

 

1.3.      Rotina modulo3.lsp

 

(defun c:modulo3 ()

  ;==COLOCAÇÃO DOS EIXOS DE TODA A EDIFICAÇÃO==

  (command "layer" "n" "Eixos" "s" "Eixos" "")

  (command "color" "251")

  (command "osnap" "off")

  (setq linha "\n")

  (setq espaço "        ")

  (alert "MÓDULO 3:\n\nNeste módulo do programa deverão ser inseridos os eixos referentes a todos os pavimentos da edificação,

  na seguinte sequência:\n\n- Eixos na direção de x;\n- Eixos na direção de y.\n\n'ATENÇÃO:A DISTÂNCIA ENTRE OS EIXOS DEVE SER INSERIDA NA UNIDADE CENTÍMETRO.'

  \n\n(Pressione OK)")

  (initget 7)

  (setq mv (getdist "\nDistância máxima na direção de y==> "))

  (alert "Os eixos são inseridos na tela gráfica seguindo o sentido de crescimento dos eixos X e Y(PRESSIONE OK).")

  (initget 7)

  (setq neixo (getreal "\nNúmero de eixos paralelos a y==> "))

  (setq eixonumero 1)

  (setq K1 0)

  (setq ext (+ mv 60))

  (setq nome1 (open "Obra atual.txt" "r"))

  (setq nome2 (read-line nome1))

  (setq numero3 "3");posicao do arquivo

  (setq extensao ".txt")

  (setq abre3 (strcat nome2 numero3 extensao))

  (setq arq3 (open abre3 "w"))

  (princ "#Número de eixos paralelos a y==> " arq3)

  (princ neixo arq3)

  (princ "\n" arq3)

  (princ "#Distância máxima na direção de y==> " arq3)

  (princ mv arq3)

  (princ "\n" arq3)

  (command "linetype" "s" "dashdot" "")

  (command "line" (list K1 0)(list K1 mv) "")

  (command "line" (list K1 mv)(list K1 ext) "")

  (command "line" (list K1 0)(list K1 -60) "")

  (command "zoom" "extents")

  (setq numero4 "4")

  (setq extensao ".txt")

  (setq abre4 (strcat nome2 numero4 extensao))

  (setq arq4 (open abre4 "w"))

  (while (< (- eixonumero neixo) 0)

    (initget 7)

    (setq distancia (getdist "\nEntre com a distância entre os eixos==> "))

    (setq K1 (+ K1 distancia))

    (command "linetype" "s" "dashdot" "")

    (command "line" (list K1 0)(list K1 mv) "")

    (command "line" (list K1 mv)(list K1 ext) "")

    (command "line" (list K1 0)(list K1 -60) "")

    (setq eixonumero (+ eixonumero 1))

    (command "zoom" "extents")

    (princ distancia arq4)

    (princ "\n" arq4)

    )

  (initget 7)

  (setq mh (getdist "\nDistância máxima na direção de x==> "))

  (setq neixo1 (getreal "\nNúmero de eixos paralelos a x==> "))

  (setq eixonumero1 1)

  (setq K2 0)

  (setq ext1 (+ mh 60))

  (command "linetype" "s" "dashdot" "")

  (command "line" (list 0 K2)(list mh K2) "")

  (command "line" (list mh K2)(list ext1 K2) "")

  (command "line" (list 0 K2)(list -60 K2) "")

  (command "zoom" "extents")

  (princ "#Número de eixos paralelos a x==> " arq3)

  (princ neixo1 arq3)

  (princ "\n" arq3)

  (princ "#Distância máxima na direção de x==> " arq3)

  (princ mh arq3)

  (princ "\n" arq3)

  (while (< (- eixonumero1 neixo1) 0)

    (initget 7)

    (setq distancia1 (getdist "\nDistância entre os eixos paralelos a x==> "))

    (setq K2 (+ K2 distancia1))

    (command "linetype" "s" "dashdot" "")

    (command "line" (list 0 K2)(list mh K2) "")

    (command "line" (list mh K2)(list ext1 K2) "")

    (command "line" (list 0 K2)(list -60 K2) "")

    (setq eixonumero1 (+ eixonumero1 1))

    (command "zoom" "extents")

    (princ distancia1 arq4)

    (princ "\n" arq4)

    )

  (close arq3)

  (close arq4)

  (setq a (findfile "Espacial10"))

  (setq b "\\modulo4.lsp")

  (setq arquivo1 (strcat a b))

  (load arquivo1)

  (alert "Para carregar o módulo4 do programa (INSERÇÃO DE PILARES), digite 'modulo4' no prompt de comando após pressionar OK.")

  )

 

1.4.      Rotina modulo4.lsp

 

(defun c:modulo4 ()

                                  ;==INSERÇÃO DOS PILARES NA ESTRUTURA==

  (setq padrao (open "obra atual.txt" "r"))

  (setq nome (read-line padrao))

  (close padrao)

  (setq extensao ".txt")

  (setq numero2 "2")

  (setq abre2 (strcat nome numero2 extensao))

  (setq arquivo2 (open abre2 "r"))

  (while (setq nivel1 (read-line arquivo2))

    (setq nivel (read (substr nivel1 1 4)))

    (setq ultimacota (read (substr nivel1 82 7)))

  )

  (close arquivo2)

  (command "ucs" "w")

  (command "vpoint" (list 0 0 1) "")

  (command "_vscurrent" "2dwireframe")

  (command "zom" "extents")

  (alert

    "MÓDULO 4:\n\nNeste módulo do programa o usuário deve inserir os pilares nas intersecções dos eixos, de acordo com a

  sequência a seguir:\n\n- Dimensão na direção do eixo X;\n- Dimensão na direção do eixo Y.\n\n(Pressione OK)"

  )

  (command "osmode" "37")

  (setq numero5 "5")                    ;Posicao do arquivo 

  (setq abre5 (strcat nome numero5 extensao))

  (setq arq5 (open abre5 "w"))

  (setq espaço "        ")

  (setq linha "\n")

  (alert

    "Arranje os pilares na estrutura seguindo o sentido de CRESCIMENTO de X (esquerda para direita) e DECRESCIMENTO de Y (cima para baixo)."

  )

  (command "layer" "n" "PILAR" "s" "PILAR" "") 

  (command "layer" "n" "3D PILAR" "s" "3D PILAR" "")

  (command "linetype" "s" "continuous" "")

  (command "color" "252")

  (setq condição 1)

  (setq cont2 1)

  (while (<= (- condição 2) 0)

    (command "zom" "extents")

                                  ;Definição da dimensão do pilar

    (if      (<= (- condição 1) 0)

      (progn

       (command "osmode" "32")

       (initget 7)

       (setq J1

              (getreal

              "\nComprimento(cm) do lado em relação ao eixo x do pilar==> "

              )

       )

       (setq U

              (getreal

              "\nComprimento(cm) do lado em relação ao eixo y do pilar==> "

              )

       )

       (setq J2 (rtos J1 1 3))

       (setq U1 (rtos U 1 3))

       (setq J3 (rtos J1 2 1))

       (setq U2 (rtos U 2 1))

      )

    )

                                  ;Definição da posição do pilar

    (command "osmode" "37")

    (command "ucs" "w")

    (setq C

          (getpoint

            "\nEscolha o local para inserir o pilar, em qualquer intersecção dos eixos."

          )

    )

    (setq coordX (car C))

    (setq coordY (cadr C))

    (setq coordXf1 (rtos coordX 1 3))

    (setq coordYf1 (rtos coordY 1 3))

    (setq D (polar C (/ pi 2) (/ U 2)))

    (setq E (polar C (/ (* 3 pi) 2) (/ U 2)))

    (setq F (polar D (* 2 pi) (/ J1 2)))

    (setq G (polar E (* 3 pi) (/ J1 2)))

    (setq altura (* ultimacota 100))

    (command "zom" "extents")

    (command "osnap" "off")

    (command "rectangle" F G "")

    (setq extruda (entlast))

    (setvar "clayer" "3D PILAR")

    (command "color" "252")

    (command "extrude" extruda "" altura "" 0 "")

    (setq condição 1)                   ; Nomenclatura dos pilares

    (setvar "clayer" "PILAR")

    (command "color" "252")

    (command "rectangle" F G "")

    (setq I (write-line "P  (     x     )"))

    (setq K (polar G (/ pi 2) (/ U 2)))

    (setq H (polar K (* 3 pi) 35.0))

    (setq Y (polar H (/ pi 2) (+ (/ U 2) 7)))

    (command "text" "s" "standard" "m" Y "7" "0" I)

    (setq J (polar Y (* 3 pi) 30))

    (setq B8 (polar J (* 2 pi) 25))

    (setq B10 (polar J (* 2 pi) 45))

    (command "text" "s" "standard" "m" J "7" "0" cont2)

    (command "text" "s" "standard" "m" B8 "6" "0" J3)

    (command "text" "s" "standard" "m" B10 "6" "0" U2)

    (command "linetype" "s" "continuous" "")

    (command "color" "byblock")           

    (setq pilar "P")

    (setq numeropilar cont2)

    (princ pilar arq5)

    (princ numeropilar arq5)

    (princ espaço arq5)

    (princ J2 arq5)

    (princ espaço arq5)

    (princ U1 arq5)

    (princ espaço arq5)

    (princ coordXf1 arq5)

    (princ espaço arq5)

    (princ coordYf1 arq5)

    (princ espaço arq5)

    (princ linha arq5)

    (close arquivo2)

                                  ; Definição de continuação da dimensão do pilar

    (setq condi

          (getint

            "Para continuar com o mesmo pilar digite [2], para mudar a dimensão do pilar digite [1] e para encerrar digite [3]  "

          )

    )

    (if      (= condi 2)

      (progn

       (setq condição 2)

      )

    )

    (if      (= condi 1)

      (progn

       (setq condição 1)

      )

    )

    (if      (= condi 3)

      (progn

       (setq condição 3)

      )

    )

    (setq cont2 (+ cont2 1))

  )

  (close arq5) 

  (command "_vscurrent" "2dwireframe")

  (setq a (findfile "Espacial10"))

  (setq b "\\modulo5.lsp")

  (setq arquivo1 (strcat a b))

  (load arquivo1)

  (alert

    "Para carregar o módulo 5 do programa (DEFINIÇÃO DAS FORMAS DOS NIVEIS), digite 'modulo5' no prompt de comando após pressionar OK."

  )

)

 

1.5.      Rotina modulo5.lsp

 

(defun c:modulo5 ()

  (setq nome1 (open "Obra atual.txt" "r"))

  (setq nome (read-line nome1))         ;nome da obra em questão

  (close nome1)

  (setq extensao ".txt")

  (setq numero2 "2")

  (setq abre2 (strcat nome numero2 extensao))

  (setq arq2 (open abre2 "r"))

  (while (setq nivel1 (read-line arq2))

    (setq nivel (read (substr nivel1 1 4)))

                                  ;quantidade de niveis da edificação

  )

  (close arq2)

  (setq numero3 "3")

  (setq abre3 (strcat nome numero3 extensao))

  (setq arquivo3 (open abre3 "r"))

  (setq eixoy (read-line arquivo3))

  (setq neixoy (read (substr eixoy 34 5)))

  (setq disty (read-line arquivo3))

  (setq distmaxy (read (substr disty 37 10)))

  (setq eixox (read-line arquivo3))

  (setq neixox (read (substr eixox 34 5)))

  (setq distx (read-line arquivo3))

  (setq distmaxx (read (substr distx 37 10)))

 

  (setq numero4 "4")

  (setq abre4 (strcat nome numero4 extensao))

  (setq arquivo4 (open abre4 "r"))

 

  (setq numero5 "5")

  (setq abre5 (strcat nome numero5 extensao))

  (setq arquivo5 (open abre5 "r"))

 

  (setq numero6 "6")

  (setq abre6 (strcat nome numero6 extensao))

  (setq arq6 (open abre6 "w"))          ;dados sobre vigas

 

  (setq numero7 "7")

  (setq abre7 (strcat nome numero7 extensao))

  (setq arq7 (open abre7 "w"))          ;dados sobre as lajes

 

  (setq nome3 "Viga 3d")

  (setq abre9 (strcat nome3 extensao))

  (setq arq9 (open abre9 "w"))          ;dados para a viga 3D

 

  (alert

    "MÓDULO 5:\n\nNeste módulo do programa devem ser inseridos os dados referentes às formas de cada pavimento da edificação,

digitando no prompt de comando a sequência a seguir, para cada nível:\n\n

- Vigas;\n- Lajes.\n\n(pressione OK)"

  )

  (setq abre2 (strcat nome numero2 extensao))

  (setq arq2 (open abre2 "r"))

  (setq pula1 (read-line arq2))

  (command "ucs" "w")

  (command "vpoint" (list 0 0 1) "")

  (command "_vscurrent" "2dwireframe")

  (command "layer" "n" "AUXILIAR" "s" "AUXILIAR" "")

  (command "layer" "off" "3D PILAR" "")

  (command "layer" "off" "PILAR" "")

  (command "layer" "off" "Eixos" "")

  (setq contnivel 1)

 

  (repeat nivel                         ;repetição para cada nível da edificação

    (setq lecota (read-line arq2))

    (setq altura1 (read (substr lecota 16 7)))

    (setq cota1 (read (substr lecota 82 7)))

    (setq cota (rtos cota1 1 3))

    (setq haltura (* altura1 100))

    (setq hcota (* cota1 100))

    (setq pplano (- hcota haltura))

    (setq contnivel1 (itoa contnivel))

    (command "ucs" "w")

    (command "ucs" (list 0 0 hcota) "")

    (command "zom" "extents")

                                  ;====================repetição dos eixos==================

    (setq epar "Eixo Auxiliar ")

    (setq lay111 (strcat epar contnivel1))

    (command "layer" "n" lay111 "s" lay111 "")

    (command "color" "3")

    (command "linetype" "s" "dashdot" "")

    (command "osnap" "off")

 

    (progn

      (setq eixonumero 1)

      (setq K1 0)

      (command "line" (list K1 0) (list K1 distmaxy) "")

      (command "zoom" "extents")

      (setq arquivo4 (open abre4 "r"))

                                  ;eixos verticais

      (while (< (- eixonumero neixoy) 0)

       (setq dist1 (read-line arquivo4))

       (setq dist11 (read (substr dist1 1 10)))

       (setq K1 (+ K1 dist11))

       (command "line" (list K1 0) (list K1 distmaxy) "")

       (setq eixonumero (+ eixonumero 1))

       (command "zoom" "extents")

      )

                                  ;eixos horizontais

      (setq eixonumero1 1)

      (setq K2 0)

      (command "line" (list 0 K2) (list distmaxx K2) "")

      (command "zoom" "extents")

      (while (< (- eixonumero1 neixox) 0)

       (setq dist2 (read-line arquivo4))

       (setq dist22 (read (substr dist2 1 10)))

       (setq K2 (+ K2 dist22))

       (command "line" (list 0 K2) (list distmaxx K2) "")

       (setq eixonumero1 (+ eixonumero1 1))

       (command "zoom" "extents")

      )

    )

    (close arquivo4)

                                  ;===========================Seções=======================

    (progn

      (setq secao "Secao Pilar ")

      (setq lay1111 (strcat secao contnivel1))

      (command "layer" "n" lay1111 "s" lay1111 "")

      (command "linetype" "s" "continuous" "")

      (command "color" "8" "")

      (setq arquivo5 (open abre5 "r"))

      (while (setq coord (read-line arquivo5))

       (setq coordx1 (read (substr coord 44 11)))

       (setq coordy1 (read (substr coord 61 11)))

       (setq X (substr coord 9 13))

       (setq Y (substr coord 26 13))

       (setq J1 (atof X))

       (setq U (atof Y))

       (setq C (list coordx1 coordy1 0))

       (setq D (polar C (/ pi 2) (/ U 2)))

       (setq E (polar C (/ (* 3 pi) 2) (/ U 2)))

       (setq F (polar D (* 2 pi) (/ J1 2)))

       (setq G (polar E (* 3 pi) (/ J1 2)))

       (command "rectangle" F G "")

      )

      (close arquivo5)

    )

                                  ;====Inserção das vigas de cada nível da edificação====  

    (setq junta1

          "A seguir o usuário deverá definir a geometria das VIGAS do nível "

    )

    (setq junta2 ".")

    (setq escrita1 (strcat junta1 contnivel1 junta2))

    (alert escrita1)

    (setq vig "Vigas ")

    (setq vig1 "3D VIGAS ")

    (setq lay1 (strcat vig contnivel1))

    (setq lay11 (strcat vig1 contnivel1))

    (command "layer" "n" lay1 "s" lay1 "")

    (command "layer" "n" lay11 "s" lay11 "")

    (command "color" "255")

    (command "linetype" "s" "continuous" "")

    (setq condicao 1)

    (setq cont1 1)

    (alert

      "O usuário deve entrar com as VIGAS no sentido POSITIVO de X e NEGATIVO em Y, informando o PILAR INICIAL E FINAL. "

    )

    (while (<= (- condicao 2) 0)

                                  ;Definição da dimensão da viga

      (if (<= (- condicao 1) 0)

       (progn

         (command "osmode" "1")

         (initget 7)

         (setq larg (getreal "\n-> LARGURA da viga (cm): "))

         (setq alt (getreal "\n-> ALTURA da viga (cm): "))

         (setq altviga (* -1 alt))

         (setq larg1 (rtos larg 1 3))

         (setq alt1 (rtos alt 1 3))

         (setq larg2 (rtos larg 2 1))

         (setq alt2 (rtos alt 2 1))

       )

      )

                                  ;Definição da posição da viga

      (command "osmode" "0")

      (command "pickbox" "7")

      (progn

       (WHILE

         (NOT

           (SETQ ent1 (ENTSEL "\n-> Selecione o PILAR INICIAL: "))

         )

       )

       (WHILE

         (NOT

           (SETQ ent2 (ENTSEL "\n-> Selecione o PILAR FINAL: "))

         )

       )

       (setq ent_nome1 (car ent1))

       (setq ent_nome2 (car ent2))

       (setq coord1 (entget ent_nome1))

       (setq coord2 (entget ent_nome2))

       (setq ponto1 (list))              ;coordenadas dos vertices da seção do primeiro pilar 

       (foreach temp coord1

         (progn (if (= (car temp) 10)

                (setq ponto1 (cons (cdr temp) ponto1))

              )

         )

       )

       (setq ponto2 (list))              ;coordenadas dos vertices da seção do segundo pilar 

       (foreach temp1 coord2

         (progn (if (= (car temp1) 10)

                (setq ponto2 (cons (cdr temp1) ponto2))

              )

         )

       )

       (setq pi1 (car ponto1)

             pi2 (cadr ponto1)

             pi3 (caddr ponto1)

             pi4 (last ponto1)

       )

       (setq pf1 (car ponto2)

             pf2 (cadr ponto2)

             pf3 (caddr ponto2)

             pf4 (last ponto2)

       )

       (setq pi1x (car pi1)

             pi1y (cadr pi1)

             pi2x (car pi2)

             pi2y (cadr pi2)

             pi3x (car pi3)

             pi3y (cadr pi3)

       )

       (setq pf1x (car pf1)

             pf1y (cadr pf1)

             pf2x (car pf2)

             pf2y (cadr pf2)

             pf3x (car pf3)

             pf3y (cadr pf3)

       )

                                  ; cg das seções

       (progn

         (setq ycentro1 (/ (+ pi2y pi3y) 2))

         (if (<= ycentro1 0.1)

           (setq ycentro1 0)

         )

         (setq xcentro1 (/ (+ pi2x pi1x) 2))

         (if (<= xcentro1 0.1)

           (setq xcentro1 0)

         )

         (setq ycentro2 (/ (+ pf2y pf3y) 2))

         (if (<= ycentro2 0.1)

           (setq ycentro2 0)

         )

         (setq xcentro2 (/ (+ pf2x pf1x) 2))

         (if (<= xcentro2 0.1)

           (setq xcentro2 0)

         )

       )

      )

      (setq coordXf2 (rtos xcentro1 1 3))

      (setq coordYf2 (rtos ycentro1 1 3))

      (setq coordXf3 (rtos xcentro2 1 3))

      (setq coordYf3 (rtos ycentro2 1 3))

      (setq C (list xcentro1 ycentro1))

      (setq D (list xcentro2 ycentro2))

 

                                  ;vigas paralelas a x

      (if (= coordYf2 coordYf3)

       (progn

         (setq d1x (- pi1x xcentro1))

         (setq d2x (- pf1x xcentro2))

         (setq xinicial (+ xcentro1 d1x))

         (setq x1inicial (rtos xinicial 1 3))

         (setq xfinal (- xcentro2 d2x))

         (setq x2final (rtos xfinal 1 3))

         (setq pontoinicial (list xinicial ycentro1 0))

         (setq pontofinal (list xfinal ycentro2 0))

         (setq A (polar pontoinicial (/ pi 2) (/ larg 2)))

         (setq B (polar pontofinal (/ (* 3 pi) 2) (/ larg 2)))

         (command "osnap" "off")

         (setvar "clayer" lay1)

         (command "color" "255")

         (command "rectangle" A B "")

         (setq centro1 (polar C (* 2 pi) 100))

         (setq centro2 (polar centro1 (/ pi 2) (+ larg 2)))

         (setq texto1 (write-line "V    (      x      )"))

         (command "text" "s" "standard" "m" centro2 "7" "0" texto1)

         (command "osnap" "off")

         (setq niv (polar centro2 (* 3 pi) 34))

         (command "text" "s" "standard" "m" niv "7" "0" contnivel)

         (setq A1 (polar centro2 (* 3 pi) 20))

         (command "text" "s" "standard" "m" A1 "7" "0" cont1)

         (command "osnap" "off")

         (setq C2 (polar centro2 (* 2 pi) 0))

         (command "text" "s" "standard" "m" C2 "7" "0" larg2)

         (setq C3 (polar centro2 (* 2 pi) 20))

         (command "text" "s" "standard" "m" C3 "7" "0" alt2)

         (princ "V" arq6)

         (princ contnivel arq6)

         (princ cont1 arq6)

         (princ "        " arq6)

         (princ larg1 arq6)

         (princ "        " arq6)

         (princ alt1 arq6)

         (princ "        " arq6)

         (princ coordXf2 arq6)

         (princ "        " arq6)

         (princ coordYf2 arq6)

         (princ "        " arq6)

         (princ cota arq6)

         (princ "        " arq6)

         (princ coordXf3 arq6)

         (princ "        " arq6)

         (princ coordYf3 arq6)

         (princ "        " arq6)

         (princ cota arq6)

         (princ "\n" arq6)

 

         (setvar "clayer" lay11)

         (command "color" "255")

         (command "rectangle" A B "")

         (setq extviga (entlast))

         (command "extrude" extviga "" altviga "" 0 "")

 

         (princ "V" arq9)

         (princ contnivel arq9)

         (princ cont1 arq9)

         (princ "        " arq9)

         (princ larg1 arq9)

         (princ "        " arq9)

         (princ alt1 arq9)

         (princ "        " arq9)

         (princ x1inicial arq9)

         (princ "        " arq9)

         (princ coordYf2 arq9)

         (princ "        " arq9)

         (princ cota arq9)

         (princ "        " arq9)

         (princ x2final arq9)

         (princ "        " arq9)

         (princ coordYf3 arq9)

         (princ "        " arq9)

         (princ cota arq9)

         (princ "\n" arq9)

       )

      )

                                  ;vigas paralelas a y

      (if (= coordXf2 coordXf3)

       (progn

         (setq D1 (- pi3y ycentro1))

         (setq D2 (- pf3y ycentro2))

         (setq yinicial (- ycentro1 D1))

         (setq y1inicial (rtos yinicial 1 3))

         (setq yfinal (+ ycentro2 D2))

         (setq y2final (rtos yfinal 1 3))

         (setq pontoinicial (list xcentro1 yinicial 0))

         (setq pontofinal (list xcentro2 yfinal 0))

         (setq A (polar pontoinicial (* 3 pi) (/ larg 2)))

         (setq B (polar pontofinal (* 2 pi) (/ larg 2)))

         (command "osnap" "off")

         (setvar "clayer" lay1)

         (command "color" "255")

         (command "rectangle" A B "")

         (setq centro1 (polar C (/ (* 3 pi) 2) 100))

         (setq centro2 (polar centro1 (* 3 pi) (+ larg 2)))

         (setq texto1 (write-line "V    (      x      )"))

         (command "text" "s" "standard" "m" centro2 "7" "90" texto1)

         (command "osnap" "off")

         (setq niv (polar centro2 (/ (* 3 pi) 2) 34))

         (command "text" "s" "standard" "m" niv "7" "90" contnivel)

         (setq A1 (polar centro2 (/ (* 3 pi) 2) 20))

         (command "text" "s" "standard" "m" A1 "7" "90" cont1)

         (command "osnap" "off")

         (setq C2 (polar centro2 (/ pi 2) 0))

         (command "text" "s" "standard" "m" C2 "7" "90" larg2)

         (setq C3 (polar centro2 (/ pi 2) 20))

         (command "text" "s" "standard" "m" C3 "7" "90" alt2)

         (princ "V" arq6)

         (princ contnivel arq6)

         (princ cont1 arq6)

         (princ "        " arq6)

         (princ larg1 arq6)

         (princ "        " arq6)

         (princ alt1 arq6)

         (princ "        " arq6)

         (princ coordXf2 arq6)

         (princ "        " arq6)

         (princ coordYf2 arq6)

         (princ "        " arq6)

         (princ cota arq6)

         (princ "        " arq6)

         (princ coordXf3 arq6)

         (princ "        " arq6)

         (princ coordYf3 arq6)

         (princ "        " arq6)

         (princ cota arq6)

         (princ "\n" arq6)

 

         (setvar "clayer" lay11)

         (command "color" "255")

         (command "rectangle" A B "")

         (setq extviga (entlast))

         (command "extrude" extviga "" altviga "" 0 "")

 

         (princ "V" arq9)

         (princ contnivel arq9)

         (princ cont1 arq9)

         (princ "        " arq9)

         (princ larg1 arq9)

         (princ "        " arq9)

         (princ alt1 arq9)

         (princ "        " arq9)

         (princ coordXf2 arq9)

         (princ "        " arq9)

         (princ y1inicial arq9)

         (princ "        " arq9)

         (princ cota arq9)

         (princ "        " arq9)

         (princ coordXf3 arq9)

         (princ "        " arq9)

         (princ y2final arq9)

         (princ "        " arq9)

         (princ cota arq9)

         (princ "\n" arq9)

       )

      )

      (setq condi

            (getint

              "Para continuar com a mesma viga digite [2], para mudar a dimensão da viga digite [1] e para encerrar digite [3]  "

            )

      )

      (if (= condi 2)

       (progn

         (setq condicao 2)

       )

      )

      (if (= condi 1)

       (progn

         (setq condicao 1)

       )

      )

      (if (= condi 3)

       (progn

         (setq condicao 3)

       )

      )

      (setq cont1 (+ cont1 1))

    )

                                  ;====Inserção das lajes de cada nível da edificação====

    (setq junta1

          "A seguir o usuário deverá definir a geometria das LAJES do nível "

    )

    (setq junta2 ".")

    (setq escrita1 (strcat junta1 contnivel1 junta2))

    (alert escrita1)

    (setq laj "Lajes ")

    (setq laj1 "3D LAJES ")

    (setq lay2 (strcat laj contnivel1))

    (setq lay22 (strcat laj1 contnivel1))

    (command "layer" "n" lay2 "s" lay2 "")

    (command "layer" "n" lay22 "s" lay22 "")

    (command "color" "55")

    (setq condicao 1)

    (setq espe1 (getreal "\n-> Defina a espessura (cm) da laje==> "))

    (setq esp2 (* -1 espe1))

    (setq contlaje 1)

    (while (<= (- condicao 2) 0)

      (command "osmode" "33")

      (setq P1

            (getpoint

              "\nDefina a dimensão Lx da laje clicando no centro do primeiro pilar, "

            )

      )

      (setq Xlaje (car P1))

      (setq Ylaje (cadr P1))

      (setq x1laje (rtos Xlaje 1 3))

      (setq y1laje (rtos Ylaje 1 3))

      (setq

       P2 (getpoint "\agora no segundo pilar a direita do anterior.")

      )

      (setq P3

            (getpoint

              "\nDefina a dimensão Ly da laje, clicando no centro do terceiro pilar, abaixo do anterior."

            )

      )

      (setq distx (distance P1 P2))     ;distancia na direção do eixo x

      (setq distx1 (rtos distx 1 3))

      (setq distx2 (rtos distx 2 1))

      (setq disty (distance P2 P3))     ;distancia na direção do eixo y

      (setq disty1 (rtos disty 1 3))

      (setq disty2 (rtos disty 2 1))

      (setq nlaje (rtos contlaje 2 1))  ;numero da laje inserida

      (setq espe2 (rtos espe1 2 1))     ;espessura da laje inserida

      (setq espe3 (rtos espe1 1 3))

      (setq P4 (polar P3 (* 3 pi) distx))

 

      (setvar "clayer" lay2)

      (command "color" "52")

      (command "line" P1 P3 "")

      (command "line" P2 P4 "")

 

      (setq dist1 (distance P3 P4))

      (setq dist2 (/ dist1 2))          ;distancia em x

      (setq dist3 (distance P2 P3))

      (setq dist4 (/ dist3 2))          ;distancia em y

      (setq P5 (polar P3 (* 3 pi) dist2))

      (setq P6 (polar P5 (/ pi 2) (+ dist4 45)))

      (setq pt1 (polar P6 (* 3 pi) 9))

      (setq pt2 (polar P6 (* 2 pi) 7))

      (setq pt3 (polar P6 (* 3 pi) 5))

      (command "osnap" "off")

      (setq nomelaje (write-line "L"))

      (command "text" "s" "standard" "m" pt1 "9" "0" nomelaje)

      (command "text" "s" "standard" "m" pt2 "9" "0" nlaje)

      (command "text" "s" "standard" "m" pt3 "9" "0" contnivel)

      (setq P7 (polar P5 (/ pi 2) (+ dist4 32)))

      (setq pt3 (polar P7 (* 3 pi) 8))

      (setq pt4 (polar P7 (* 2 pi) 8))

      (setq nomelaje1 (write-line "h="))

      (command "text" "s" "standard" "m" pt3 "9" "0" nomelaje1)

      (command "text" "s" "standard" "m" pt4 "9" "0" espe2)

 

      (setvar "clayer" lay22)

      (command "color" "52")

      (command "rectangle" P1 P3 "")

      (setq est (entlast))

      (command "extrude" est "" esp2 "" 0 "")

 

      (princ "L" arq7)

      (princ contnivel arq7)

      (princ contlaje arq7)

      (princ "       " arq7)

      (princ espe3 arq7)

      (princ "       " arq7)

      (princ distx1 arq7)

      (princ "       " arq7)

      (princ disty1 arq7)

      (princ "       " arq7)

      (princ cota arq7)

      (princ "       " arq7)

      (princ x1laje arq7)

      (princ "       " arq7)

      (princ y1laje arq7)

      (princ "\n" arq7)

      (setq condi

            (getint

              "Para continuar com a mesma laje digite [2] e para encerrar a inserção digite [3]  "

            )

      )

      (if (= condi 2)

       (progn

         (setq condicao 2)

       )

      )

      (if (= condi 3)

       (progn

         (setq condicao 3)

       )

      )

      (setq contlaje (+ contlaje 1))

    )

    (setvar "clayer" "AUXILIAR")

    (command "-layer" "OFF" lay1 "")

    (command "-layer" "OFF" lay11 "")

    (command "-layer" "OFF" lay111 "")

    (command "-layer" "OFF" lay1111 "")

    (command "-layer" "OFF" lay2 "")

    (command "-layer" "OFF" lay22 "")

    (setq contnivel (+ contnivel 1))

 

  )                               ;fim do repeat

  (command "layer" "on" "3D PILAR" "")

  (setq quantos 1)

  (repeat nivel

    (setq quantos1 (itoa quantos))

    (setq viga "3D VIGAS ")

    (setq laje "3D LAJES ")

    (setq layV (strcat viga quantos1))

    (setq layL (strcat laje quantos1))

    (command "layer" "on" layV "")

    (command "layer" "on" layL "")

    (setq quantos (+ quantos 1))   

    )

  (command "ucs" "w")

  (command "vpoint" (list -1.0000 -1.0000 1.0000) "")

  (command "_vscurrent" "Realistic" )

  (close arq2)

  (close arq6)

  (close arq7)

  (close arq9)

  (setq a (findfile "Espacial10"))

  (setq b "\\modulo6.lsp")

  (setq c "\\parede.lsp")

  (setq arquivo2 (strcat a c))

  (setq arquivo1 (strcat a b))

  (load arquivo2)

  (load arquivo1)

  (alert

    "Para iserir PAREDES, digite 'parede' no prompt de comando após pressionar OK."

  )

  (alert

    "Para carregar o módulo 6 do programa (GERAÇÃO DA GRELHA ESPACIAL NA TELA GRÁFICA), digite 'modulo6' no prompt de comando após pressionar OK."

  )

)

 

1.6.      Rotina parede.lsp

 

(defun c:parede     ()

  (setq padrao (open "Obra atual.txt" "r"))

  (setq nome (read-line padrao))

  (close padrao)

  (setq extensao ".txt")

 

  (setq numero2 "2")

  (setq abre2 (strcat nome numero2 extensao))

  (setq arquivo2 (open abre2 "r"))

  (while (setq nivel1 (read-line arquivo2))

    (setq nivel (read (substr nivel1 1 4)))

  )

  (setq arquivo2 (open abre2 "r"))

  (setq pular (read-line arquivo2))

 

  (setq numero5 "5")

  (setq abre5 (strcat nome numero5 extensao))

  (setq arquivo5 (open abre5 "r"))

 

  (setq numero6 "6")

  (setq abre6 (strcat nome numero6 extensao))

  (setq arquivo6 (open abre6 "r"))

 

  (setq numero7 "7")

  (setq abre7 (strcat nome numero7 extensao))

  (setq arquivo7 (open abre7 "r"))

 

  (setq numero8 "8")

  (setq extensao ".txt")

  (setq abre8 (strcat nome numero8 extensao))

  (setq arq8 (open abre8 "w"))          ;dados as paredes

 

  (command "ucs" "w")

  (command "vpoint" (list 0 0 1) "")

  (command "_vscurrent" "2dwireframe")

                                  ;(setvar "clayer" "AUXILIAR")

  (setvar "clayer" "AUXILIAR")

  (command "layer" "off" "3D PILAR" "")

  (setq quantos 1)

  (repeat nivel

    (setq quantos1 (itoa quantos))

    (setq viga "3D VIGAS ")

    (setq laje "3D LAJES ")

    (setq esquadrias "esquadria ")

    (setq lay10 (strcat esquadrias quantos1))

    (command "layer" "n" lay10 "s" lay10 "")

    (setq layV (strcat viga quantos1))

    (setq layL (strcat laje quantos1))

    (command "layer" "off" layV "")

    (command "layer" "off" layL "")

    (setq quantos (+ quantos 1))

  )

  (setq contnivel 1)

  (repeat nivel

    (setq lecota (read-line arquivo2))

    (setq altura1 (read (substr lecota 18 7)))

    (setq cota1 (read (substr lecota 83 10)))

    (setq haltura (* altura1 100))

    (setq hcota (* cota1 100))

    (setq pplano (- hcota haltura))

    (command "ucs" "w")

    (command "ucs" (list 0 0 pplano) "")

    (command "zom" "extents")

    (setq contnivel1 (itoa contnivel))

 

    (setq epar "Eixo Auxiliar ")

    (setq lay1 (strcat epar contnivel1))

    (command "layer" "on" lay1 "")

    (setq secao "Secao Pilar ")

    (setq lay2 (strcat secao contnivel1))

    (command "layer" "on" lay2 "")

    (if      (<= contnivel 1)

      (progn

       (command "layer" "on" "PILAR" "")

       (command "layer" "on" "Eixos" "")

       (command "layer" "off" lay1 "")

       (command "layer" "off" lay2 "")

      )

    )

    (setq junta1

          "Geometria das paredes do nível "

    )

    (setq junta2 ".")

    (setq escrita1 (strcat junta1 contnivel1 junta2))

    (alert escrita1)

;=====================================parede====================================================

    (initget "Sim Não" 1)

    (setq

      modo

       (getkword

        "\nPara inserção das PAREDES ENTRE PILARES digite (Sim/Não) "

       )

    )

    (if      (= modo "Sim")

      (progn

       (alert

         "O usuário deve informar os PILARES sempre no sentido de CRESCIMENTO de X e DECRESCIMENTO de Y "

       )

       (setq parede "3D PAREDE ")

       (setq parede1 "Parede ")

       (setq lay33 (strcat parede contnivel1))

       (setq lay3 (strcat parede1 contnivel1))

       (command "layer" "n" lay33 "s" lay33 "")

       (command "layer" "n" lay3 "s" lay3 "")

       (setq P "PA")

       (setq condicao 1)

       (setq contpa 1)

       (while (<= (- condicao 2) 0)

         (if (<= (- condicao 1) 0)

           (progn

             (command "osmode" "0")

             (initget 7)

             (setq espe

                  (getreal "\n-> Informe a ESPESSURA da parede==> ")

             )

           )

         )

         (progn

           (command "pickbox" "7")

           (WHILE

             (NOT

             (SETQ ent1 (ENTSEL "\n-> Selecione o PILAR INICIAL: "))

             )

           )

           (WHILE

             (NOT (SETQ ent2 (ENTSEL "\n-> Selecione o PILAR FINAL: "))

             )

           )

           (setq ent_nome1 (car ent1))

           (setq ent_nome2 (car ent2))

           (setq coord1 (entget ent_nome1))

           (setq coord2 (entget ent_nome2))

           (setq ponto1 (list))   ;coordenadas dos vertices da seção do primeiro pilar 

           (foreach temp coord1

             (progn (if (= (car temp) 10)

                    (setq ponto1 (cons (cdr temp) ponto1))

                  )

             )

           )

           (setq ponto2 (list))   ;coordenadas dos vertices da seção do segundo pilar 

           (foreach temp1 coord2

             (progn (if (= (car temp1) 10)

                    (setq ponto2 (cons (cdr temp1) ponto2))

                  )

             )

           )

           (setq pi1 (car ponto1)

               pi2 (cadr ponto1)

               pi3 (caddr ponto1)

               pi4 (last ponto1)

           )

           (setq pf1 (car ponto2)

               pf2 (cadr ponto2)

               pf3 (caddr ponto2)

               pf4 (last ponto2)

           )

           (setq pi1x (car pi1)

               pi1y (cadr pi1)

               pi2x (car pi2)

               pi2y (cadr pi2)

               pi3x (car pi3)

               pi3y (cadr pi3)

           )

           (setq pf1x (car pf1)

                pf1y (cadr pf1)

               pf2x (car pf2)

               pf2y (cadr pf2)

               pf3x (car pf3)

               pf3y (cadr pf3)

           )

                                  ; cg das seções      

           (setq ycentro1 (/ (+ pi2y pi3y) 2))

           (if      (< ycentro1 0.1)

             (setq ycentro1 0)

           )

           (setq xcentro1 (/ (+ pi2x pi1x) 2))

           (if      (< xcentro1 0.1)

             (setq xcentro1 0)

           )

           (setq ycentro2 (/ (+ pf2y pf3y) 2))

           (if      (< ycentro2 0.1)

             (setq ycentro2 0)

           )

           (setq xcentro2 (/ (+ pf2x pf1x) 2))

           (if      (< xcentro2 0.1)

             (setq xcentro2 0)

           )     

           (setq arquivo6 (open abre6 "r"))

           (while (setq viga (read-line arquivo6))

             (setq altura (read (substr viga 28 15)))

             (setq xinicial (read (substr viga 45 15)))

             (setq yinicial (read (substr viga 62 15)))

             (setq xfinal (read (substr viga 96 15)))

             (setq yfinal (read (substr viga 113 15)))

             (setq cotaz (read (substr viga 80 15)))

             (setq b1 (list xinicial yinicial z))

             (setq b2 (list xfinal yfinal cotaz))

             (if (and (= ycentro1 yinicial)

                    (= xcentro1 xinicial)

                    (= ycentro2 yfinal)

                    (= xcentro2 xfinal)

                    (= cota1 cotaz)

               )

             (setq alturapar (- haltura altura))

             )

           )

           (close arquivo6)

            (setq coordXf2 (rtos xcentro1 1 3))

             (setq coordYf2 (rtos ycentro1 1 3))

             (setq coordXf3 (rtos xcentro2 1 3))

             (setq coordYf3 (rtos ycentro2 1 3))            

;                      parede paralelas a x                      

            (if (= coordYf2 coordYf3)

             (progn

             (setq d1x (- pi1x xcentro1))

             (setq d2x (- pf1x xcentro2))

             (setq xinicial (+ xcentro1 d1x))

             (setq x1inicial (rtos xinicial 1 3))

             (setq xfinal (- xcentro2 d2x))

             (setq x2final (rtos xfinal 1 3))

             (setq pontoinicial (list xinicial ycentro1 0))

             (setq pontofinal (list xfinal ycentro2 0))

             (setq A (polar pontoinicial (/ pi 2) (/ espe 2)))

             (setq B (polar pontofinal (/ (* 3 pi) 2) (/ espe 2)))

             (command "osnap" "off")

             (setvar "clayer" lay33)

             (command "color" "157" "")

             (command "rectangle" A B "")

             (setq parede3d (entlast))

             (command "extrude" parede3d "" alturapar "" 0 "")

             (setvar "clayer" lay3)

             (command "color" "2")

             (command "line" pontoinicial pontofinal "")

             (princ P arq8)

             (princ contnivel arq8)

             (princ contpa arq8)

             (princ "       " arq8)

             (princ carg arq8)

             (princ "       " arq8)

             (princ coordXf2 arq8)

             (princ "       " arq8)

             (princ coordYf2 arq8)

             (princ "       " arq8)

             (princ cota arq8)

             (princ "       " arq8)

             (princ coordXf3 arq8)

             (princ "       " arq8)

             (princ coordYf3 arq8)

             (princ "       " arq8)

             (princ cota arq8)

             (princ "\n" arq8)

             )

           )

;                           paredes paralelas a y                          

           (if (= coordXf2 coordXf3)

             (progn

             (setq D1 (- pi3y ycentro1))

             (setq D2 (- pf3y ycentro2))

             (setq yinicial (- ycentro1 D1))

             (setq y1inicial (rtos yinicial 1 3))

             (setq yfinal (+ ycentro2 D2))

             (setq y2final (rtos yfinal 1 3))

             (setq pontoinicial (list xcentro1 yinicial 0))

             (setq pontofinal (list xcentro2 yfinal 0))

             (setq A (polar pontoinicial (* 3 pi) (/ espe 2)))

             (setq B (polar pontofinal (* 2 pi) (/ espe 2)))

             (command "osnap" "off")

             (setvar "clayer" lay33)

             (command "color" "157" "")

             (command "rectangle" A B "")

             (setq parede3d (entlast))

             (command "extrude" parede3d "" alturapar "" 0 "")

             (setvar "clayer" lay3)

             (command "color" "2")

             (command "line" pontoinicial pontofinal "")

             (princ P arq8)

             (princ contnivel arq8)

             (princ contpa arq8)

             (princ "       " arq8)

             (princ carg arq8)

             (princ "       " arq8)

             (princ coordXf2 arq8)

             (princ "       " arq8)

             (princ coordYf2 arq8)

             (princ "       " arq8)

             (princ cota arq8)

             (princ "       " arq8)

             (princ coordXf3 arq8)

             (princ "       " arq8)

             (princ coordYf3 arq8)

             (princ "       " arq8)

             (princ cota arq8)

             (princ "\n" arq8)

             )

           )

           (setq condi

                (getint

                  "Para continuar com a mesma PAREDE digite [2], para mudar a dimensão da PAREDE digite [1] e para encerrar digite [3]  "

                )

           )

           (if      (= condi 2)

             (progn

             (setq condicao 2)

             )

           )

           (if      (= condi 1)

             (progn

             (setq condicao 1)

             )

           )

           (if      (= condi 3)

             (progn

             (setq condicao 3)

             )

           )

           (setq contpa (+ contpa 1))

         )

       )

      )

    )

;==================================PAREDES INTERMEDIARIAS===================

 

    (alert

      "INSERÇÃO DE PAREDES INTERMEDIÁRIAS: paredes que está fora dos eixos dos pilares. "

    )

    (initget 1 "Sim Nao")

    (setq opcao

          (getkword

            "\nPara inserir PAREDES ITERMEDIÁRIAS (Sim/ Não). "

          )

    )

    (cond

      ((= opcao "Sim")

       (progn

        (alert

          "Para a inserção das paredes INTERMEDIÁRIAS o usuário deve antes entrar com os eixos"

        )

        (setq epar "Eixo AuxiliarPAR ")

         (setq eap (strcat epar contnivel1))

        (command "layer" "n" eap "s" eap "")  

        (command "color" "3")

        (command "linetype" "s" "dashdot" "")

        (alert

          "Inserir eixos das paredes na seguinte sequência:\n\n- Eixos na direção de x;\n- Eixos na direção de y.\n

   'ATENÇÃO:A DISTÂNCIA ENTRE OS EIXOS DEVE SER INSERIDA NA UNIDADE CENTÍMETRO.'\n\n   (Pressione OK)"

        )

        (initget 7)

        (setq

          mv (getdist "\nDistância máxima na direção de y==> ")

        )

        (alert

          "Os eixos são inseridos na tela gráfica seguindo o sentido de crescimento dos eixos X e Y(PRESSIONE OK)."

        )

        (initget 7)

        (setq

          neixo (getreal "\nNúmero de eixos paralelos a y==> ")

        )

        (setq eixonumero 1)

        (setq K1 0)

        (command "line" (list K1 0) (list K1 mv) "")

        (command "zoom" "extents")

                                  ;eixos verticais

        (while      (< (- eixonumero neixo) 0)

          (initget 7)

          (setq distancia

               (getdist "\nEntre com a distância entre os eixos==> ")

          )

          (setq K1 (+ K1 distancia))

          (command "line" (list K1 0) (list K1 mv) "")

          (setq eixonumero (+ eixonumero 1))

          (command "zoom" "extents")

        )

                                  ;eixos horizontais

        (initget 7)

        (setq

          mh (getdist "\nDistância máxima na direção de x==> ")

        )

        (setq

          neixo1 (getreal "\nNúmero de eixos paralelos a x==> ")

        )

        (setq eixonumero1 1)

        (setq K2 0)

        (command "line" (list 0 K2) (list mh K2) "")

        (command "zoom" "extents")

        (while      (< (- eixonumero1 neixo1) 0)

          (initget 7)

          (setq distancia1

               (getdist "\nDistância entre os eixos paralelos a x==> "

               )

          )

          (setq K2 (+ K2 distancia1))

          (command "line" (list 0 K2) (list mh K2) "")

          (setq eixonumero1 (+ eixonumero1 1))

          (command "zoom" "extents")

        )

        (alert

          "A inserção das paredes devem ocorrer obedecendo o MESMO sentido de X e CONTRÁRIO de Y, (DA ESQUERDA PARA DIREITA E DE CIMA PARA BAIXO). "

        )

        (command "linetype" "s" "continuous" "")

        (command "color" "157" "")      

        (setq condicao 1)

        (setq cont1 1)

        (setq arquivo7 (open abre7 "r"))

        (while      (setq nlaje (read-line arquivo7))

          (setq nn (read (substr nlaje 2 1)))

          (setq espessura (read (substr nlaje 10 15)))

          (if (= contnivel nn)

            (setq alt (- haltura espessura))

          )

        )

        (close arquivo7)

        (setq P "PA")

        (setq condicao 1)

        (setq contpa 1)

        (while      (<= (- condicao 2) 0)      ;Definição da dimensão da parede

          (if (<= (- condicao 1) 0)

            (progn

              (command "OSMODE" "33")

              (initget 7)

              (setq larg (getreal "\nESPESSURA da PAREDE (cm)==> "))

              (setq larg1 (rtos larg 1 3))

              (setq alt1 (rtos alt 1 3))

              (setq larg2 (rtos larg 2 1))

              (setq alt2 (rtos alt 2 1))

            )

          )

                                  ;Definição da posição da parede

          (command "OSMODE" "33")

          (setq C (getpoint "\nSelecione o ponto INICIAL da PAREDE."))

          (setq coordX2 (car C))

          (setq coordY2 (cadr C))

          (setq D (getpoint "\nSelecione o ponto FINAL da PAREDE."))

          (setq coordX3 (car D))

          (setq coordY3 (cadr D))

          (setq coordXf2 (rtos coordX2 1 3))

          (setq coordYf2 (rtos coordY2 1 3))

          (setq coordXf3 (rtos coordX3 1 3))

          (setq coordYf3 (rtos coordY3 1 3))

                                  ;parede paralelas a x

          (if (= coordYf2 coordYf3)

            (progn

              (setq A (polar C (/ pi 2) (/ larg 2)))

              (setq B (polar D (/ (* 3 pi) 2) (/ larg 2)))

              (command "osnap" "off")

              (setvar "clayer" lay33)

              (command "color" "157" "")

              (command "rectangle" A B "")

              (setq extruda (entlast))

              (command "extrude" extruda "" alt "" 0 "")

              (setvar "clayer" lay3)

              (command "color" "2")

              (command "line" C D "")

              (princ P arq8)

              (princ contnivel arq8)

              (princ contpa arq8)

              (princ "       " arq8)

              (princ carg arq8)

              (princ "       " arq8)

              (princ coordXf2 arq8)

              (princ "       " arq8)

              (princ coordYf2 arq8)

              (princ "       " arq8)

              (princ cota arq8)

              (princ "       " arq8)

              (princ coordXf3 arq8)

              (princ "       " arq8)

              (princ coordYf3 arq8)

              (princ "       " arq8)

              (princ cota arq8)

              (princ "\n" arq8)

            )

          )

                                  ;parede paralelas a y

          (if (= coordXf2 coordXf3)

            (progn

              (setq A (polar C (* 3 pi) (/ larg 2)))

              (setq B (polar D (* 2 pi) (/ larg 2)))

              (command "osnap" "off")

              (setvar "clayer" lay33)

              (command "color" "157" "")

              (command "rectangle" A B "")

              (setq extruda (entlast))

              (command "extrude" extruda "" alt "" 0 "")

              (setvar "clayer" lay3)

              (command "color" "2")

              (command "line" C D "")

              (princ P arq8)

              (princ contnivel arq8)

              (princ contpa arq8)

              (princ "       " arq8)

              (princ carg arq8)

              (princ "       " arq8)

              (princ coordXf2 arq8)

              (princ "       " arq8)

              (princ coordYf2 arq8)

              (princ "       " arq8)

              (princ cota arq8)

              (princ "       " arq8)

              (princ coordXf3 arq8)

              (princ "       " arq8)

              (princ coordYf3 arq8)

              (princ "       " arq8)

              (princ cota arq8)

              (princ "\n" arq8)

            )

          )

          (setq condi

               (getint

                 "Para continuar com a mesma viga digite [2], para mudar a dimensão da viga digite [1] e para encerrar digite [3]  "

               )

          )

          (if (= condi 2)

            (progn

              (setq condicao 2)

            )

          )

          (if (= condi 1)

            (progn

              (setq condicao 1)

            )

          )

          (if (= condi 3)

            (progn

              (setq condicao 3)

            )

          )

          (setq contpa (+ contpa 1))

        )

       )

      )

    )

;=====================================================ESQUADRIAS===================

    (setvar "insunits" 5)

    (alert

      "Definir ESQUADRIAS (PORTAS e posteriormente JANELAS) na estrutura "

    )

    (initget "Sim Não" 1)

    (setq esq (getkword

             "\n-> Digite (Sim/Não) para a inserção das PORTAS. "

             )

    )

    (if      (= esq "Sim")

      (progn

 

       (setq

         bloco

          (getfiled "n-> Selcione o bloco a (PORTA) ser inserido"

                  ""

                  "dwg"

                  8

          )

       )

       (setq cont 2)

       (while (<= (- cont 2) 0)

         (if (<= (- cont 1) 0)

           (progn

             (setq

             bloco (getfiled

                    "n-> Selecione o bloco a (PORTA) ser inserido"

                    ""

                    "dwg"

                    8

                   )

             )

           )

         )

         (WHILE (NOT (SETQ parede

                         (ENTSEL

                           "\n-> Selecione a parede a qual a PORTA será inserida: "

                         )

                   )

              )

         )

         (setvar "osmode" 35)

         (setq ptr (getpoint "\nPonto de referencia "))

         (setq      x (car ptr)

             y (cadr ptr)

             z (caddr ptr)

         )

         (setq xr (getreal "\nDISTÂNCIA (cm) em relação a X: "))

         (setq yr (getreal "\nDISTÂNCIA (cm) em relação a Y: "))

         (setq      xb (+ x xr)

             yb (+ y yr)

         )

         (setq ptb (list xb yb z))

         (command "ucs" ptb"")

         (command "insert" bloco ptb "" "" "")

         (setq ent1 (entlast))

         (if (= (setq ang

                    (getreal "\nInforme o ANGULO de inserção da PORTA <0> "

                    )

              )

              nil

             )

           (setq ang 0)

         )

         (if (/= ang 0)

           (command "rotate3d" ent1 "" "z" ptb ang)

         )

         (command "explode" ent1 "")

         (setq subt (ssget "X" (list (cons 8 "subtrair"))))

         (command "subtract" parede "" subt "")

         (command "ucs" (list 0 0 pplano) "")

         (setq      condi

              (getint

                "\nPara MUDAR digite [1] para continuar com o MESMO bloco digite [2] e para TERMINAR digite [3] "

              )

         )

         (if (= condi 2)

           (progn

             (setq cont 2)

           )

         )

         (if (= condi 1)

           (progn

             (setq cont 1)

           )

         )

         (if (= condi 3)

           (progn

             (setq cont 3)

           )

         )

       )

      )

    )

;========================================janela============================

    (initget "Sim Não" 1)

    (setq esq1 (getkword

              "\n-> Digite (Sim/Não) para a inserção das JANELAS. "

              )

    )

    (if      (= esq1 "Sim")

      (progn

       (setq cont 2)

       (setq

         bloco1 (getfiled

                "n-> Selecione o bloco (JANELA) a ser inserido"

                ""

                "dwg"

                8

              )

       )

       (while (<= (- cont 2) 0)

         (if (<= (- cont 1) 0)

           (progn

             (setq

             bloco1

              (getfiled

                "n-> Selecione o bloco (JANELA) a ser inserido"

                ""

                "dwg"

                8

              )

             )

           )

         )

         (WHILE (NOT (SETQ parede1

                         (ENTSEL

                           "\n-> Selecione a parede a qual a JANELA será inserida: "

                         )

                   )

              )

         )

         (setvar "osmode" 35)

         (setq ptr1 (getpoint "\nPonto de referencia "))

         (setq      x1 (car ptr1)

             y1 (cadr ptr1)            

         )

         (setq xr1 (getreal "\nDISTÂNCIA (cm) em relação a X <0> "))

         (setq yr1 (getreal "\nDISTÂNCIA (cm) em relação a Y <0> "))

         (setq zr1 (getreal "\nPEITORIL (cm) em relação a Z <100> "))

         (setq      xb1 (+ x1 xr1)

             yb1 (+ y1 yr1)            

         )

         (setq ptb1 (list xb1 yb1 zr1))   

         (command "ucs" ptb1 "")

         (setq ptb2 (list 0 0 0))

         (command "insert" bloco1 (list 0 0 0 ) "" "" "")

         (setq ent2 (entlast))

         (if (= (setq ang1

                    (getreal "\nInforme o ANGULO de inserção da JANELA <0> "

                    )

              )

              nil

             )

           (setq ang1 0)

         )

         (if (/= ang1 0)

           (command "rotate3d" ent2 "" "z" ptb2 ang1)

         )

         (command "explode" ent2 "")      

         (setq subt2 (ssget "X" (list (cons 8 "subtrair"))))

         (command "subtract" parede1 "" subt2 "")

         (command "ucs" (list 0 0 pplano) "")

         (setq      condi1

              (getint

                "\nPara MUDAR digite [1] para continuar com o MESMO bloco digite [2] e para TERMINAR digite [3] "

              )

         )

         (if (= condi1 2)

           (progn

             (setq cont 2)

           )

         )

         (if (= condi1 1)

           (progn

             (setq cont 1)

           )

         )

         (if (= condi1 3)

           (progn

             (setq cont 3)

           )

         )

       )

      )

    )

    (close arquivo6)

    (if      (<= contnivel 1)

      (progn

       (command "layer" "off" "PILAR" "")

       (command "layer" "off" "Eixos" "")

      )

    )

    (setq contnivel (+ contnivel 1))

    (setvar "clayer" "AUXILIAR")

    (command "layer" "off" lay3 "")

    (command "layer" "off" lay33 "")

    (command "layer" "off" eap "")

    (command "layer" "off" "esquadrias" "")

   

  )                               ;fim repeat

  (command "layer" "on" "3D PILAR" "")

  (setq quantos 1)

  (repeat nivel

    (setq quantos1 (itoa quantos))   

    (setq viga "3D VIGAS ")

    (setq laje "3D LAJES ")

    (setq parede "3D PAREDE ")   

    (setq layV (strcat viga quantos1))

    (setq layL (strcat laje quantos1))

    (setq layP (strcat parede quantos1))

    (command "layer" "on" layV "")

    (command "layer" "on" layL "")

    (command "layer" "on" layP "")

    (setq quantos (+ quantos 1))

  )

  (command "layer" "on" "esquadrias" "")

  (command "ucs" "w")

  (command "zom" "extents")

  (command "vpoint" (list -1 -1 1) "")

  (command "_vscurrent" "Realistic")

  (close arquivo2)

  (close arquivo6)

  (close arquivo5)

  (close arquivo7)

)

1.7.      Rotina modulo6.lsp

 

(defun c:modulo6 ()

   ;Definição da grelha de cada pavimento

  (setq padrao (open "Obra atual.txt" "r"))

  (setq nome (read-line padrao))

  (close padrao)

  (setq extensao ".txt")

  (setq numero9 "9")

  (setq abre9 (strcat nome numero9 extensao))

  (setq arq9 (open abre9 "w"))

  (initget 7)

  (setq dx (getreal "\nQuantidade de divisões da grelha na direção do eixo X==> "))

  (initget 7)

  (setq dy (getreal "\nQuantidade de divisões da grelha na direção do eixo Y==> "))

  (setq n1 (+ dx 1))

  (setq n2 (+ dy 1))

  (setq nos (* n1 n2));quantidade de nós da grelha

  (setq barrah (* dx (+ dy 1)));quantidade de barras na direção de x da grelha

  (setq barrav (* dy (+ dx 1)));quantidade de barras na direção de y da grelha

  (setq numero3 "3")

  (setq le1 (strcat nome numero3 extensao))

  (setq disteixos (open le1 "r"))

  (setq pula1 (read-line disteixos))

  (setq pula2 (read-line disteixos))

  (setq dmv (read (substr pula2 37 10)));máxima distância na direção de y da forma

  (setq pula3 (read-line disteixos))

  (setq pula4 (read-line disteixos))

  (setq dmh (read (substr pula4 37 10)));máxima distância na direção de x da forma

  (setq disty (/ dmv dy));distância entre os nós na direção de y

  (close disteixos)

  (princ "=======NÓS INSERIDOS NO NÍVEL '0'[BASE DOS PILARES]=======" arq9)

  (princ "\n" arq9)

  (setq numero5 "5")

  (setq pilares1 (strcat nome numero5 extensao))

  (setq pilares (open pilares1 "r"))

  (setq contno 1)

  ;GRAVAÇÃO DOS NÓS INCIAIS DA GRELHA (BASE DOS PILARES)

  (while (setq coord (read-line pilares))

    (setq coordx1 (read (substr coord 44 11)))

    (setq coordy1 (read (substr coord 61 11)))

    (setq coordx (rtos coordx1 1 3))

    (setq coordy (rtos coordy1 1 3))

    (setq coordz (rtos 0 1 3))

    (princ contno arq9)

    (princ "      " arq9)

    (princ coordx arq9)

    (princ "      " arq9)

    (princ coordy arq9)

    (princ "      " arq9)

    (princ coordz arq9)

    (princ "\n" arq9)

    (setq contno (+ contno 1))

    )

  (close arq9)

  (setq numero2 "2")

  (setq pi1 (strcat nome numero2 extensao))

  (setq arqpiso (open pi1 "r"))

  (while (setq numeropiso1 (read-line arqpiso))

    (setq numeropiso (read (substr numeropiso1 1 5)));quantidade de pisos presentes na edificação

    )

  (close arqpiso)

  ;GRAVAÇÃO DOS DEMAIS NÓS DA GRELHA ESPACIAL

  (setq arqpiso (open pi1 "r"))

  (setq pula1 (read-line arqpiso))

  (setq contarq 10)

  (setq contanivel 1)

  (repeat numeropiso

   (setq contanivel1 (rtos contanivel 2 0))

   (setq contarq1 (rtos contarq 2 0))

   (setq abre (strcat nome contarq1 extensao))

   (setq abrear (open abre "w"))

   (setq var1 "===========NÓS INSERIDOS NO NÍVEL ")

   (setq var2 contanivel1)

   (setq var3 "===========")

   (setq junta1 (strcat var1 var2 var3))

   (princ junta1 abrear)

   (princ "\n" abrear)

   (setq z1a (read-line arqpiso))

   (setq z1 (read (substr z1a 83 9)))

   (setq z1b (* z1 100))

   (setq z (rtos z1b 1 3));obtenção dos valores de z dos nós

   (setq icont2 1)

   (setq y dmv)

   (while (< (- icont2 dy) 2)

     (setq distx (/ dmh dx));distância entre os nós na direção de x

     (setq icont1 1)

       (while (< (- icont1 dx) 2)

        (setq x (* (- icont1 1) distx))

        (setq icont1 (+ icont1 1))

        (setq x1 (rtos x 1 3))

        (setq E1 (rtos y 1 3))

        (princ contno abrear)

        (princ "      " abrear)

        (princ x1 abrear)

        (princ "      " abrear)

        (princ E1 abrear)

        (princ "      " abrear)

        (princ z abrear)

        (princ "\n" abrear)

        (setq contno (+ contno 1))

       )

      (setq y (- y disty))

      (setq icont2 (+ icont2 1))

      )

   (close abrear)

   (setq contanivel (+ contanivel 1))

   (setq contarq (+ contarq 1))

  )

  (close arqpiso)

  ;==ESQUEMATIZAÇÃO DA GRELHA NA TELA GRÁFICA==

  ;Desenho dos nós da grelha

  (command "-layer" "OFF" "Pilares" "")

  (setq nome1 (open "Obra atual.txt" "r"))

  (setq nome (read-line nome1))

  (close nome1)

  (setq extensao ".txt")

  (setq numero2 "2")

  (setq abre0 (strcat nome numero2 extensao))

  (setq arq2 (open abre0 "r"))

  (while (setq nivel1 (read-line arq2))

    (setq nivel (read (substr nivel1 1 4)));numero de niveis da edificação

    )

  (close arq2)

  (setq numero9 "9")

  (setq abre1 (strcat nome numero9 extensao))

  (setq coordnos1 (open abre1 "r"))

  (while (setq nnos1 (read-line coordnos1))

    (setq nnos (read (substr nnos1 1 4)));numero de nós da grelha espacial

    )

  (close coordnos1)

  (setq coordnos (open abre1 "r"))

  (setq pula1 (read-line coordnos));pulando o cabeçalho do arquivo de nós

  (command "osnap" "off")

  (setq numero5 "5")

  (setq abre2 (strcat nome numero5 extensao))

  (setq arq5 (open abre2 "r"))

  (while (setq pilar1 (read-line arq5))

    (setq npilar (read (substr pilar1 2 4)));numero de pilares da estrutura

    )

  (close arq5)

  (command "osnap" "off")

  (command "layer" "n" "Nós0" "s" "Nós0" "")

  (repeat npilar

    (setq le1 (read-line coordnos))

    (setq x1 (read (substr le1 7 13)))

    (setq y1 (read (substr le1 22 13)))

    (setq z1 (read (substr le1 37 13)))

    (command "color" "red")

    (command "circle" (list x1 y1 z1) 5 "")

    )

  (close coordnos)

  (setq nos "Nós")

  (setq contni 1)

  (command "osnap" "off")

  (setq numero10 10)

  (repeat nivel

    (setq numero10a (rtos numero10 2 0))

    (setq abrenos (strcat nome numero10a extensao))

    (setq coordnos2 (open abrenos "r"))

    (setq pula1 (read-line coordnos2))

    (setq contni1 (itoa contni))

    (setq lay1 (strcat nos contni1))

    (command "layer" "n" lay1 "s" lay1 "")

    (command "color" "red")

    (while (setq le2 (read-line coordnos2))

      (setq x (read (substr le2 7 13)))

      (setq y (read (substr le2 22 13)))

      (setq z (read (substr le2 37 13)))

      (command "circle" (list x y z) 5 "")

     )

    (setq contni (+ contni 1))

    (setq numero10 (+ numero10 1))

    (close coordnos2)

    )

  ;Desenho das barras da grelha

  (command "layer" "n" "Barras" "s" "Barras" "")

  (command "color" "blue")

  (command "osnap" "off")

  (setq contarq2 (rtos contarq 2 0))

  (setq abreba (strcat nome contarq2 extensao))

  (setq arqbarra (open abreba "w"));arquivo que gravará as barras de toda a grelha

  (setq contabarra 1)

  (setq numero9 "9")

  (setq abre9 (strcat nome numero9 extensao))

  (setq arq9 (open abre9 "r"))

  (setq pula2 (read-line arq9))

  (while (setq coord1 (read-line arq9))

    (setq xi (read (substr coord1 7 12)))

    (setq yi (read (substr coord1 22 12)))

    (setq zi (read (substr coord1 37 12)))

    (setq numero2 "2")

    (setq abre2 (strcat nome numero2 extensao))

    (setq arq2 (open abre2 "r"))

    (setq pula1 (read-line arq2))

    (repeat nivel

      (setq contabarra1 (rtos contabarra 2 0))

      (setq alt1 (read-line arq2))

      (setq altni1 (read (substr alt1 17 9)))

      (setq altni (* altni1 100))

      (setq xf xi)

      (setq yf yi)

      (setq zf (+ zi altni))

      (setq pti (list xi yi zi))

      (setq ptf (list xf yf zf))

      (command "line" pti ptf "")

      (setq xi1 (rtos xi 1 3))

      (setq yi1 (rtos yi 1 3))

      (setq zi1 (rtos zi 1 3))

      (setq xf1 (rtos xf 1 3))

      (setq yf1 (rtos yf 1 3))

      (setq zf1 (rtos zf 1 3))

      (princ contabarra1 arqbarra)

      (princ "     " arqbarra)

      (princ xi1 arqbarra)

      (princ "     " arqbarra)

      (princ yi1 arqbarra)

      (princ "     " arqbarra)

      (princ zi1 arqbarra)

      (princ "        " arqbarra)

      (princ xf1 arqbarra)

      (princ "     " arqbarra)

      (princ yf1 arqbarra)

      (princ "     " arqbarra)

      (princ zf1 arqbarra)

      (princ "\n" arqbarra)

      (setq xi xf)

      (setq yi yf)

      (setq zi zf)

      (setq contabarra (+ contabarra 1))

      )

    (close arq2)

    )

  (close arq9)

  (setq contarq 10)

  (repeat nivel

    (setq contarq1 (rtos contarq 2 0))

    (setq abre10 (strcat nome contarq1 extensao))

    (setq arq (open abre10 "r"))

    (setq pula1 (read-line arq))

    ;barras direcao de x

    (setq icont2 0)

    (while (< icont2 (+ dy 1))

      (setq n2 (read-line arq))

      (setq numerono1 (read (substr n2 1 5)))

      (setq x1 (read (substr n2 6 15)))

      (setq y1 (read (substr n2 22 15)))

      (setq z1 (read (substr n2 37 15)))

      (setq icont3 0)

      (while (< icont3 dx)

        (setq n3 (read-line arq))

        (setq numerono2 (read (substr n3 1 5)))

        (setq x2 (read (substr n3 6 15)))

       (setq y2 (read (substr n3 22 15)))

       (setq z2 (read (substr n3 37 15)))

        (command "line" (list x1 y1 z1)(list x2 y2 z2) "")

        (setq xf1 (rtos x1 1 3))

        (setq yf1 (rtos y1 1 3))

       (setq zf1 (rtos z1 1 3))

        (setq xf2 (rtos x2 1 3))

        (setq yf2 (rtos y2 1 3))

       (setq zf2 (rtos z2 1 3))

       (setq contabarra1 (rtos contabarra 2 0))

        (princ contabarra1 arqbarra)

        (princ "     " arqbarra)

        (princ xf1 arqbarra)

        (princ "     " arqbarra)

        (princ yf1 arqbarra)

        (princ "     " arqbarra)

        (princ zf1 arqbarra)

        (princ "        " arqbarra)

        (princ xf2 arqbarra)

        (princ "     " arqbarra)

        (princ yf2 arqbarra)

       (princ "     " arqbarra)

       (princ zf2 arqbarra)

       (princ "\n" arqbarra)

        (setq x1 x2)

        (setq y1 y2)

       (setq z1 z2)

        (setq numerono1 numerono2)

        (setq icont3 (+ icont3 1))

        (setq contabarra (+ contabarra 1))

      )

    (setq icont2 (+ icont2 1))

   )

    (setq contarq (+ contarq 1))

    (close arq)

  )

  ;barras direcao de y

  (setq contarq 10)

  (repeat nivel

    (setq icont4 1)

    (setq barrav (+ barrah 1))

    (while (< (- icont4 (+ dx 1)) 1)

      (setq horizontal 1)

      (while (< (- horizontal (+ dy 1)) 0)

        (setq aux1 (- horizontal 1))

        (setq aux2 (+ dx 1))

        (setq nnoinicial (+ (* aux1 aux2) icont4))

       (setq contarq1 (rtos contarq 2 0))

        (setq arq2a (strcat nome contarq1 extensao))

        (setq arq (open arq2a "r"))

        (setq titulo2 (read-line arq))

        (setq contalinha 1)

        (while (< (- contalinha nnoinicial) 0)

          (setq fp2 (read-line arq))

          (setq contalinha (+ contalinha 1))

        )

        (setq n1 (read-line arq))

        (setq numerono1 (read (substr n1 1 5)))

        (setq x1 (read (substr n1 6 15)))

        (setq y1 (read (substr n1 22 15)))

       (setq z1 (read (substr n1 37 15)))

        (close arq)

        (setq contalinha 1)

        (setq nnofinal (+ nnoinicial (+ dx 1)))

        (setq arq4a (strcat nome contarq1 extensao))

        (setq arq4 (open arq4a "r"))

        (setq titulo3 (read-line arq4))

        (while (< (- contalinha nnofinal) 0)

          (setq fp2 (read-line arq4))

          (setq contalinha (+ contalinha 1))

        )

        (setq n2 (read-line arq4))

        (setq numerono2 (read (substr n2 1 5)))

        (setq x2 (read (substr n2 6 15)))

        (setq y2 (read (substr n2 22 15)))

       (setq z2 (read (substr n2 37 15)))

        (command "line" (list x1 y1 z1)(list x2 y2 z2) "")

        (setq xf1 (rtos x1 1 3))

        (setq yf1 (rtos y1 1 3))

        (setq zf1 (rtos z1 1 3))

        (setq xf2 (rtos x2 1 3))

       (setq yf2 (rtos y2 1 3))

       (setq zf2 (rtos z2 1 3))

       (setq contabarra1 (rtos contabarra 2 0))

        (princ contabarra1 arqbarra)

        (princ "     " arqbarra)

        (princ xf1 arqbarra)

        (princ "     " arqbarra)

        (princ yf1 arqbarra)

        (princ "     " arqbarra)

        (princ zf1 arqbarra)

        (princ "        " arqbarra)

        (princ xf2 arqbarra)

        (princ "     " arqbarra)

        (princ yf2 arqbarra)

        (princ "     " arqbarra)

        (princ zf2 arqbarra)

       (princ "\n" arqbarra)

        (setq x1 x2)

        (setq y1 y2)

       (setq z1 z2)

        (setq horizontal (+ horizontal 1))

        (close arq4)

        (setq barrav (+ barrav 1))

       (setq contabarra (+ contabarra 1))

       )

     (setq icont4 (+ icont4 1))

    )

    (setq contarq (+ contarq 1))

   )

  (close arqbarra)

  )