Pesquisar este blog

quinta-feira, 25 de outubro de 2012

Lista dos Principais Códigos DXF - AutoLisp

Boa noite, conforme falei na semana passada, hoje estou postando uma lista com os principais códigos DXF.

Pra quem está começando, sugiro imprimir a lista pois será muito útil ter ela em mãos quando for programar, com o tempo nós acabamos decorando os mais comuns.


Alguns códigos DXF são  comuns a todos os elementos:
Entidade  
Código Descrição
-1 node da entidade: <ENTITY-NAME>
0 tipo do elemento
6 tipo de linha (se não existir, indica tipo de linha "BYLAYER")
8 layer
62 índice de cor (se não existir, índice de cor  "BYLAYER")
210 elevação
Principais Códigos DXF por Elemento
Entidade LINE
Código Descrição
0 tipo do elemento "LINE"
10 primeiro vértice
11 segundo vértice
Entidade CIRCLE
Código Descrição
0 tipo do elemento: "CIRCLE"
10 centro
40 raio
Entidade CIRCLE
Código Descrição
0 tipo do elemento: "CIRCLE"
10 primeiro vértice
11 segundo vértice
Entidade ARC
Código Descrição
0 tipo do elemento: "ARC"
10 centro
40 raio
50 ângulo inicial (em radianos)
51 ângulo final (em radianos)
Entidade TEXT
Código Descrição
0 tipo do elemento: "TEXT"
1 cadeia de caracteres que compõe o texto
7 estilo de texto
10 canto inferior esquerdo
11 ponto de alinhamento
40 altura do texto
41 fator de escala de largura
50 ângulo de rotação (em radianos)
71 flag de geração de texto
72 flag de justificação horizintal
73 flag de alinhamento vertical
Entidade MTEXT
Código Descrição
0 tipo do elemento: "MTEXT"
1 cadeia de caracteres que compõe o texto
7 estilo de texto
10 canto inferior esquerdo
40 altura do texto
41 fator de escala de largura
50 ângulo de rotação (em radianos)
71 flag de geração de texto
72 flag de justificação horizintal
73 flag de alinhamento vertical
Entidade POLYLINE
Código Descrição
0 tipo do elemento: "LWPOLYLINE"
90 quantidade de vértices
10 uma lista para cada vértice
40 uma lista para cada trecho: espessura inicial
41 uma lista para cada trecho: espessura final do trecho
42 uma lista para cada trecho: fator de curvatura (para trechos em arco)
70 tipo de polyline
Entidade SPLINE
Código Descrição
0 tipo do elemento: "SPLINE"
90 quantidade de vértices
70 tipo de spline
Entidade 3DPOLY
Código Descrição
0 tipo do elemento: "POLYLINE"
40 espessura inicial
41 espessura final do trecho de ponto de inserção
Entidade VERTEX
Código Descrição
0 tipo do elemento: "VERTEX"
10 ponto
Entidade SEQEND
Código Descrição
0 tipo do elemento: "VERTEX"
-2 "Entity-Name" do objeto principal
Entidade POINT
Código Descrição
0 tipo do elemento: "POINT"
10 ponto
Entidade INSERT
Código Descrição
0 tipo do elemento: "INSERT"
2 nome do bloco
10 ponto de inserção
41 fator de escala X
42 fator de escala Y
43 fator de escala Z
50 ângulo de rotação (em radianos)
Entidade ATTRIB
Código Descrição
0 tipo do elemento: "ATTRIB"
1 valor do atributo
2 nome do atributo
3 mensagem de "prompt" do atributo
7 estilo de texto
10 ponto de inserção
40 altura do texto
41 fator de escala de largura
50 ângulo de rotação (em radianos)
70 características do atributo
Entidade DIMENSION
Código Descrição
0 tipo do elemento: "DIMENSION"
3 estilo de dimensionamento
10, 11, 12, 13, 14, 15 coordenadas de pontos necessários para definição da cota
70 tipo da cota
Entidade LAYER
Código Descrição
0 tipo do elemento: "LAYER"
2 nome do layer
70 estado do layer
Entidade STYLE
Código Descrição
0 tipo do elemento: "STYLE"
2 nome do estilo de texto
3 nome do arquivo de fonte de texto
40 altura do texto
41 fator de escala de largura
50 ângulo de inclinação (em radianos)
71 tipo do elemento: "STYLE"

