Ir ao conteúdo
  • Cadastre-se

Outro VBA para automatizar tarefa AutoCAD


Posts recomendados

Boa tarde,

 

Meu projeto seria a criação de múltiplas plaquinhas em um mesmo DWG.

Consegui criar o script para adicionar o Mtext conforme a segunda coluna do Excel, e quantidade de vezes que se repete conforme a terceira coluna.

 

Para finalizar preciso criar esse retângulo com o Mtext centralizado, mas não estou conseguindo, ele é criado mas não fica centralizado. O retângulo precisa ser 60x40.

 

image.png.07d5b4d6f6a8e4ae9d4a25fbbd69e907.png

 

Em anexo deixei minha planilha e dwg.

 

Sub UpdateAutoCADMTextAndCreateCopies()

    ' Defina a referência ao AutoCAD
    Dim AcadApp As Object
    On Error Resume Next
    Set AcadApp = GetObject(, "AutoCAD.Application")
    If AcadApp Is Nothing Then
        Set AcadApp = CreateObject("AutoCAD.Application")
    End If
    On Error GoTo 0

    ' Defina a referência à planilha do Excel
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Plan1") ' Altere para o nome da sua planilha

    ' Abra o desenho do AutoCAD
    Dim AcadDoc As Object
    Set AcadDoc = AcadApp.Documents.Open(ws.Cells(1, "A").Value)

    ' Percorra as células na coluna B (novo valor mtext) e C (quantidade de cópias)
    Dim i As Long
    For i = 1 To ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

        ' Crie as cópias do mtext
        Dim j As Long
        For j = 1 To ws.Cells(i, "C").Value

            ' Crie um novo mtext
            Dim insertionPoint(0 To 2) As Double
            insertionPoint(0) = 2469 + (i - 1) * 100 ' X coordinate
            insertionPoint(1) = 1390 + (j - 1) * 100 ' Y coordinate
            insertionPoint(2) = 0 ' Z coordinate
            
            Dim AcadEntity As Object
            Set AcadEntity = AcadDoc.ModelSpace.AddMText(insertionPoint, 54, ws.Cells(i, "B").Value)
            AcadEntity.StyleName = "Stencil"
            AcadEntity.Height = 4.25
            
            ' Crie um retângulo em volta do mtext
            Dim lowerLeft(0 To 2) As Double
            lowerLeft(0) = insertionPoint(0) - 30 ' X coordinate
            lowerLeft(1) = insertionPoint(1) - 20 ' Y coordinate
            lowerLeft(2) = 0 ' Z coordinate
            
            Dim upperRight(0 To 2) As Double
            upperRight(0) = insertionPoint(0) + 30 ' X coordinate
            upperRight(1) = insertionPoint(1) + 20 ' Y coordinate
            upperRight(2) = 0 ' Z coordinate
            
            Dim points(0 To 9) As Double
            points(0) = lowerLeft(0): points(1) = lowerLeft(1)
            points(2) = upperRight(0): points(3) = lowerLeft(1)
            points(4) = upperRight(0): points(5) = upperRight(1)
            points(6) = lowerLeft(0): points(7) = upperRight(1)
            points(8) = lowerLeft(0): points(9) = lowerLeft(1)
            
            Dim AcadRectangle As Object
            Set AcadRectangle = AcadDoc.ModelSpace.AddLightWeightPolyline(points)
            AcadRectangle.Closed = True
        Next j

    Next i

    ' Salve o desenho do AutoCAD
    AcadDoc.Save
    AcadDoc.Close SaveChanges:=True

End Sub

 

Dados.7z

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!