Pedidos de Lisp

Bem vindos! forums AutoLisp Pedidos de Lisp

  • Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 4 anos, 4 meses atrás por Anônimo.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #2224
    cadklein
    Mestre

    Você tem alguma tarefa que precise fazer repetidas vezes no AutoCAD?
    Ou mesmo que nem tantas vezes, mas que gostaria que fosse mais rápido?

    Você tem uma necessidade e precisa usar N comandos para chegar ao objetivo e gostaria que fosse “mais simples”?

    Descreva suas necessidades e como gostaria que o seu “novo” comando funcione, estamos aqui para tentar ajudá-lo da melhor forma que pudermos.

    #2748
    Anônimo
    Inativo

    Olá a todos!! o/

    Comecei a fazer meu primeiro algoritmo mas não consegui finalizar pois fiquei com uma dúvida, vocês podem me ajudar?

    Fiz uma DCL com uma sessão de “rádio button” (selecionando os setores) e uma “lista” (selecionando os produtos).
    Gostaria de ao escolher o produto dessa lista e clickar em ok, inserisse o respectivo bloco selecionado.
    Como posso prosseguir?

    Abaixo o lisp e o print do DCL.

    ;::comando GERAL
    (defun c:geral ()
    (setq geral_id (load_dialog “c:/lisptao/lisp/caixa1.dcl”))
    (if (not (new_dialog “caixa_02” geral_id)) (exit))

    (set_tile “caixa_02_texto1” “TITULO”)

    ;radio box
    (if radio_option
    (set_tile “caixa_02_radcol” radio_option)
    (set_tile “caixa_02_radcol” “caixa_02_rd01”)
    )
    (action_tile “caixa_02_radcol” “(geral_radio_01)”)

    ;icon_image
    (setq x (dimx_tile “geral_01_imag”)
    y (dimy_tile “geral_01_imag”)
    )
    (start_image “caixa_02_imag”)
    (fill_image 0 0 x y -2)
    (slide_image 0 0 x y “c:/lisptao/slides/T10x15.sld”)
    (end_image)

    ;finalização
    (setq caixa_dialog (start_dialog))
    (unload_dialog geral_id)
    (if (= caixa_dialog 2) (c:pl1))
    (print)
    )

    ;subfunção radio box geral_radio_01
    (defun geral_radio_01 ()
    (setq radio_option $value)
    (cond
    ((= radio_option “caixa_02_rd01”) (setq lbox_list (list “Lateral Fixa Branca” “Lateral Fixa Transparente” “Lateral Fixa com AC” “Lateral Fixa com Porta” “Lateral Fixa com Janela” “Lateral Móvel Branca” “Lateral Móvel Transparente” “Lateral Sem Lona”)))
    ((= radio_option “caixa_02_rd02”) (setq lbox_list (list “Ar Condionado 20TR” “Ar Condionado 25TR” “Duto de Ar Comum” “Duto de Ar Espcial MPU” “Painel 04 Disjuntores” “Painel 02 Disjuntores” “Cabo de Alimentação” “Cortina de Ar” “Cooler KT18AS com Coifa” “Cooler KT18DS sem Coifa” “Cooler KT60YA” “Exaustor” “Abraçadeira Plástica Grande” “Cinta” “Funil” “Gás R22” )))
    ((= radio_option “caixa_02_rd03”) (setq lbox_list (list “Armário” “Box Chuveiro” “Box Vaso” “Box Mictório” “Pia”)))
    ((= radio_option “caixa_02_rd04”) (setq lbox_list (list “Mesa Buffet” “Mesa 4pax” “Mesa 8pax” “Lixeira”)))
    ((= radio_option “caixa_02_rd05”) (setq lbox_list (list “Cadeira Comum” “Mesa 4pax 1,00m” “Mesa 6pax 1,20m” “Mesa 8pax 1,50m” “Mesa 10pax 1,80m” “Mesa 12pax 1,80m” “Mesa 14pax 2,20m”)))
    ((= radio_option “caixa_02_rd06”) (setq lbox_list (list “Texto Tenda” “Texto Rodapé Tenda” “Texto Piso” “Texto Palco” “Texto Capacidade Total” “Legenda Lonas” “Legenda Climatização” “Observação”)))
    ((= radio_option “caixa_02_rd07”) (setq lbox_list (list “Acesso” “Nível Planta baixa” “Nível Corte” “Seta Circulação”)))
    )
    (start_list “caixa_02_lbox”)
    (mapcar ‘add_list lbox_list)
    (end_list)
    )

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    EDITADO POR LUCIANA KLEIN PARA ADICIONAR A IMAGEM:

    #2762
    Anônimo
    Inativo

    hugoik, Tudo bem?
    Isso me parece bem simples, poderia anexar os códigos .dcl ?

    #2765
    cadklein
    Mestre

    Oi Hugo,

    Pedi ajuda ao Mestre Eduardo Fernal e ele me enviou a resposta via email.

    Para não perder tempo o Eduardo fez uma rotina nova, mas seguindo a imagem do quadro de diálogo.
    Você pode usar como modelo:

    Você terá que trocar os paths F:\Clientes\Luciana\ por paths corretos, nos quais você instalar os arquivos.

    Terá também que providenciar os slides.

    No tópico “TEXTOS” terá que fazer um ‘escape’, se não houver slides a apresentar…
    Ou gerar slides com os nomes, porem todo preto, sem nada.

    Faça download do *.zip abaixo com os arquivos DCL e LSP:

    C_Efernal_DCL_LSP

    Caso tenha problemas com o download, copie e cole os textos abaixo e salve como solicitado:

    Salvar como *.dcl:

    efernal:dialog{label=”Curso E.Fernal de AutoLISP”;initial_focus=”msg”;
    :spacer{height=1;}
    :text{label=”Selecione o tópico e depois o item”;key=”msg”;alignment=centered;height=2;}
    :row{alignment=centered;fixed_width=true;
    :spacer{width=1;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Selecione tópico”;}
    :radio_column{alignment=top;fixed_height=true;
    :radio_button{label=”Lonaria”;key=”rb1″;}
    :radio_button{label=”Climatização”;key=”rb2″;}
    :radio_button{label=”Vestiário”;key=”rb3″;}
    :radio_button{label=”Refeitório”;key=”rb4″;}
    :radio_button{label=”Móveis Gerais”;key=”rb5″;}
    :radio_button{label=”Textos”;key=”rb6″;}
    :radio_button{label=”Símbolos”;key=”rb7″;}}}
    :spacer{width=2;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Selecione o item”;}
    :list_box{key=”item”;width=40;height=16;alignment=top;fixed_width=true;fixed_height=true;}}
    :spacer{width=1;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Preview”;}
    :image_button{key=”img”;width=30;aspect_ratio=1.02;color=0;alignment=top;fixed_width=true;fixed_height=true;}}
    :spacer{width=1;}}
    :spacer{height=1;}
    :row{alignment=centered;fixed_width=true;
    :button{label=”Como usar”;key=”help”;width=15;fixed_width=true;}
    :button{label=”Cancelar”;key=”cancel”;is_cancel=true;width=15;fixed_width=true;}
    :button{label=”Inserir”;key=”accept”;width=15;fixed_width=true;}}}

    Salvar como *.lsp:

    ;; Rotina escrita por Eduardo Fernal, https://www.gr-acad.com.br, para Cadklein
    ;; 26/09/2018
    ;|
    /* abaixo o texto do arquivo dcl utilizado por esta rotina */
    efernal:dialog{label=”Curso E.Fernal de AutoLISP”;initial_focus=”msg”;
    :spacer{height=1;}
    :text{label=”Selecione o tópico e depois o item”;key=”msg”;alignment=centered;height=2;}
    :row{alignment=centered;fixed_width=true;
    :spacer{width=1;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Selecione tópico”;}
    :radio_column{alignment=top;fixed_height=true;
    :radio_button{label=”Lonaria”;key=”rb1″;}
    :radio_button{label=”Climatização”;key=”rb2″;}
    :radio_button{label=”Vestiário”;key=”rb3″;}
    :radio_button{label=”Refeitório”;key=”rb4″;}
    :radio_button{label=”Móveis Gerais”;key=”rb5″;}
    :radio_button{label=”Textos”;key=”rb6″;}
    :radio_button{label=”Símbolos”;key=”rb7″;}}}
    :spacer{width=2;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Selecione o item”;}
    :list_box{key=”item”;width=40;height=16;alignment=top;fixed_width=true;fixed_height=true;}}
    :spacer{width=1;}
    :column{alignment=top;fixed_width=true;fixed_height=true;
    :text{label=”Preview”;}
    :image_button{key=”img”;width=30;aspect_ratio=1.02;color=0;alignment=top;fixed_width=true;fixed_height=true;}}
    :spacer{width=1;}}
    :spacer{height=1;}
    :row{alignment=centered;fixed_width=true;
    :button{label=”Como usar”;key=”help”;width=15;fixed_width=true;}
    :button{label=”Cancelar”;key=”cancel”;is_cancel=true;width=15;fixed_width=true;}
    :button{label=”Inserir”;key=”accept”;width=15;fixed_width=true;}}}
    |;
    (DEFUN c:efernal (/ dcl_id dx dy erro f_imagem f_rbs hlp item lista0 lista1 lista2
    lista3 lista4 lista5 lista6 lista7 reason topico)
    (SETVAR “CMDECHO” 0)
    (SETQ dcl_id (LOAD_DIALOG “F:\\Clientes\\Luciana\\C_Efernal.dcl”))
    (IF (> dcl_id 0)
    (IF (NEW_DIALOG “efernal” dcl_id)
    (PROGN (SETQ erro “Atenção:\n\nVocê não selecionou um item na lista…”
    hlp “Como usar:\n\nPrograme como usar seu help neste evento…”
    lista1 ‘(“Lona 1” “Lona 2” “Lona 3” “Lona 4” “Lona 5”)
    lista2 ‘(“Ar condicianado 1” “Ar condicianado 2” “Ar condicianado 3”
    “Ar condicianado 4” “Ar condicianado 5”
    “Ar condicianado 6”)
    lista3 ‘(“Vestiário 1” “Vestiário 2” “Vestiário 3” “Vestiário 4”
    “Vestiário 5”)
    lista4 ‘(“Ref. 1” “Ref. 2” “Ref. 3” “Ref. 4” “Ref. 5”)
    lista5 ‘(“Móvel 1” “Móvel 2” “Móvel 3” “Móvel 4” “Móvel 5”)
    lista6 ‘(“Aprenda a programar em AutoLISP”
    “com o Curso E.Fernal de AutoLISP”
    “À venda no site da Luciana ou”
    “no do autor, que é”
    https://www.gr-acad.com.br”
    “Faça uma visita e conheça”
    “alguns aplicativos úteis para”
    “a sua disciplina.”
    “Ou contrate alguma rotina personalizada,”
    “pelo email efernal@gmail.com ou ainda”
    “através da Luciana…”
    )
    lista7 ‘(“Símbolo 01” “Símbolo 02” “Símbolo 03” “Símbolo 04”
    “Símbolo 05” “Símbolo 06” “Símbolo 07” “Símbolo 08”
    “Símbolo 09” “Símbolo 10”)
    dx (DIMX_TILE “img”)
    dy (DIMY_TILE “img”)
    )
    (DEFUN f_rbs (k)
    (COND ((= k “rb1”)
    (SETQ lista0 lista1
    topico “LONARIA”
    )
    )
    ((= k “rb2”)
    (SETQ lista0 lista2
    topico “CLIMATIZAÇÃO”
    )
    )
    ((= k “rb3”)
    (SETQ lista0 lista3
    topico “VESTIÁRIO”
    )
    )
    ((= k “rb4”)
    (SETQ lista0 lista4
    topico “REFEITÓRIO”
    )
    )
    ((= k “rb5”)
    (SETQ lista0 lista5
    topico “MÓVEIS”
    )
    )
    ((= k “rb6”)
    (SETQ lista0 lista6
    topico “TEXTOS”
    )
    )
    ((= k “rb7”)
    (SETQ lista0 lista7
    topico “SÍMBOLOS”
    )
    )
    )
    (START_LIST “item” 3)
    (MAPCAR ‘ADD_LIST lista0)
    (END_LIST)
    (START_IMAGE “img”)
    (FILL_IMAGE 0 0 dx dy 0)
    (END_IMAGE)
    (SET_TILE “msg” “Selecione um item na lista, por favor…”)
    )
    (DEFUN f_imagem (/ slide)
    (IF (SETQ slide
    (FINDFILE
    (STRCAT “F:\\Clientes\\Luciana\\Sld\\” item “.sld”)))
    (PROGN
    (START_IMAGE “img”) (FILL_IMAGE 0 0 dx dy 0)
    (SLIDE_IMAGE 0 0 dx dy slide) (END_IMAGE)
    )
    (ALERT
    (STRCAT “Atenção:\n\nF:\\Clientes\\Luciana\\Sld\\”
    item
    “.sld\n” “não foi encontrado…”))
    )
    )
    (FOREACH x ‘(“rb1” “rb2” “rb3” “rb4” “rb5” “rb6” “rb7”)
    (ACTION_TILE x “(F_Rbs $key)”))
    (ACTION_TILE “item” “(SETQ item (NTH (ATOI $value) lista0))(f_imagem)”)
    (ACTION_TILE “help” “(ALERT hlp)”)
    (ACTION_TILE “cancel” “(DONE_DIALOG 0)”)
    (ACTION_TILE “accept” “(IF item (DONE_DIALOG 1)(ALERT erro))”)
    (SETQ reason (START_DIALOG))
    (UNLOAD_DIALOG dcl_id)
    (COND ((= reason 0) (PRINC “\n-> Cancelado…”))
    ((= reason 1)
    (ALERT
    (STRCAT “Executar o desejado aqui, com ” topico ” e ” item)))
    )
    )
    )
    (ALERT “Atenção:\n\nNão foi possível carregar o arquivo dcl.”)
    )
    (PRINC)
    )

    ;; fim deste arquivo

     

    Gif animado da rotina:

    EFernal-GIF (download do gif acima)

    []s

    Luciana Klein/Eduardo Fernal

    #2786
    Anônimo
    Inativo

    Muito obrigado Luciana e Eduardo pela atenção!
    Vocês realmente me ajudaram bastante, inclusive quero mais informações sobre o curso poderiam enviar por email?
    Tenho interesse em me aprofundar mais no conhecimento.


    *Obs: Obrigado também pela atenção Junior Nogueira! Caso tenha uma opinião diferente de como fazer essa operação compartilha também com a gente 😉

    • Esta resposta foi modificada 5 anos, 7 meses atrás por .
    #2789
    cadklein
    Mestre

    Oi Hugo!

    Nós que agradecemos e ficamos felizes em ajudar!
    Muito obrigada!!

    Enviei o email pra você.
    🙂

    Grande abraço,

    Luciana Klein

    • Esta resposta foi modificada 5 anos, 7 meses atrás por cadklein.
    #2988
    Anônimo
    Inativo

    Olá a todos, é muito bom termos esse espaço para tirar dúvidas, parabéms a todos os envolvidos!

    Gostaria de uma ajuda com uma demanda, não entendo de rotinas, na verdade nem sei como iniciar (rs) mas devido ao uso repetitivo no dia a dia, andei pesquisando e cheguei até aqui.

    Estou trabalhando desenhando linhas de tubulações em planos isométricos, e na maioria dessas linhas temos as soldas das tubulações, logo sempre preciso copiar uma solda e colar no local que quero, ex.: nas interseções (curvas ou joelhos) crio um circulo com 3mm e colo a solda (circulo com aprox. 0,2mm) onde o circulo cruza com as linhas.

    Pensei em algo como: a rotina pede para eu selecionar a linha (no caso layer tubulação), e ela insere as “2 soldas” ou 3 em casos de Têes, sempre obedecendo o limite de 3mm, mas seguindo o caminho que a linha esta fazendo.

Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Você deve fazer login para responder a este tópico.