See the top rated post in this thread. Click here

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

Thread: Dúvida sobre AutoCAD.NET e C#

  1. #1
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Dúvida sobre AutoCAD.NET e C#

    Olá a todos, gostava de saber qual será a melhor forma de fazer um "sort" a uma colecção de pontos 2d pela propriedade x ou y. Estou a usar um objecto do tipo Point2dCollection para guardar os Point2d e estes estão desorganizados nesta coleção pois foram recolhidos de forma aleatória do desenho.Já pensei em passá-los para um objecto do tipo sortedList mas eu não posso ter duas "Keys" iguais (o que neste caso seria a propriedade x dum ponto).

    Cumprimentos

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

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Olá Pedro,

    só para esclarecer melhor a tua dúvida, queres ordenar uma colecção de pontos 2D pela coordenada X apenas ou queres escolher a ordenação por X ou por Y ou por ambas?

    Rui Pestana

  3. #3
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Quote Originally Posted by Rui Pestana
    Olá Pedro,

    só para esclarecer melhor a tua dúvida, queres ordenar uma colecção de pontos 2D pela coordenada X apenas ou queres escolher a ordenação por X ou por Y ou por ambas?

    Rui Pestana
    Olá, no caso a que me refiro pode ser apenas pela coordenada x por esta corresponder a uma distância que vai servir para poder construir um perfil longitudinal, em vlisp é fácil, basta usar uma função do género aplicada a uma lista de coordenadas para ordenar por x :
    (setq lista-coordenadas-ordenadas (vl-sort lista-coordenadas (function (lambda (e1 e2) (< (car e1) (car e2)))))) se fosse por y mudava de car para cadr e para z caddr.
    Mas em c# se eu passar a minha lista para uma sortedList e se tiver 2 pontos com a mesma coordenada em x apesar de y ser diferente é lançada uma excepção pois não posso passr doi valores iguais para a key (key . value), não sei se os arrayList são aquilo que devo usar?

    Cumprimentos

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

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Olá de novo.

    Apesar de ainda não programar na API .Net do AutoCAD estive a pesquisar como poderia resolver o seu caso de um modo genérico em .NET e em VB (não sei programar em C#).

    Andei a pesquisar e cheguei a uma solução que é criar os nossos próprios métodos de comparação entre pontos com coordenadas X,Y e Z.

    'Comecei por criar um estrutura de nome Ponto para guardar os valores das coordenadas:

    Public Structure Ponto
    Public X As Double
    Public Y As Double
    Public Z As Double
    End Structure

    'criei um lista genérica para guardar todos os pontos:

    Dim Coords As New System.Collections.Generic.List(Of Ponto)

    ' de seguida criei 3 funções para comparar coordenadas X, Y e Z:

    Public Function ComparePointsByX(ByVal P1 As Ponto, ByVal P2 As Ponto) As Integer
    Return P1.X.CompareTo(P2.X)
    End Function

    Public Function ComparePointsByY(ByVal P1 As Ponto, ByVal P2 As Ponto) As Integer
    Return P1.Y.CompareTo(P2.Y)
    End Function

    Public Function ComparePointsByZ(ByVal P1 As Ponto, ByVal P2 As Ponto) As Integer
    Return P1.Z.CompareTo(P2.Z)
    End Function

    ' depois, criei uma sub para preencher os pontos, a lista dos pontos, ordenar por X, Y e Z e comparar resultados

    Private Sub Main()
    Dim P1 As New Ponto
    P1.X = 0
    P1.Y = 0
    P1.Z = 0
    Coords.Add(P1)
    Dim P2 As New Ponto
    P2.X = 2
    P2.Y = -2
    P2.Z = 3
    Coords.Add(P2)
    Dim P3 As New Ponto
    P3.X = -1
    P3.Y = 10
    P3.Z = -1
    Coords.Add(P3)
    Debug.Print("Valores originais")
    For i As Integer = 0 To 2
    Debug.Print(Coords.Item(i).X & vbTab & Coords.Item(i).Y & vbTab & Coords.Item(i).Z)
    Next i
    Debug.Print("Valores Com ordenação por X")
    Coords.Sort(AddressOf ComparePointsByX)
    For i As Integer = 0 To 2
    Debug.Print(Coords.Item(i).X & vbTab & Coords.Item(i).Y & vbTab & Coords.Item(i).Z)
    Next i
    Debug.Print("Valores Com ordenação por Y")
    Coords.Sort(AddressOf ComparePointsByY)
    For i As Integer = 0 To 2
    Debug.Print(Coords.Item(i).X & vbTab & Coords.Item(i).Y & vbTab & Coords.Item(i).Z)
    Next i
    Debug.Print("Valores Com ordenação por Z")
    Coords.Sort(AddressOf ComparePointsByZ)
    For i As Integer = 0 To 2
    Debug.Print(Coords.Item(i).X & vbTab & Coords.Item(i).Y & vbTab & Coords.Item(i).Z)
    Next i
    End Sub


    Para este caso utilizei o exemplo do MSDN que encontrei ao pesquisar "List.Sort Method (Generic Comparison)".

    Como não sei ainda muito de .NET não te sei explicar com clareza este exemplo, mas, funciona.

    Rui Pestana

  5. #5
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Obrigado Rui vou experimentar, eu depois dou um Feedbak sobre a tua solução!
    Mais uma vez obrigado!

    Cumprimentos

  6. #6
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Olá Rui!
    A solução que me indicou é mais ou menos aquilio que eu fiz!
    Obrigado pela ajuda

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

    Default Re: Dúvida sobre AutoCAD.NET e C#

    De nada,

    já agora envio-lhe uns labs sobre o AutoCAD .Net em C# que descobri no grupo de discussão sobre o assunto.

    Link do grupo: http://discussion.autodesk.com/adskc...pa?forumID=152

    Um abraço,
    Attached Files Attached Files

  8. #8
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Quote Originally Posted by Rui Pestana
    De nada,

    já agora envio-lhe uns labs sobre o AutoCAD .Net em C# que descobri no grupo de discussão sobre o assunto.

    Link do grupo: http://discussion.autodesk.com/adskc...pa?forumID=152

    Um abraço,
    Olá Rui, por acaso já conheço esses labs.
    Já agora envio os mais actualizados e com exemplos em C# E VB.NET.
    De qualquer forma Obrigado.
    Attached Files Attached Files

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

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Obrigado pela documentação actualizada.

    Tens algum documento com o Object Model do AutoCAD.NET?

    Obrigado

  10. #10
    Active Member pferreira's Avatar
    Join Date
    2006-06
    Location
    Lisbon, Portugal
    Posts
    88
    Login to Give a bone
    0

    Default Re: Dúvida sobre AutoCAD.NET e C#

    Quote Originally Posted by Rui Pestana
    Obrigado pela documentação actualizada.

    Tens algum documento com o Object Model do AutoCAD.NET?

    Obrigado
    Olá Rui,
    Existe aqui nesta página http://images.autodesk.com/adsk/file...ed_classes.dwf.

    Cumprimentos

Page 1 of 2 12 LastLast

Similar Threads

  1. 2013: Dúvida sobre coordenadas relativas
    By marcusfillipess683806 in forum AutoCAD General
    Replies: 1
    Last Post: 2012-12-06, 07:47 PM
  2. Duvida sobre UCS em 2D
    By darwin_lorente in forum AutoCAD General
    Replies: 0
    Last Post: 2011-06-16, 02:48 PM
  3. Dúvida sobre VBA e Lisp
    By leo_munters in forum AutoLISP
    Replies: 11
    Last Post: 2008-06-26, 03:12 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
  •