Jump to content

Recommended Posts

Posted

Hi I starting learnig vb.net for autocad. I Have to open all .DWG file and make a liste off all Block Name and the Block Attibute for block whit "bom " as name.

 

 

My Code stop when i try to get the block reference .

 

My sub is called from a form buttom

 

Someone can help me please.

 

 



[size=2][color=#0000ff][size=2][color=#0000ff]Private[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size][/color][/size][size=2] traitement2([/size][size=2][color=#0000ff][size=2][color=#0000ff]ByVal[/color][/size][/color][/size][size=2] CIBLE [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2])[/size]

[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] fichiersTrouv = Directory.GetFiles(T_CIBLE.Text, [/size][size=2][color=#a31515][size=2][color=#a31515]"*.dwg"[/color][/size][/color][/size][size=2], SearchOption.AllDirectories)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] ligneF [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] fichiersTrouv[/size]
[size=2]Debug.Print(ligneF)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myDB [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]New[/color][/size][/color][/size][size=2] Database([/size][size=2][color=#0000ff][size=2][color=#0000ff]False[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size][/color][/size][size=2])[/size]
[size=2]myDB.ReadDwgFile(ligneF, IO.FileShare.ReadWrite, [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]""[/color][/size][/color][/size][size=2])[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] myTrans [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = myDB.TransactionManager.StartTransaction[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYBT [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] BlockTable = myDB.BlockTableId.GetObject(OpenMode.ForRead)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] mybtrid [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] ObjectId [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] MYBT[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYBTR [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] BlockTableRecord = mybtrid.GetObject(OpenMode.ForRead)[/size]
[size=2]Debug.WriteLine(MYBTR.Name)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] MYBTR.Name = [/size][size=2][color=#a31515][size=2][color=#a31515]"bom"[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Then[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] MYTRANS2 [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = mybtrid.Database.TransactionManager.StartTransaction[/size]
[size=2][color=#008000][size=2][color=#008000]' program stop on next line autocad fatal error : Unhandled e0434f4dh exception at 7c812afdh[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYBREF [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] BlockReference = mybtrid.GetObject(OpenMode.ForRead)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYATTCOLLECTION [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeCollection = MYBREF.AttributeCollection[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] MYATTREFID [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Object[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] MYATTCOLLECTION[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myAttRef [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeReference = MYATTREFID.GetObject(OpenMode.ForWrite)[/size]
[size=2]Debug.WriteLine(MYBTR.Name & [/size][size=2][color=#a31515][size=2][color=#a31515]" - "[/color][/size][/color][/size][size=2] & myAttRef.Tag & [/size][size=2][color=#a31515][size=2][color=#a31515]" - "[/color][/size][/color][/size][size=2] & myAttRef.TextString)[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size]
[/color][/size][size=2]myDB.Dispose()[/size]
[size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
[/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size]
[/color][/size]

Posted

For starters...

 

CIBLE =//= T_CIBLE

 

I would also use

 

If MYBTR.Name.[color="red"]ToLower[/color] = "bom" Then

 

:wink:

  • 2 weeks later...
Posted

thanks for your help, but is nt the solution i

 

i found how to solve my problem

 

this is my working code

 

[size=2]
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myDWG [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Document = Application.DocumentManager.MdiActiveDocument
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myDB [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]New[/color][/size][/color][/size][size=2] Database([/size][size=2][color=#0000ff][size=2][color=#0000ff]False[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size][/color][/size][size=2])
myDB = myDWG.Database
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] mytrans [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = myDB.TransactionManager.StartTransaction
[/size][size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] myBlockName [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] GetTopLevelBlocks(myDB)
[/size][size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] BRefID [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] ObjectId [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] GetBRefIDs(myDB, myBlockName)
[/size][size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] myBlockName = [/size][size=2][color=#a31515][size=2][color=#a31515]"DANCART"[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Then
[/color][/size][/color][/size][size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYATTVALS [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]New[/color][/size][/color][/size][size=2] Dictionary([/size][size=2][color=#0000ff][size=2][color=#0000ff]Of[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"PROJET"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"A"[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"CLIENT1"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"B"[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"CLIENT2"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"C"[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DESSINATEUR"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"D"[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DATE"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"E"[/color][/size][/color][/size][size=2])
MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DESSIN"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"F"[/color][/size][/color][/size][size=2])
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] myTrans2 [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = BRefID.Database.TransactionManager.StartTransaction
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myBRef [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] BlockReference = BRefID.GetObject(OpenMode.ForRead)
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myAttCollection [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeCollection = myBRef.AttributeCollection
[/size][size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] myAttRefID [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] ObjectId [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] myAttCollection
[/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myAttRef [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeReference = myAttRefID.GetObject(OpenMode.ForWrite)
[/size][size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] MYATTVALS.ContainsKey(myAttRef.Tag) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Then
[/color][/size][/color][/size][size=2]myAttRef.TextString = MYATTVALS(myAttRef.Tag)
[/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]If
[/color][/size][/color][/size][size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next
[/color][/size][/color][/size][size=2]myTrans2.Commit()
[/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Using
[/color][/size][/color][/size][size=2][/size][size=2][color=#008000][size=2][color=#008000] 
[/color][/size][/color][/size][size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]If
[/color][/size][/color][/size][size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next
[/color][/size][/color][/size][size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next
[/color][/size][/color][/size][size=2]mytrans.Commit()
[/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Using
[/color][/size][/color][/size][size=3]

[/size]

  • 2 weeks later...
Posted

Why I got an error saying "GetTopLevelBlocks not defined".

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...