Ir ao conteúdo

Posts recomendados

Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!