AutoCad :: Exporting Block Attributes To Create Drawing Index
Nov 12, 2012
I am trying to find a way to create an index drawing without having to input much information in.
I would like to export the attributes from each drawing file in my (project folder) from the title-blocks (drawing numbers and descriptions) into excel and then be able to just data link that into my Index table in AutoCAD. I know i could put the info in excel and import it into my table in CAD but i am looking for something more Automatic, so that every time i need to create an index it will automatically extract the info from the drawing files title-blocks.
I have searched high and low and still could not find a tutorial to really explain how to create a drawing title with attributes (Detail Number, Sheet Number, Detail Title, Detail Scale). All I find are on creating dynamic block, which I could achieve, but I need one for a block that has (or will have) attributes.
I was able to find a tutorial on attributed door numbers, but it does not work for drawing titles that has attributes. GOAL: I would like to have all my seven drawing titles in one file and to be able to stretch the leg of any selected title to a desired length.
Is there a way to create a block with attributtes that automatically complete x, y, z, lat, long for the insertion point of the block?
I am trying to complete text in paperspace that will automatically fill in the lat long of a point in model space without using a table. I have tried field insertion with reference to a cogo point, but it doesn't give options for position on a cogo point. If I pick a block with attributes, it will let me pick any attributes, and x,y position for the block.
Cogo points show all the information I need to propagate in the properties....but how do I get that to translate into the text using fields or some other method?
Dell Precision T3600 - Windows 7 64-bit NVIDIA Quadro 600 Intel(R) Xenon(R) CPU E5-1607 0 @ 3.00GHz 3.00GHz 8 GB ram - Two 1TB raid
I cannot edit any block attributes in my drawing. When attempting to do so, the command line states: "The object is on a locked layer". All of the layers in my drawing are unlocked, on and not frozen.
What I need to know is, will the drawing sheets/titleblocks attributes etc, I have created to insert in AutoCAD work in Civils 3d or will i need to create separate ones.
I have a basic floor plan in AutoCAD 2012 that has blocks in specific locations which contain personel data....name, phone, computer tag, desk key numbers, etc. I extracted the data to an Excel spreadsheet and I thought set up a "data link". But I don't know how to make the data update.
My problem...moves of staff, phone, computers are often made, but no one lets me know about it until they want a new floor plan printed and the computer and key tags get so messed up from the moves that it can take me hours to fix.
My goal is to be able to have our secretarial staff update the spreadsheet and in turn update the blocks in my AutoCAD drawing when it is opened and/or "updated".
I have created fields in the drawing properties custom fields dialogue box, then inserted those fields into my title block attributes.
Two things I hope to get out of this:
1. link these fields into the drawing property summary, so that I can display the drawing title and other pieces of info in the help strings that appear in windows explorer by simply hovering the cursor over the file.
2. I wish to be able to fill out the information in the title block by data linking it to our drawing lists in access.
How I can modify this code to create a block, ask for a new name for the block, then add the attributes listed inside the code below to the new created block. The lisp does a wonderful job - however, it only works if you already have a block created. We are in the process of drawing components and making blocks one by one, so it makes sense to add the attributes automatically when the block is created. We currently have over 500 components to create as a block and set the attributes to each one by one.
Also I would like to know, If Fields can be used inside the lisp routine. That way we can always have access to the attributes from outside the block and change values for all the blocks at once.
(defun c:addattribs ( / blk def ) (while (not (or (= "" (setq blk (getstring t " Name of block to update: "))) (tblsearch "BLOCK" blk) ) ) (princ (strcat " Block "" blk "" not found.")) ) (if (/= "" blk) (progn (setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) blk)) (vla-addattribute def (getvar 'textsize) acattributemodelockposition "New Attribute 1" (vlax-3D-point 0 0) "NEW_TAG1" "New Value 1" ) (vla-addattribute def (getvar 'textsize) acattributemodelockposition "New Attribute 2" (vlax-3D-point 0 (- (* 1.5 (getvar 'textsize)))) "NEW_TAG2" "New Value 2" ) (command "_.attsync" "_N" blk) ) ) (princ))(vl-load-com) (princ)
I am trying to create a block and include attributes that have the background masked. I know how to mask the background in mtext but am curious if it is possible to do on attributes.
I would like to change sub block from a visibility after setting it. Here an example of code to get the right visibility, I don't really know how to update a sub block by name or by handle(seems to change inside dynamic block).
Dim Block As AcadBlock Dim BlockRef As AcadBlockReference Dim DynEntBlock As AcadEntity Dim DynObjRefH As IAcadBlockReference [Code]........
I can insert a block with block attributes using the Inter op very easily:
Dim theBlock AsAcadBlockReference Dim pickScreenVBA = myDoc.Utility.GetPoint(, "insert the hydrant") theBlock = myDoc.ModelSpace.InsertBlock(pickScreenVBA, "Hydrant", 1.0#, 1.0#, 1.0#, 0) Dim varAttributes AsObject varAttributes = theBlock.GetAttributes varAttributes(0).TextString ="3 Ports" varAttributes(1).TextString ="Salt water"
Works great, but when I try using the non-inter op, all the example insert new Attributes and not add block with existing attribute (so I end up with duplicate attributes for each block - i.e "Salt water" attribute is added to the block each time I run the code),
Are they any examples that does the same as above using the non-interop code?
I'm trying to add some attributes to an existing block using the block editor, but after I save and close it I cannot see any 'placeholders' despite adding a default value and the attributes work fine when I double click the block.
I've tried using the ATTSYNC and BATTMAN commands but nothing works and there are no invisibility states applied to either the attribute or block and all layers are switched on.
I just tried making a quick block from scratch and it seems to have the same affect, except the default value will show, but no 'placeholder' shown if left blank.
I swear with previous version I could see the tag when a value hadn't been applied, so is it that the version I now use (2012) does not have this feature or it's disabled?
Using Set Sheet Manager, I am trying to create an Office Standard Sheet Index Table.
I have begun by copying the Standard table and modifying it. I have adjusted the cell styles to reflect our colors and text types and sizes. I have also added two additional columns for revision number and revision date.
I have tried saving the new table ... and inserting a new table through the sheet set manager
the only tables i can bring in include the 2 original columns (sheet number and sheet title) and specified text font, size and color are maintained, but the additional columns and the column width are lost.
Ideally i would like the office format to be maintained...with little or no modification required of the user.
I'm trying to chnage the text of the sheet number and total sheet number attributes for each layout in my drawing. I have code that adds and deletes the specified pages, now I need to edit the attributes to reflect the correct page and correct total amount of pages. Here is my code, based on my old VBA version.
I know there is a problem with the line:
For Each item In myBTR.ObjectId
I've used a number of websites and books, but I would really like to find something that teaches about block tables, block table references, block table IDs so I can get a better understanding of breaking stuff down to get the info I need.
Public Sub updatePageNumbers() Dim myDWG As Autodesk.AutoCAD.ApplicationServices.Document Dim myDB As Autodesk.AutoCAD.DatabaseServices.Database Dim myTransManForPageNumbers As Autodesk.AutoCAD.DatabaseServices.TransactionManager Dim myTransForPageNumbers As Transaction
Is there a way to burst all Inventor sketch-symbols and titleblocks into plain text upon exporting (from Inventor to Autocad DWG format)?
iLogic, api, xml ?
Our biggest supplier still uses Autocad DWG format and needs to access theses attributes in plain text (scripting stuff). The only work-around, we have found is to re-open each exported files and burst these manually
--- extremely time consuming and not acceptable ---
I got too smart for myself today in bringing an old drawing up to current standards...Everyone seems to want their block attributes to be zero - I have blocks where the attributes are best when they match the rotations of each blocks.
I have an old drawing that was rotated (as it should be) at approx 2deg.
I used a lisp routine to global edit all the blocks that needed to be at zero. BUT for some reason (and after hundreds of blocks were corrected), I noticed I now have two blocks that should NOT have been in the set have had their attributes rotated to zero....and the attributes should be at the same rotation as their block's rotation.
Because those two blocks have a fixed tic mark, I can click on the mark to see what the block rotation is, then rotate its attribute to that rotation, but I have hundreds of blocks! One-at-a-time sucks....
Any chance there is a GLOBAL way to edit an attribute rotation to match its own block's rotation?
Function ReadDWG(ByVal DWGName As String) Dim AcadApp As AcadApplication Dim AcadDoc As AcadDocument Dim Extracted_title As String RichTextBox1.AppendText(Path.GetFileName(DWGName)) RibbonLabel1.Text = "Opening AutoCAD"
[Code]...
I am using the above code to read block attributes depending on the name. But now I need to read the active drawing (drawing will be open and should read from the active document). In the above code I have referenced interop.dll. without that can I retrieve the block attributes. How to read the block attributes from the active document.
Using ACAD2014LT. I want to use the first variable attribute value as a variable in subsequent attributes in the same block. This will be extracted and used for tag references in a PLC program.
Along the line, i know I can change the enclosed character ( ' ), but can I remove it?
And I generated this code for read this file and insert one block with attributes for each line of text…..
If txtPath.Text() = "" Then MsgBox("Select DB .txt.", MsgBoxStyle.Exclamation) End If On Error GoTo ControlErroresBD Dim AcadDocPt As Document = [Code] ....
‘To the end of this line I can insert the block,,,,,,, but I don’t know how to write the attributes…… I tried with the next code but it doesn’t work…. My bloque has 3 attributes and every tag named with “PN”, “CD” and “CT”
Dim AcadObj As Entity For Each acObjId As ObjectId In AcadBlockRef.AttributeCollection AcadObj = AcadTransPt.GetObject(acObjId, OpenMode.ForWrite) Dim acAttDef As AttributeDefinition = TryCast(AcadObj, AttributeDefinition)
I have used the FDO to connect to my SHP files. I have used one data attribute to get a rotation for my blocks. I have also used a feature Label to display the text I am interested in.
When I save to DWG, the feature labels come in as Text. I would like the text to go to the correct block attribute.
Is there a way to do this? I did not see anything in the Style Editor to use my blocks' attributes, only the geometry.
I am aware of using MAPIMPORT to set attributes from the data, but they do not come in rotated, and I have more conditions on which block to use, not just one field to decide the block name.
I'm trying to edit the attributes in a titleblock using VB.net. The block name is "Titleblock". It is already inserted into a drawing. My program does not need to insert it. It only needs to find the reference, for all layouts, and update a couple attributes for the titleblock on everylayout. I know some of the basics, but get confused with blocktables, and blocktablerecords.
Here is a piece of code I was experimenting with. With this code, I'm trying to get to the attributes, and read an attribute value for a drawing number. It fails when I try to assign a value to the variable blkreftitle.
Dim doc AsDocument = Application.DocumentManager.MdiActiveDocument Using docLoc AsDocumentLock = doc.LockDocument Dim db AsDatabase = HostApplicationServices.WorkingDatabase