Results 1 to 4 of 4

Thread: Selecionar e Obter informações do objeto atraves do VBA

  1. #1
    Member
    Join Date
    2007-06
    Location
    Sumaré
    Posts
    36
    Login to Give a bone
    0

    Question Selecionar e Obter informações do objeto atraves do VBA

    Bom dia pessoal,

    preciso selecionar uma entidade qualquer "line, circle, arc, etc.." e obter as informações desta entidade do tipo x,y,z "cordenadas", e que tipo de objeto foi selecionado "linha, circulo, etc... resumindo preciso das informaçoes e caracteristicas deste objeto.

    sera que alguem ja fez algo parecido que possa me ajudar?

    obrigado.

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

    Default Re: Selecionar e Obter informações do objeto atraves do VBA

    Olá Mário,

    veja o código do ficheiro anexo como exemplo do que pretende fazer.

    Rui Pestana
    Attached Files Attached Files

  3. #3
    Member
    Join Date
    2007-06
    Location
    Sumaré
    Posts
    36
    Login to Give a bone
    0

    Red face Re: Selecionar e Obter informações do objeto atraves do VBA

    Olá Rui !

    primeiramente muito obrigado pela ajuda.

    Estou tendo uma dificuldade para localizar a propriedades responsavel em armazenar as coordenadas de contrução de uma dimension.

    1st extension defining point: X=0.00000000 Y=0.00000000 Z=0.00000000
    2nd extension defining point: X=82.00000000 Y=0.00000000 Z=0.00000000
    dimension line defining point: X=82.00000000 Y=-15.50000000 Z=0.00000000
    default text position: X=41.00000000 Y=-15.50000000 Z=0.00000000

    o que eu preciso é selecionar uma dimension e obter as propriedades de construção da mesma, para o restante das entidades line, spline, arc, circle... funcionou inclusive com sua ajuda. só pra dimension que ainda naum consegui... poderia me ajudar?

    os dados de contrução são:
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point1, point2, location, Angle)

    mais uma vez obrigado.

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

    Default Re: Selecionar e Obter informações do objeto atraves do VBA

    Olá.
    De facto não se consegue ir buscar os pontos das linhas de chamada de um dimRotated.
    Estive então à procura nos fóruns internacionais de VB para Autocad e descobri como se obter esses pontos para uma dimRotated.
    A ideia é procurar na colecção de blocos do desenho. Uma coisa que aprendi foi que as cotas, e provalvelmente outras entidades, ao serem adicionadas vão para a colecção de blocos.
    Posto isto o método usado é procurar os blocos cujo nome comece por "*D" (deve ser o prefixo do nome dos blocos das cotas de um desenho)
    Depois vai-se procurar nas entidades desse bloco a entidade Mtext (suponho que seja o texto das cotas)
    Como já temos o ponto "textposition" da cota que seleccionamos podemos saber se o bloco em causa é o da cota selecionada se o ponto de inserção do "Mtext" (lembre-se que o Mtext é uma entidade do bloco) for o mesmo. Para isso usa-se uma tolerância bastante pequena.
    Depois de encontrado o bloco da cota seleccionada é só ir a certos itens do bloco para se saber as entidades que precisamos da cota.

    Veja exemplo modificado do fórum original:
    'início de código
    Sub GetDimRProperties(oDimRotated)

    Dim oBlock As AcadBlock

    Dim oBlocks As AcadBlocks
    Set oBlocks = ThisDrawing.Blocks

    Dim textPosition As Variant
    textPosition = oDimRotated.textPosition

    Dim insertPoint As Variant
    Dim Ent As AcadEntity
    Dim i As Integer

    Dim Tol As Double
    Tol = 0.00000001



    For Each oBlock In oBlocks
    If Not Left(oBlock.Name, 2) = "*D" Then GoTo SkipBlock
    For Each Ent In oBlock
    If TypeOf Ent Is AcadMText Then
    ' Debug.Print textPosition(0)
    insertPoint = Ent.InsertionPoint
    For i = 0 To 2
    If Abs(insertPoint(i) - textPosition(i)) > Tol Then GoTo SkipBlock
    Next i
    '1º ponto da linha de extensão
    ThisDrawing.ModelSpace.AddPoint oBlock(7).Coordinates
    '2º ponto da linha de extensão
    ThisDrawing.ModelSpace.AddPoint oBlock(6).Coordinates
    'Ponto da dimLine
    ' ThisDrawing.ModelSpace.AddPoint oBlock(.Coordinates
    Exit Sub
    End If
    Next Ent
    SkipBlock:
    Next oBlock

    End Sub
    'fim de código

Similar Threads

  1. Reconher informações de um objeto.
    By ed_cristian.dwg in forum AutoLISP
    Replies: 10
    Last Post: 2010-03-15, 08:23 PM
  2. ayuda error al selecionar subassembly tool palettes
    By ociosidad in forum AutoCAD Civil 3D - General
    Replies: 1
    Last Post: 2009-06-08, 10:05 PM
  3. Selecionar e mover um bloco?
    By eugeniocunha in forum AutoLISP
    Replies: 4
    Last Post: 2009-05-27, 06:57 PM
  4. Selecionar objeto fora da area de visualizaçao
    By rigolino in forum AutoCAD General
    Replies: 2
    Last Post: 2009-05-15, 03:50 PM
  5. CLIP EM IMAGENS ANEXADAS ATRAVÉS DO FDO
    By werneckad in forum AutoCAD Civil 3D - General
    Replies: 0
    Last Post: 2007-06-03, 09:44 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
  •