Programs that draw it for you!






24 November 2017

Welcome, Visitor

Powered By

lusovps.com
Visitor Access





Capturar angulo de uma linha desenhada ou de dois pontos informados


luislhss

Boa tarde para todos,

Estou fazendo uma lisp para inserir um texto acima de uma linha criada, onde esse texto vai acompanhar o angulo que foi desenhado a linha, porém não sei como capturar a informação do ângulo.

usei (ENTGET (CAR(ENTSEL))) para verificar a lista de itens de uma linha, qual o resultado é:

((-1 . <Entity name: 7ee14fb8>) (0 . "LINE") (330 . <Entity
name: 7ef86cf8>) (5 . "BDBB7") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8
. "0") (62 . 9) (100 . "AcDbLine") (10 -1129.12 -2259.68 0.0) (11 -1127.01
-2259.68 0.0) (210 0.0 0.0 1.0))

Não existe a informação do ângulo para que eu possa capturar, sei que os itens equivatentes a 10 e 11 equivalem aos pontos de cordenadas da linha.

Alguem poderia me dar uma força?

Agradeço!

luislhss

Tava fazendo uns testes, veja algumas observações

quando faço cada rotina separa funcionam

desenha: a linha em dois pontos:

(DEFUN C:tubo20 (/ ponto1 ponto2 )
(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
(setq ponto2 (getpoint "\n>segundo ponto<\n"))
(command "_line" ponto1 ponto2 " ")


vai desenhar o texto no angulo de dois pontos:

(DEFUN C:tubo20 (/ ponto1 ponto2 )
(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
(setq ponto2 (getpoint "\n>segundo ponto<\n"))
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".5" ponto2 "Ø20mm"))

porém quando junto as duas funções fica dando erro, ao que parece o comando da linha não finaliza para poder aciona a outra função:

(DEFUN C:tubo20 (/ ponto1 ponto2 )
(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
(setq ponto2 (getpoint "\n>segundo ponto<\n"))
(command "_line" ponto1 ponto2 " ")
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".5" ponto2 "Ø20mm"))

Se alguem souber qual o erro agradeço!

luislhss

Conseguir resolver essa parte, ficou assim:

; Diâmetro de Ø20mm
(DEFUN C:tu20 (/ ponto1 ponto2 )
(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
(setq ponto2 (getpoint "\n>segundo ponto<\n"))
(command "_line" ponto1 ponto2 "")
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".15" ponto2 "Ø20mm")
)


agora só me deparo com os seguintes problemas,

Quando pede pra inserir a linha o texto "primeiro ponto" e "segundo ponto" ficam que meio subtendido, e quando a linha é traçada não visualizo a mesma pra caso eu ative o orto ou queira ver a direção que está indo.

Outro problema é o fato é o de não poder ir continuando a traçar a linha repetindo a inserção do texto sempre tendo que clicar em dois pontos para inserção da linha e texto

Mas vou estudando aqui, pra inicio acho que ta saindo legal.

Se alguem puder mandar dicas agradeço!

luislhss

Fiz novas alterações, dessa vez inserindo o joelho:

; nova revisão
(DEFUN C:tubo (/ ponto1 ponto2 )

;CRIANDO LINHA DO TUBO
(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
(setq ponto2 (getpoint "\n>segundo ponto<\n"))
(command "_line" ponto1 ponto2 "")

;CRIANDO JOELHO
(setvar "cmdecho" 0)
(setq old-osmode (getvar "osmode"));;;;memoriza o osnap atual
(setvar "osmode" 0);;;;;aqui vc desabilita o osnap


;CRIAR A PRIMEIRA LINHA EM RELAÇÃO AO PONTO 1
(command "_ucs" "e" "last")
(command "_line" "from" "0,0" "@0,.075" "@0,-.15" "")
(command "_move" "last" "" "0,0" ".15,0" "")
(command "_ucs" "" "")

;CRIAR A SEGUNDA LINHA EM RELAÇÃO AO PONTO 2
(command "_copy" "last" "" ponto1 ponto2 "")
(command "_ucs" "e" "last")
(command "_move" "last" "" "0,0" "0,-.30" "")
(command "_ucs" "" "")



;CRIANDO TEXTO DO TUBO
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".15" ponto2 "Ø20mm")

(setvar "osmode" old-osmode);;;;retorna o osnap atual
(setvar "cmdecho" 1)
(princ)


)

luislhss

Bom dia,

Uma coisa que tô quebrando a cabeça é fazer com que quando clicar nos pontos para o desenho da linha que corresponde ao tubo é fazer com que a inserção dessa linha seja igual a do autocad, onde posso visualizar pra onde minha linha vá antes de clicar no segundo ponto e já inserindo a linha ponto a ponto.

creio que precise de algum loop onde quando clique no segundo ponto esse se torne logo após o primeiro ponto para que dessa forma seja inserido as entidades (bitola do tubo e joelho) entre o ponto1 e ponto2.

Se alguem puder dar uma dica como fazer isso agradeço, no mais continuarei pesquisando.

luislhss

Boa noite,

O Fábio no grupo lisp-livre do yahoo grupos me mostrou como conseguir traçar a linha virtual, a lisp alterada ficou dessa forma:

; Revisão 4 de junho de 2012
(DEFUN C:tubo (/ ponto1 ponto2 )

CRIANDO LINHA DO TUBO
[color=red];|Essas linhas saem:
;(setq ponto1 (getpoint "\n>Primeiro ponto<\n"))
;(setq ponto2 (getpoint "\n>segundo ponto<\n"))|;[/color]

; Substituídas por estas linhas de código:
(setq ponto1 (getpoint "\n\tPrimeiro ponto ou ENTER para sair: "))
(setq ponto2 (getpoint ponto1 "\n\tProximo ponto ou ENTER para sair: "))
(command "_line" ponto1 ponto2 "")

;CRIANDO JOELHO
(setvar "cmdecho" 0)
(setq old-osmode (getvar "osmode"));;;;memoriza o osnap atual
(setvar "osmode" 0);;;;;aqui vc desabilita o osnap


;CRIAR A PRIMEIRA LINHA EM RELAÇÃO AO PONTO 1
(command "_ucs" "e" "last")
(command "_line" "from" "0,0" "@0,.075" "@0,-.15" "")
(command "_move" "last" "" "0,0" ".15,0" "")
(command "_ucs" "" "")

;CRIAR A SEGUNDA LINHA EM RELAÇÃO AO PONTO 2
(command "_copy" "last" "" ponto1 ponto2 "")
(command "_ucs" "e" "last")
(command "_move" "last" "" "0,0" "0,-.30" "")
(command "_ucs" "" "")



;CRIANDO TEXTO DO TUBO
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".15" ponto2 "Ø20mm")

(setvar "osmode" old-osmode);;;;retorna o osnap atual
(setvar "cmdecho" 1)
(princ)


)


;CRIANDO TEXTO DO TUBO
(Command "TEXT" "j" "bc" "m2p" ponto1 ponto2 ".15" ponto2 "Ø20mm")

(setvar "osmode" old-osmode);;;;retorna o osnap atual
(setvar "cmdecho" 1)
(princ)


)

Ainda vou incrementar para indicar para inserir várias bitolas e já fazer os tubos para águia fria, quente, filtrada, gás, etc, com suas respectivas bitolas.

Ainda pesquisando pra ver como continuar no comando, já que toda a lisp está baseada nos pontos 1 e 2 para criar o desenho, creio que deva fazer com que logo após da inserção do segundo ponto, deva fazer que ele passe a ser o primeiro para continuar realizando o comando até que queira cancelar.

... AutolisPro 2014



You must be registered to leave posts.


... AutolisPro is a project still under construction, we will try to implement as soon as possible all the missing features ! ...


At this starting fase, we are recruiting new programmers, if you are interested in investing in our project please contact us!


We want the site to be the most practical and functional. Your ideas and opinions are very important to us, please share them with us!


If you find any problem contact... webmaster Time to buil: 0 ... site online since October 2008... ... last update at 09/12/2014...