See the top rated post in this thread. Click here

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

Thread: Inserindo DWG´s como Blocos - VBA

  1. #1
    Member
    Join Date
    2007-04
    Location
    San Antonio - TX
    Posts
    7
    Login to Give a bone
    0

    Default Inserindo DWG´s como Blocos - VBA

    Desculpem mas sou eu de novo
    eu sei que pode lhe parecer meio tola, mas estou começando neste negócio de VBA

    preciso inserir um desenho, digamos formaA4.dwg em um outro desenho como bloco, usando VBA.

    tentei fazer o seguinte código

    ' Define the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    Dim pathform As String
    pathform = "C:/eletrico/forma4.dwg"
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, pathform)

    mas tenho um erro na última linha

    no help do Autocad não achei um exemplo inserindo um arquivo tipo DWG como desenho.

    voces podem me ajudar nisto?

  2. #2
    Português - Programação Moderator Filipe Francisco's Avatar
    Join Date
    2001-12
    Location
    * PORTUGAL * Sintra *
    Posts
    859
    Login to Give a bone
    0

    Default Re: Inserindo DWG´s como Blocos - VBA

    Uma maneira mais simples




    Sub TESTE()

    ThisDrawing.SendCommand "_-Insert" & vbCr & "C:\1.dwg" & vbCr
    End Sub



    Espero ter ajudado
    Filipe

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

    Smile Re: Inserindo DWG´s como Blocos - VBA

    Caro leo_munters o erro está em que você está a acrescentar um bloco, visto como definição, na colecção de blocos de um desenho.
    Para entender melhor o que estou a dizer abra um desenho e execute o comando ".insert". Aparece-lhe uma caixa de diálogo e no canto superior esquerdo tem uma caixa de texto com uma seta para baixo (ComboBox) os itens dessa lista são a colecção de blocos do desenho. isto é são os blocos que se podem inserir como "BLOCK REFERENCE". Experimente a inserir um bloco no desenho e execute o comando ".List" selecionando esse bloco. Vai reparar que o objecto é um ""BLOCK REFERENCE" e não um "BLOCK".

    Isto tudo para dizer que: para inserir um "bloco" deve instanciar-se um AcadBlockReference e não um AcadBlock. Veja o seu exemplo alterado:

    ' Define the blockreference
    Dim blockRef AcadBlockreference
    Dim insertionPnt(0 To 2) As Double
    Dim pathform As String
    pathform = "C:/eletrico/forma4.dwg"
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, pathform,1,1,1,0)
    'end of code

    Notas:
    1. Se o Bloco já existir no desenho basta inserir o seu nome, não é necessário o caminho completo.
    2. Os Valores 1,1,1,0 dizem respeito a: escala em X, Y, Z e rotação por esta ordem.

    3. Procure "InsertBlock" na ajuda VB do AutoCAD.

    Cumprimentos,

    Rui Pestana.

    PS. Desculpe-me o Filipe pois obviamente o seu método também funciona.

  4. #4
    Português - Programação Moderator Filipe Francisco's Avatar
    Join Date
    2001-12
    Location
    * PORTUGAL * Sintra *
    Posts
    859
    Login to Give a bone
    0

    Default Re: Inserindo DWG´s como Blocos - VBA

    Quote Originally Posted by Rui Pestana
    PS. Desculpe-me o Filipe pois obviamente o seu método também funciona.
    Caro Rui,

    Não tem qualquer tipo de problema, fizeste muito bem em responder e ajudar a responder de uma forma melhor e mais elaborada, estamos todos aqui para aprender e partilhar (até eu estou aqui para aprender). existem sempre vários métodos e resoluções das questões... O importante é participar e ajudar...

    Um Abraço

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

    Red face Re: Inserindo DWG´s como Blocos - VBA

    Quote Originally Posted by Rui Pestana
    Caro leo_munters o erro está em que você está a acrescentar um bloco, visto como definição, na colecção de blocos de um desenho.
    Para entender melhor o que estou a dizer abra um desenho e execute o comando ".insert". Aparece-lhe uma caixa de diálogo e no canto superior esquerdo tem uma caixa de texto com uma seta para baixo (ComboBox) os itens dessa lista são a colecção de blocos do desenho. isto é são os blocos que se podem inserir como "BLOCK REFERENCE". Experimente a inserir um bloco no desenho e execute o comando ".List" selecionando esse bloco. Vai reparar que o objecto é um ""BLOCK REFERENCE" e não um "BLOCK".

    Isto tudo para dizer que: para inserir um "bloco" deve instanciar-se um AcadBlockReference e não um AcadBlock. Veja o seu exemplo alterado:

    ' Define the blockreference
    Dim blockRef AcadBlockreference
    Dim insertionPnt(0 To 2) As Double
    Dim pathform As String
    pathform = "C:/eletrico/forma4.dwg"
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, pathform,1,1,1,0)
    'end of code

    Notas:
    1. Se o Bloco já existir no desenho basta inserir o seu nome, não é necessário o caminho completo.
    2. Os Valores 1,1,1,0 dizem respeito a: escala em X, Y, Z e rotação por esta ordem.

    3. Procure "InsertBlock" na ajuda VB do AutoCAD.

    Cumprimentos,

    Rui Pestana.

    PS. Desculpe-me o Filipe pois obviamente o seu método também funciona.
    Bom dia, Rui Pestana!

    Comecei a programar no AutoCad recentemente. por acaso, encontrei este forum em uma de minhas consultas na Internet. estou tendo bastante dificuldades para inserir um bloco com atributos pelo VBA. vi e testei os exemplos acima comentados no forum.

    com este exemplo:

    path_rating = "W:/matrizes/RATING/RT_K_MM.DWG"

    ThisDrawing.SendCommand "_-insert" + vbCr + path_rating + vbCr + "493.93030644,276.04006590,0" + vbCr + "1" + vbCr + "1" + vbCr + "0" + vbCr + a + vbCr + b + vbCr + c + vbCr + d + vbCr + e + vbCr + f + vbCr + g + vbCr + h + vbCr + i + vbCr + j + vbCr + k + vbCr + l + vbCr + m + vbCr + n + vbCr + o + vbCr + p + vbCr

    até consegui obter o resultado mas as vezes o preenchimento dos campos do atributo não se faz corretamente. as variaveis de A até P são do tipo string.

    achei que da forma que você exemplificou eu pudesse atingir o resultado satisfatório mas quando compilo gera uma menssagem de erro: Key not found na ultima linha do código

    Dim blockref As AcadBlockReference
    Dim insertionPnt(0 To 2) As Double
    Dim pathteste As String
    pathteste = "W:/matrizes/RATING/RT_K_IN.DWG"
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockref = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, pathteste, 1, 1, 1, 0)

    voce poderia me ajudar?

    agradeço a atenção desde já.

    Obrigado
    Last edited by marcio.cartacho; 2007-06-18 at 03:55 PM.

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

    Default Re: Inserindo DWG´s como Blocos - VBA

    Você tem o caminho com os separadores ao contrário.
    onde está:
    pathteste = "W:/matrizes/RATING/RT_K_IN.DWG"
    escreva;
    pathteste = "W:\matrizes\RATING\RT_K_IN.DWG"

    Use "\" e não "/".

    Rui Pestana

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

    Thumbs up Re: Inserindo DWG´s como Blocos - VBA

    Rui Pestana, muito obrigado pelo auxilio.

    pretendo participar com frequencia deste forum e tentar ajudar o restante dos participantes no que for possivel.

    valeu...

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

    Default Re: Inserindo DWG´s como Blocos - VBA

    De nada. Podes contar sempre comigo.

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

    Post Re: Inserindo DWG´s como Blocos - VBA

    Olá Rui!

    este código abaixo serve para inserir um bloco, no caso um formato A2. o que acontece é que algums arquivos que eu tento incluir como bloco seguindo esta estrutura me gera uma mensagem de erro na ultima linha "FILE ERROR" mas é apenas com algums arquivos, me certifiquei que o arquivo estivesse no caminho especificado e fiz o teste inserindo atraves do thisDrawing.sendcommand funcionou perfeitamente, poderia me ajudar?

    Private Sub CommandButton4_Click()
    Dim blockref As AcadBlockReference
    Dim insertionPnt(0 To 2) As Double
    Dim pathteste As Variant
    pathteste = "*W:\matrizes\LINK TEAMWORK & AUTOCAD\CARIMBOS_LINK_AUTOCAD_TEAMWORK\PORTUGUES\INCHES\GE MOTORS\GEMA2_P_INCHES.dwg"
    insertionPnt(0) = 0
    insertionPnt(1) = 0
    insertionPnt(2) = 0
    Set blockref = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, pathteste, 1, 1, 1, 0)
    End Sub

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

    Default Re: Inserindo DWG´s como Blocos - VBA

    Olá Marcio,

    parece-me que a linha de código:

    pathteste = "*W:\matrizes\LINK TEAMWORK & AUTOCAD\CARIMBOS_LINK_AUTOCAD_TEAMWORK\PORTUGUES\INCHES\GE MOTORS\GEMA2_P_INCHES.dwg"

    tem um asterisco (*) a mais logo antes do W.

    Será disso?

Page 1 of 2 12 LastLast

Similar Threads

  1. ¿Como definir un alineamiento como borde de pavimento?
    By tengomuchoexito in forum AutoCAD Civil 3D - General
    Replies: 1
    Last Post: 2009-11-16, 06:24 PM
  2. Inserindo Landscape(humanização) no auto cad 2009
    By frubensonsantos in forum AutoCAD General
    Replies: 1
    Last Post: 2009-10-22, 11:26 AM
  3. Como melhorar a forma de Inserir Blocos?
    By mbdesign.206916 in forum AutoLISP
    Replies: 1
    Last Post: 2009-02-27, 03:07 PM
  4. Blocos
    By silasjunior in forum AutoCAD General
    Replies: 3
    Last Post: 2008-12-27, 01:24 PM
  5. blocos
    By jonasherminio in forum AutoCAD General
    Replies: 6
    Last Post: 2008-10-31, 09:30 AM

Posting Permissions

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