terça-feira, 23 de outubro de 2012

convertendo coordenadas de notação científica para texto


Convertendo Coordenadas de lista "entity list" (notação científica) para texto (string)


Boa noite

     Hoje vou atender a duas solicitações de um leitor de uma vez só: 1°) ao captar a(s) coordenadas de um objeto, como faço para processá-las?; 2° como convertê-las de notação científica, que é a notação corrente das entity lists do Cad, para um formato manipulável (exemplo: formato texto). Para isso, vou lhes passar uma função que criei, bem útil, que se chama "converte_utm_list-string".    


;converte um valor de utm bruto (em formato lista entity list, notação científica, para texto string
(defun converte_utm_list-string (utmbruta;utmbruta deve ser um parâmetro coordenada extraída através de entity list (assoc dxf 10 ou 11)

   (setq coordenada_X (car utmbruta)) ;decomposição em "x" de utmbruta 
   (setq coordenada_X (rtos coordenada_X 2 4))  ;conversão para texto  
   (if (/= (strlen coordenada_X) 11) ;validação último caracter da coordenada   
      (setq  coordenada_X (strcat coordenada_X "0")) ;tratamento técnico do arredondamento
   )  
   (setq coordenada_Y (car (cdr utmbruta))) ;decomposição em "y" de utmbruta 
   (setq coordenada_Y (rtos coordenada_Y 2 4)) ;vale tudo o visto para "x"
   (if (/= (strlen coordenada_Y) 12)
      (setq  coordenada_Y (strcat coordenada_Y "0"))
   )  
   (setq utmstring (strcat coordenada_X ", " coordenada_Y)) ;formação de string para coordenada (lay-out flexível)
   utmstring   ;retorno da coordenada em formato texto.
)


Exemplo de uso: Supondo que "utmbruta" já tenha seu valor extraído de um objeto, e no mesmo já feito o "car" para exclusão do campo chave do par associado, e a variável já carregada:

      utmbruta = (10 222344.0   7.56463e+006    0.0)  

      utmlapidada = (converte_utm_list-string (utmbruta))

      utmlapidada = 222344.0236 7564632.0356
      
Valeu, abraço.

quarta-feira, 17 de outubro de 2012

Layers: ligando e desligando via código

Boa noite


     Irei falar sobre um assunto relativamente simples, mas que dá muito trabalho aos programadores iniciantes em Auto-Lisp: a manipulação da janela de layers (camadas). Especialmente, neste artigo, irei falar sobre as operações: "Criar um layer"; "Setar um layer"; "Ligar um (ou mais) layer"; e "Desligar um (ou mais) layer" usando a linguagem auto lisp. Ainda irei dar uma dica sobre o operador "*" junto a valores strings.
     Para início, é importante ter-se alguns entendimentos básicos de autocad sobre o assunto:
        > O layer padrão de todo arquivo é o "0". Para a construção de blocos, é útil que todo o traçado do elemento seja feito neste layer, pois ele sendo um bloco em outro arquivo, o mesmo automaticamente assumirá os valores do layer em que foi inserido;
        >  na definição de layers, pode-se setar propriedades como cor de visualização, tipo de traçado da linha, espessura padrão da linha, cor de plotagem, se ele é plotavel, se ele pode ser apenas um viewpoint, e ainda descrever para que o mesmo serve (description).
     Ao digitar o comando layer no prompt nas versões atuais do auto cad, é provável que se apresentará uma janela amigável para se configurar e editar os layers. Com tudo, a manipulação de layes via auto-lisp tem de ser estruturada como era nas versões mais antigas - ou seja - via linha de comando. Vamos então as operações propostas:


  • criar um layer:
(command "layer" "m" "O_NOME_DO_LAYER" "c" "blue" "" "")

 - sendo "m" de "Make"; "c" de "Color", e "" "" como confirmação de comando (duplo enter)

  • setar um layer:
(command "layer" "s" "O_NOME_DO_LAYER" "" ""

- sendo "s" de "SET"; "c" de "Color", e "" "" como confirmação de comando (duplo enter)

  • ligar um layer (ou uma lista de layers):
(command "layer" "ON" "O_NOME_DO_LAYER" "" ""

  • desligar um layer (ou uma lista de layers):
(command "layer" "OFF" "O_NOME_DO_LAYER" "" ""

prezados, até mais...