subrotinas

Autolisp – UTM para LatLon e viceversa

Bom, hoje vou voltar um pouco às origens do blog!!! Um pouco de autolisp pra relembrar os velhos tempos de programação em POG!!! A lisp abaixo na verdade são algumas subrotinas para conversão de coordenadas geográficas em UTM e viceversa. É bem fácil de usar se você souber o que é UTM e coordenada geográfica […]

Autolisp – UTM para LatLon e viceversa Read More »

Visualizar arquivos SLD ou SLB

Dando continuidade ao post anterior, sobre slides e bibliotecas, vamos ver um visualizador de slides, bem útil quando se tem vários slides, seja em arquivos separados, ou numa SLB. Você pode usar o Slideviewer, também se preferir. Este programa, ;função para escolher um slide de um biblioteca;(choose_sld “F:/autocad/drenagem e esgoto/Drenagem/de_fonts.slb”);(choose_sld “c:/temp/”)(defun choose_sld (local / dcl dir tmp n offset slds num_col                   num_lin img_witdh img_height img_bkgr img_off                   key_prf key_scroll key_dlg index)  (setq num_col    2   ;numero de colunas a mostrar no dcl        num_lin    2   ;numero de linhas        img_witdh  28  ;largura dos slides (em caracteres)        img_height 10  ;altura dos slides (em nº de linhas)        img_bkgr   -16 ;background color quando ativo        img_off    -2  ;background color quando inativo        key_prf    “S” ;prefixo das KEY das imagens        key_scroll “SCROLL”  ;KEY do slide        key_dlg    “exemplo” ;KEY do dialogo;obtem a lista de slides, do diretorio, ou SLB:        slds       (if (vl-filename-extension local);SLB?                     (mapcar ‘(lambda (x) (strcat local “(“ x “)”))                             (slb2list local))                     (mapcar ‘(lambda (x) (strcat local x))                             (vl-directory-files local “*.sld”)));valor maximo do slider        maxval     (* num_lin num_col                      (/ (length slds) (* num_lin num_col)))        offset     maxval        dcl        (choose:make_and_load_dcl)) ;mostra o dcl na tela:  (new_dialog key_dlg dcl);desenhas as imagens nele:  (choose:popula_slides offset);inicia o dialog  (if (/= 0 (start_dialog))    (setq index (nth index slds)));descarrega da memoria  (unload_dialog dcl)  index) (defun choose:make_and_load_dcl (/ filename file j dcl);cria um arquivo temporario  (setq filename (vl-filename-mktemp “x.dcl”)        file     (open filename “w”)        j        0);escreve um dcl nele:  (write-line    (strcat key_dlg “: dialog { label = “escolha a figura”;n”            “:row {n”            ”  :column {// 1 coluna de “ (itoa num_lin) ” linhas visiveisn”)    file)  ;escreva uma matriz (linhas/colunas) de imagens  (repeat num_lin    (write-line (strcat ”   :row {//uma linha de “ (itoa num_col) ” imagens”)      file)    (repeat num_col      (write-line        (strcat          “:image_button {n”          “key = “” key_prf (itoa j) “”;n” ;ID da imagem          “height = “ (itoa img_height) “;n” ;altura, em nº de linhas de texto          “width = “ (itoa img_witdh) “;n”   ;largura, en nº de caracteresn          “action = “(choose:seleciona_img “ (itoa j) “)”;}”;acao          )        file)      (Setq j   (1+ j)))    (write-line “}” file))  ;adiciona o slider:  (write-line    (strcat “}n”            “:slider {n”;barra deslizante a direita            “layout = vertical;n” ;barra na vertical            “key = “” key_scroll “”;n”  ;ID da barrinha            “max_value = “ (itoa maxval) “;n”            “min_value = 0;n” ;sempre zero            “small_increment = “ (itoa num_col) “;n”            “big_increment= “ (itoa (* num_lin num_col))“;n”            “action = “(choose:popula_slides (atoi $value))”;n”            “value = “ (itoa maxval) “;n”            “}}n”            “:column {:text{key=”texto”;} ok_cancel;}}”)    file);fecha o arquivo, carrega o dcl na memoria e apaga o arquivo  (close file)  (setq dcl (load_dialog filename))  (vl-file-delete filename);devolve o ID do dcl  dcl) ;função que preenche as imagens com os slides(defun choose:popula_slides (val / i w h nome)  (setq    i 0    offset  val)  (repeat (* num_lin num_col);obtem as props do slide    (setq nome (nth (+ i (– maxval offset)) slds)          w (dimx_tile (strcat key_prf (itoa i)))      h (dimy_tile (strcat key_prf (itoa i))))    ;limpe de (re)desenha o slide    (start_image (strcat key_prf (itoa i)))    (if nome      (progn ;desenha        (fill_image 0 0 w h img_bkgr)        (slide_image 0 0 w h nome))      (fill_image 0 0 w h img_off));desabilita img    (end_image);desabilita imagens nao preenchidas    (mode_tile (strcat key_prf (itoa i))      (if nome 0 1))    (setq i (1+ i)))) ;função que seleciona o nome do slide(defun choose:seleciona_img (val)  (setq index (+ val (– maxval offset)))  (set_tile “texto” (nth index  slds))) Link(s) da(s) subrotina(s) usada(s):slb2list pode ser usado em programas lisp, para

Visualizar arquivos SLD ou SLB Read More »

Carrinho de compras
Rolar para cima