28 de Outubro de 2011

John McCarthy - Faleceu o pai do LISP

 

 

image

Para quem trabalha com a popular ferramenta de desenho, o AutoCad, sabe a importância que a linguagem AutoLisp representa na personalização e optimização, já que a partir dela é possível criar rotinas que acrescentam novas funcionalidades e ferramentas, desde as mais básicas até às mais complexas.
O AutoLisp foi desenvolvido especificamente para o AutoCad a partir da linguagem de programação LISP.
Serve este preâmbulo para dar a notícia de que o criador do LISP e da sua aplicação na Inteligência Artificial, John McCarthy, faleceu em 23 deste mês, com 84 anos. Obrigado pelo seu legado!

Exemplo de uma simples rotina para AutoCad desenvolvida em AutoLisp.

;;rotina que permite alterar o tamanho das entidades texto

;;comando: atxt

(defun c:atxt (/ a ht n i b1 b c d b2)
(prompt "\nA ALTURA DO TEXTO SERÁ MODIFICADA")
(setvar "cmdecho" 0)
(setq a (ssget))
(setq ht (getdist "\nINTRODUZA NOVA ALTURA"))
(setq n (sslength a))
(setq i 0)
(repeat n
        (setq b1 (entget (ssname a i)))
        (setq i (1+ i))
        (setq c (assoc 40 b1))
        (setq d (cons (car c) ht))
        (setq b2 (subst d c b1))
        (entmod b2)
)

(princ)
)

;;end code

A notícia: Link

 

Fonte: Teknomatika

30 de Junho de 2011

ZPTEXT.lsp - Rotina AutoLISP

 

autolisp_image_08

Descrição: Esta rotina permite a selecção de entidades de texto numérico e desenhar entidades pontos elevadas na cota Z correspondentes ao valor do respectivo texto. Simultaneamente cria as correspondentes anotações de texto também elevadas no seu valor. Tantos os pontos criados como as anotações correspondentes são encaminhadas para layers próprias criadas automaticamente. Esta rotina mostra-se deveras útil para operações de transformação de topografia de 2D para 3D.

Description: This routine allows the selection of entities from text andnumeric entities draw high points in the Z coordinate corresponding to the value of the text. At the same time creates the corresponding text annotations also high in value. Both the points raised as the notes are forwarded to corresponding layers themselves automatically created.This routine appears to be very useful for operations transformationfrom 2D to 3D topography.

Comando: ZPTEXT

;;
;;rotina desenvolvida por Rotinas AutoLIsp - 2008
(defun c:zptext ()
  (setvar "CMDECHO" 0)
  (setvar "FLATLAND" 0)
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (setvar "PLINETYPE" 2)
  (setvar "AUPREC" 0)
  (setvar "PDMODE" 3)
(setvar "PDSIZE" 0.15)
  (command "layer" "make" "3d-pontos" "color" "1" "" "")
  (command "layer" "make" "3d-altimetria" "color" "103" "" "")
  (setq f_pt (open "c:\\coordenadastxt.tmp" "w"))
;;cria um ficheiro temporário no disco C:
  (vl-load-com)
  (setq    *modelspace*
     (vla-get-modelspace
       (vla-get-activedocument (vlax-get-acad-object))
     )
  )
  (princ "\n<P>Seleccionar o texto a transformar em 3D: <E>Select Text:")
;;seleccionar os textos a transformar
  (setq txt1 (ssget '((0 . "text"))))
  (if (= txt1 nil)
    (close f_pt)
  )
  (setq txt2 (sslength txt1))
  (setq counter 0);;contador
  (while (< counter txt2)
    (progn
      (setq txtent (entget (ssname txt1 counter)))
      (setq cotax (car (cdr (assoc 10 txtent))))
;;extrai coordena x
      (setq cotay (cadr (cdr (assoc 10 txtent))))
;;extrai coordenada y
      (setq cotaz (atof (cdr (assoc 1 txtent))))
;;extrai coordenada z
      (setq xyz (list cotax cotay cotaz))
;;define a coordenada xyz de cada ponto a alterar
      (command "layer" "set" "3d-pontos" "")
;;passa para layer corrente
      (command "point" xyz)
;; insere o ponto na elevação correspondente à anotação
      (command "layer" "set" "3d-altimetria" "")
;;passa para layer corrente
      (command "text" xyz 0.20 0 (rtos cotaz 2 2))
;;escreve as anotações com a respectiva elevação do ponto
    )
    (setq counter (1+ counter))
;;incrementa o valor 1 à variável do contador
  )
;;;
  (command "zoom" "e")
  (command "layer" "set" "0" "")
;;retoma como corrente a layer zero
  (princ)
)
;;

- Como instalar a rotina

14 de Dezembro de 2010

Curvas de Nível - Topografia

 

curvas_de_nivel (clicar para ampliar)

Curvas de nível:

Em topografia, o relevo de um terreno ou território é representado graficamente (mapas ou plantas topográficas) por linhas denominadas de curvas-de-nível.
As curvas-de-nível são linhas imaginárias em que cada uma em si representa uma porção de terreno com uma intercepção de pontos ou cotas à mesma altitude.
As curvas-de-nível no plano horizontal podem ser representadas em distâncias diferenciadas, sendo que um menor espaçamento significa um maior declive ou inclinação do terreno e um maior espaçamento significa menor declive.
No plano vertical, a representação das curvas-de-nível obedecerá a afastamentos equidistantes, sendo que as equidistâncias podem ser variáveis de mapa para mapa, normalmente em função da escala representada. Num mapa referente a pequenas parcelas, as equidistâncias podem representar valores de 1m ou até valores inferiores de acordo com o pormenor de leitura pretendido. Pelo contrário, em mapas mais abrangentes, representando grandes extensões de território, as equidistâncias podem equivaler a 5 metros ou valores bem superiores.

Graficamente, as curvas são anotadas com os valores da altitude/altimetria a que correspondem. Um perfil vertical resulta da projecção de linhas verticais no comprimento a que se referem os pontos das curvas interceptadas por uma linha recta no plano horizontal (ver figura acima).

As curvas-de-nível têm algumas propriedades intrínsecas que as caracterizam e definem, nomeadamente:
1 - Todos os pontos num terreno interceptados por uma curva-de-nível têm a mesma altitude;
2 - Uma curva-de-nível não pode derivar ou bi-furcar para outras curvas;
3 - As cruvas-de-nível nunca se podem cruzar ou interceptar.
4 - As curvas-de-nível fecham-se em si próprias, sendo que graficamente pode não ser possível representar essa realidade por insuficiência do tamanho do suporte na sua representação.

9 de Dezembro de 2010

Ga.lsp – Rotina para obter áreas

 

image

image

Excelente rotina de jefferypsanders.com, que permite obter as áreas de polígonos fechados, introduzindo automaticamente a respectiva anotação.

A rotina obtém e introduz também o valor do perímetro do polígono. No nosso caso, porque consideramos este segundo valor como irrelevante para as nossas necessidades, editamos o código da rotina de modo a introduzir apenas a área.

- Rotina original: Link

Comando: Ga

- Rotina alterada: Link

Comando: GAA

NOta: Para adequar o tamanho do texto, primeiramente deve ser alterado o valor correspondete da variável de sistema “textsize”.

 

Excellent jefferypsanders.com routine, giving areas of closed polygons, automatically introducing their annotation.

The routine gets the value and also introduces the perimeter of the
polygon. In our case, because we consider this second value as irrelevant to our needs, we edited the code of the routine in order to enter the area only.

- Google Translate

 
Powered by Blogger