Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: Verificar dimenssões de uma polyline fechada

  1. #1
    Active Member
    Join Date
    2009-04
    Location
    São Paulo - Brazil
    Posts
    63
    Login to Give a bone
    0

    Exclamation Verificar dimenssões de uma polyline fechada

    Bom dia pessoal, quanto tempo

    Gostaria muito da ajuda de vc's.

    Tendo eu um poligono irregular "fechado", é possível extrair as informações altura e largura máxima?
    é possível into por algum comando lisp?

    ex: tendo eu uma estrela de 5 ponta, é possível achar a altura dela.


    Obrigado pessoal!


    Tentarei ser mais participativo

  2. #2
    Active Member
    Join Date
    2007-01
    Location
    Ermesinde - Portugal
    Posts
    59
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Olá

    se fôr em .NET pode usar:

    acPoly As Polyline=New Polyline()

    Dim PointMax As Point3d = acPoly.GeometricExtents.MaxPoint

    Dim PointMin As Point3d = acPoly.GeometricExtents.MinPoint

    Dim Altura As Double=PointMax.DistanceTo(PointMin)

  3. #3
    Active Member
    Join Date
    2009-04
    Location
    São Paulo - Brazil
    Posts
    63
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Rui, muito obrigado!
    será que a algum comando em lisp ou visual lisp tmb???

    valeu mesmo...

  4. #4
    Active Member
    Join Date
    2009-04
    Location
    São Paulo - Brazil
    Posts
    63
    Login to Give a bone
    0

    Question Re: Verificar dimenssões de uma polyline fechada

    O problema é que eu ja fiz tota programação em vlisp, só me falta este ponto,
    por isto que eu gostaria de saber como isto pode ser feito, em Vlisp ou lisp.


    Valeu!

  5. #5
    Member
    Join Date
    2010-02
    Posts
    32
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Vou te dar uma solução,

    Pela entidade da polyline você pode pegar a lista de pontos que são os eixos.
    Analizando cada coordenada X e Y ex:

    (setq H (- (max (car pt1) (car pt2)) (min (car pt1) (car pt2)))

    Isso foi só uma ideia, vc pode fazer uma lista de pontos e verificar a maior coordenada em uma estrutura de repetição.

    Espero ter ajudado, se não consiguir avisa que deselvovo para você.

    Abraços.

  6. #6
    Active Member
    Join Date
    2009-04
    Location
    São Paulo - Brazil
    Posts
    63
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Alan,

    Primeiro de tudo, muito obrigado pela atenção.

    Entendi sua explicação "até acreditava que o caminho seria este mesmo", só que escontrei um problema.... se você puder me ajudar.....

    Peguei como exemplo, uma polyline de 5 pontos e desenvolvi a seguinte programação:

    (setq ent (entsel "\Selecione o objeto:"))
    (setq ent_nome (car ent))
    (setq ent_lista (entget ent_nome))

    quando chegou neste ponto, me retorna a seguinte informação.

    ((-1 . <Entity name: 7dc22628>) (0 . "LWPOLYLINE") (330 . <Entity name:
    7e698cf8>) (5 . "D6BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
    (370 . 0) (100 . "AcDbPolyline") (90 . 5) (70 . 1) (43 . 0.0) (38 . 0.0) (39 .
    0.0) (10 104.626 348.623) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 148.14 423.991)
    (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 190.663 350.34) (40 . 0.0) (41 . 0.0) (42
    . 0.0) (10 142.92 267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 33.3351
    267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))


    problema.....

    como faço para acessar as informações de cada ponto???
    só estou conceguindo acessar as informações do primeiro....

    seria este o caminho certo para a solução deste problema????

    Mais uma vez... Obrigado Alan....

  7. #7
    Member
    Join Date
    2010-02
    Posts
    32
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Isso mesmo,
    Se você perceber na lista todos os iniciados por 10 é um ponto de sua polyline..
    usando o "assoc" vc só ia pegar o primeiro ponto..

    Mais faz assim

    (setq ent (entsel "\Selecione o objeto:"))
    (setq ent_nome (car ent))
    (setq ent_lista (entget ent_nome))

    (setq lista_pontos (list))
    (foreach temp ent_lista (progn (if (= (car temp) 10)(setq lista_pontos (cons (cdr temp) lista_pontos)))))

    a variavel lista_pontos é uma lista com os eixos da polyline.

    Espero que resolva!

    Abraços


    Quote Originally Posted by ed_cristian.dwg View Post
    Alan,

    Primeiro de tudo, muito obrigado pela atenção.

    Entendi sua explicação "até acreditava que o caminho seria este mesmo", só que escontrei um problema.... se você puder me ajudar.....

    Peguei como exemplo, uma polyline de 5 pontos e desenvolvi a seguinte programação:

    (setq ent (entsel "\Selecione o objeto:"))
    (setq ent_nome (car ent))
    (setq ent_lista (entget ent_nome))

    quando chegou neste ponto, me retorna a seguinte informação.

    ((-1 . <Entity name: 7dc22628>) (0 . "LWPOLYLINE") (330 . <Entity name:
    7e698cf8>) (5 . "D6BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
    (370 . 0) (100 . "AcDbPolyline") (90 . 5) (70 . 1) (43 . 0.0) (38 . 0.0) (39 .
    0.0) (10 104.626 348.623) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 148.14 423.991)
    (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 190.663 350.34) (40 . 0.0) (41 . 0.0) (42
    . 0.0) (10 142.92 267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 33.3351
    267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))


    problema.....

    como faço para acessar as informações de cada ponto???
    só estou conceguindo acessar as informações do primeiro....

    seria este o caminho certo para a solução deste problema????

    Mais uma vez... Obrigado Alan....

  8. #8
    100 Club
    Join Date
    2007-05
    Location
    São Paulo - SP - Brazil
    Posts
    181
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    esperimente usar o ENTNEXT e procura os VERTEX da LWPOLYLINE
    com um array voce consegue pegar todos

    para voce ver como
    segue ym trecho de uma rotina minha que trabalha com poligonos

    (setq el1 (ssname e1 (setq n1 (1- n1))))
    (if (or (equal "POLYLINE" (cdr (assoc 0 (entget el1))))
    (equal "LWPOLYLINE" (cdr (assoc 0 (entget el1))))
    )
    (progn
    (if (equal (cdr (assoc 38 (entget el1))) nil)
    (progn
    (setq el2 (entnext))
    (while (/= el2 nil)
    (if (equal "VERTEX" (cdr (assoc 0 (entget el2))))
    (progn
    (setq pt (cdr (assoc 10 (entget el2)))
    ptx (car pt)
    pty (cadr pt)
    p (list ptx pty h)
    )
    (entmod
    (subst (cons 10 p) (assoc 10 (entget el2)) (entget el2))
    )
    )
    )
    (setq el2 (entnext el2))
    )
    )
    (progn
    (entmod
    (subst (cons 38 h) (assoc 38 (entget el1)) (entget el1))
    )
    )
    )
    (entupd el1)
    )

    Quote Originally Posted by ed_cristian.dwg View Post
    Alan,

    Primeiro de tudo, muito obrigado pela atenção.

    Entendi sua explicação "até acreditava que o caminho seria este mesmo", só que escontrei um problema.... se você puder me ajudar.....

    Peguei como exemplo, uma polyline de 5 pontos e desenvolvi a seguinte programação:

    (setq ent (entsel "\Selecione o objeto:"))
    (setq ent_nome (car ent))
    (setq ent_lista (entget ent_nome))

    quando chegou neste ponto, me retorna a seguinte informação.

    ((-1 . <Entity name: 7dc22628>) (0 . "LWPOLYLINE") (330 . <Entity name:
    7e698cf8>) (5 . "D6BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
    (370 . 0) (100 . "AcDbPolyline") (90 . 5) (70 . 1) (43 . 0.0) (38 . 0.0) (39 .
    0.0) (10 104.626 348.623) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 148.14 423.991)
    (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 190.663 350.34) (40 . 0.0) (41 . 0.0) (42
    . 0.0) (10 142.92 267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 33.3351
    267.647) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))


    problema.....

    como faço para acessar as informações de cada ponto???
    só estou conceguindo acessar as informações do primeiro....

    seria este o caminho certo para a solução deste problema????

    Mais uma vez... Obrigado Alan....

  9. #9
    Active Member
    Join Date
    2009-04
    Location
    São Paulo - Brazil
    Posts
    63
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    nossa, te devo uma... uma não.... 50
    valeu!

  10. #10
    Active Member
    Join Date
    2007-01
    Location
    Ermesinde - Portugal
    Posts
    59
    Login to Give a bone
    0

    Default Re: Verificar dimenssões de uma polyline fechada

    Olá Cristiano,

    tome em atenção que se a polilinha contiver arcos os extremos podem não estar nos vértices da polilinha mas sim, algures nesses arcos.

Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 8
    Last Post: 2009-11-11, 07:21 PM
  2. Replies: 14
    Last Post: 2007-09-10, 05:01 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •