Capturar pontos

Dicas sobre ObjectDCL...

Moderador: Moderadores

Avatar do usuário
luizf
Bronze 2/3
Bronze 2/3
Mensagens: 294
Registrado em: Dom 01 Mai 2005 12:00:00 am
Localização: Itapetininga-SP

Capturar pontos

Mensagem por luizf » Sáb 01 Jul 2006 10:59:32 pm

Alguem pode me ajudar, ... de novo.

Estou precisando saber como faço para caputurar pontos usando uma rotina de AL.

Por exemplo, preciso fazer uma rotina para um finalidade qualquer e no decorrer dessa rotina preciso fazer uma linha, ou um circulo, ou um arco, ou ... (para usar como referencia), e preciso dividir em, por exemplo, 10 partes iguais.

Preciso pegar o quinto ponto para poder fazer uma outra linha, ou ... E dar sequencia da rotina.

Alguem pode me ajudar e pegar esse/s ponto/s.

Fico grato.


T+++



.

Avatar do usuário
marcos
Administrador
Administrador
Mensagens: 610
Registrado em: Sex 28 Nov 2003 11:00:00 pm
Localização: Itu / SP
Contato:

Mensagem por marcos » Dom 02 Jul 2006 1:36:38 pm

aqui neste tópico tem algo que pode lhe ajudar

http://www.autolisp.com.br/autolisp/mod ... =9121#9121
Marcos Mendes de Almeida
[email protected]

Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio » Dom 02 Jul 2006 2:09:39 pm

;|

Caramba. Vão me criticar pelo command, mas vc pode usar o "command" Divide.

Isso é o q me incomoda algumas vezes: se existe já pronto, pra que fazer de novo?

Na caso, vc poderia fazer uma rotina pra calcular os pontos de divisão da linha, mas o divide faz isso já.

Então faça assim (já adianto que é um modo primitivo, mas é um modo que o autocad possibilita)


|;

(defun c:teste ()
(command "line" pause pause "")
(setq ss (entlast))
(command "divide" ss "10")
(setq points (ssget "p"))
(setq qtde (sslength points) num 0)
(setq ptlist nil)
(repeat qtde
(setq edata (ssname points num))
(setq coord (cdr (assoc 10 (entget edata))))
(setq ptlist (append (list coord) ptlist))
(setq num (1+ num))
)
(setq meuponto (nth 4 ptlist))
(princ))

(defun c:teste1 ()
(command "line" pause pause "")
(setq ss (entlast))
(command "divide" ss "10")
(setq points (ssget "p"))
(setq qtde (sslength points) num 0)
(setq ptlist nil)
(repeat qtde
(setq edata (ssname points num))
(setq coord (cdr (assoc 10 (entget edata))))
(setq ptlist (append (list coord) ptlist))
(setq num (1+ num))
)
(setq ini (nth 0 ptlist))
(setq end (nth (- qtde 1) ptlist))
(setq meuponto (mapcar '/ (mapcar '+ ini end) '(2.0 2.0 2.0)))
(princ))

Existem soluções sem usar command.


:)

Rogério

Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio » Dom 02 Jul 2006 2:12:12 pm

Marcos, postei sem ver sua postagem.

Meus comentários sobre command são genéricos, não dizem respeito a você.


É mais um meio.

[],

Rogério

Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo » Dom 02 Jul 2006 2:51:45 pm

Rogério

Porquê esse "entrave" de vcs (incluindo o Neyton) quanto ao COMMAND ?

Façam uma teoria, demonstrem, provem e apresentem à Autodesk. De repente, vá lá que vcs consigam melhorar o AutoCAD e o AutoLISP ???

Todos n´s vamos ganhar, correto ?

Um abraço.
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem

Avatar do usuário
luizf
Bronze 2/3
Bronze 2/3
Mensagens: 294
Registrado em: Dom 01 Mai 2005 12:00:00 am
Localização: Itapetininga-SP

Mensagem por luizf » Dom 02 Jul 2006 3:17:25 pm

Rogerio, o que eu quero naum eh dividir, pois ja divido.

O que quero eh pegar um determinado ponto, ou pontos, dessa divisão.

OK.


T+++

.

Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio » Dom 02 Jul 2006 4:44:07 pm

Hugo, vc entendeu mal.

Só disse que eu uso os comandos do autocad nas minhas rotinas, e que alguns evitam

usar, e até criticam quem usa.

Nenhum comentário pessoal contra ninguém.

Só isso.

Luiz,

Te dei um meio.

Se vc divide e não consegue obter o ponto, ou pontos, não adianta dividir, certo?

Vc pode usar a função polar, pegando o comprimento da linha, o ângulo, a distância que vc obtém dividindo esse comprimento pelo número de pontos, a assim por diante.

Mas pra que fazer tudo isso, se o divide já faz sozinho?

Ah, esquecei de apagar os pontos na rotina anterior.

[],

Rogério

Avatar do usuário
neyton
Master
Master
Mensagens: 1668
Registrado em: Qui 25 Dez 2003 11:00:00 pm
Contato:

Mensagem por neyton » Dom 02 Jul 2006 10:49:30 pm

nao me lembro de criticar ninguem por usar o command, apenas sugeri (e dei varios motivos do porquê de pensar assim) evitar o uso... quer usar, use, nao tenho nada com isso

mas considere o fato de vc se preocupar com o osnap as vezes... e q isso poderia ser dispensado

é minha opiniao pessoal, ninguem tem q seguir ela se não quizer
------------------------------------------------------------------------------------------------------
hugo:
e q eu me lembre, somente eu levantei a lebre desfavoravel ao command
------------------------------------------------------------------------------------------------------
rogerio:
so posso dizer uma coisa com respeito a lisp q vc escreveu:
não esqueça que derrepente eu posso usar um UCS diferente do WCS, então se vc vai usar ( cdr (assoc 10... não esqueça q obterá um ponto em WCS e se vc usar este mesmo ponto no UCS ele irá parar em outro lugar.... será entao conveniente usar o TRANS para converter o ponto em WCS para o sistema de coordenadas UCS para dai sim usar o command

permita mais uma colocação:
se vc vai dividir a linha em 10 partes e pegar a coordenada do enesimo ponto, usa o POLAR
vc tem a linha, então tem as coordenadas de inicio e fim, com eles consegue o angulo formado pelos pontos e a distancia.. uma proporção e vc terá o ponto q vc quer

a nao ser claro que vc precise dos pontos desenhados... ai é outra historia

Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio » Seg 03 Jul 2006 8:45:21 am

Ok.
Ok. Só esclarecendo. Não foi por causa de ninguém deste site q eu

falei sobre o command. Foi por causa de outro forum.

Aliás, não deveria ter falado.

[],

Rogério

Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio » Seg 03 Jul 2006 9:09:35 am

Neyton, aceito de bom grado todas as dicas.

:)


Luiz, conseguiu resolver o problema?

[],

Rogério

Responder