AutoCAD .NET :: Get Specified Attribute From External Block
Mar 21, 2013How to get attributes from block located at external drawing?
View 2 RepliesHow to get attributes from block located at external drawing?
View 2 Repliesis it possible to extract attribute values from an block in an External Reference using VBA ?
View 5 Replies View RelatedI have a block with:
tag1: XX
tag2: YYYYYY
tag3: ZZZZZZZZ
I have an external file check.txt with string:
XXYYYYYYZZZZZZZZ
I would like to create a lisp program that check the attributes of block using an external database, if tag1+tag2+tag3 = XXYYYYYYZZZZZZZZ ok end program, if not make a circle on block :
select all blocks on certain layers in a drawing, check attribute CIRCUIT in each block if it starts with MS then attribute CONTROL = switched. I hope thats clear enough the way
(defun c:control()
(graphscr)
(Setq sc (ssget "X" '((0 . "INSERT")
[Code].....
I wanna transfer my attribute block values to another attribute text blocks , is there any lisp for that?
Is there a possibility for sum tag values of choice attribute blocks to inside of another attribute text block ?
What I really want to do is on our fire alarm blocks we have 3 different attributes one for the address, the candela and one for misc info. I want to make an attribute that takes the number from the candela (15,30,75or 110) and change a different attribute to a value depending on which candela we use (such as 15=.078, 30=.113, 75=.195 or 110=.259). But I don't want the .078,.113,.195,.259 to print out on paper, I want to export block information excel file so I can add up all values.
View 2 Replies View RelatedIs it possible, via whatever methods (lisp?) to be able to have a premade block with an attribute and insert it into a drawing then assign a value to it by selecting another existing block in the drawing and using one of its own attribute’s values?
For example, say I have a block representing a telephone and it had an attribute called "PhoneNo" and I inserted it into a drawing showing an office floor plan that had blocks in each office space that are telephone junction boxes with attributes "PhoneExtension". I would like to be able to autocomplete the entering of the “PhoneNo” data by selecting one of the telephone junction boxes in the drawing and using its attribute’s value.
Autocad 2011, Electrical package,
I have an existing title block a few text attributes, to which I wish to add a watermark. I have added it in the block editor as a normal attribute, with the same details as the other attributes that work, only a different tag name. It has a default value, "DRAFT" and is tagged "WMARK". It works fine in the Block Editor, and If I test the block I can edit it to display whatever I want, but if I save the block and open it from Autocad proper, the attribute is not in existence, either as a default value, or editable from block properties, attribute editor or title block editor, whereas all of the other attributes are there. I have used BattMan to verify the settings of the attribute, and the only difference is that the others all have "L" in the "Modes" column, but I think that means that their position is "locked" whereas my new attribute is justified "aligned" therefore cannot be "locked" (This is some assumption on my part, as the documentation on the "Modes" column is almost non-existent). I cannot afford to waste much more time on this issue, as the boss is breathing down my neck, but editing watermarks on every drawing after every revision is frustrating, when it could be an attribute that is editable from the title block editor.
I need to match few attribute values from one block to different block. I download a lisp file called; ca.lsp which can match the single attribute value. I modified it for more than one attribute value matching. It is ok but still wish to overcome two issues for batch prcess
1. picking up the blocks by selection
2. click the alternative block numbers of times to match the numbers of attribute values I needed.
How to modify this lisp I can run it by block name selections instead of picking selection which enable me to run batch process for numbers of drawing? That will be good...
Lisp & Demo file attached (Match attribute value, A, B & C to Attribute 1, 2 & 3).
Is there a way that I can create a block with text ('A') and when I insert the block and populate the block another block block will update also? I am wanting to create a block for x-sec flags, and detail callouts that update their detail titles.
AutoCAD Civil 3D 2012 SP4
Windows 7 (64)
I have 2 drawings with the following content :
Drawing 1 : Contains tree blocks that have a specific scale dependant on the tree size
Drawing 2 : Contains a block with just a point and attribute data about the tree (name, size etc.)
This block is approximatly at the same location as the tree block (0,1 m precision)
Problem I want to join these two items together. In other words, in the tree block that is scaled correctly i want the attribute data with the name, size etc. These blocks don't have a corresponding unique number or something like that.
Is it possible to create a text block attribute in part sketch mode?
View 2 Replies View RelatedI'm creating a block with a block attribute.
In the blockeditor I can change the draworder so the attribute is partly under some lines. But the draworder in the blockeditor of the attribute doesn't work in the normal modelspace; the blockattribute is allways on top.
I need to open a drawing and read the block attributes and find a block with name "ABC" and attribute named "Text" in "ABC" block. for which i am using the below code which is working perfectly.
Try AcadApp = GetObject(, "AutoCAD.Application") Catch ex As Exception AcadApp = CreateObject("AutoCAD.Application") End Try AcadApp.Visible = True Try AcadDoc = AcadApp.Documents.Open(DWGName, True) RichTextBox1.AppendText(" - Opened File Successfully" & vbCrLf) Me.Refresh() Catch ex As Exception RichTextBox1.AppendText(" - Can not Open this Drawing" & vbCrLf) Me.Refresh() Exit Function End Try Dim Obj As Object For Each Obj In AcadDoc.ModelSpace If Obj.ObjectName = "AcDbBlockReference" Then RibbonLabel1.Text = "Find Block: " & Obj.Name Me.Refresh() ' Check for attributes. If Obj.HasAttributes Then Dim AttList As Object Me.Refresh() If Obj.Name.ToString.ToLower = "abc" Then ' Build a list of attributes for the current block. AttList = Obj.GetAttributes ' Cycle throught the list of attributes. For _i = LBound(AttList) To UBound(AttList) ' Check for the correct attribute tag. If AttList(_i).TagString = "Text" Then return AttList(_i).TextString.ToString End If Me.Refresh() End If Next End If End If End If Next Obj
But i want to know whether is there any way to get the block named "ABC" directly without looping through all the objects.
I have a block content many attribute. When I'm create the block whit this many attribute, the order of this attribute is not properly. I know autocad have a command to class this many attribute in order but i search it and i don't know where is it.
View 1 Replies View RelatedI need to get the Attribute Collection of a named block which is not been placed in the drawing, but it does exist
Dim paaltype As String
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Dim acDocEd As Editor = acDoc.Editor
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
paaltype = "paal01"
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
If acBlkTbl.Has(paaltype) Then
‘block exist, how to get the attributecollection
End If
acTrans.Dispose()
End Using
How can I add an attribute to a block without the other attributes to move from their position. With the ATTSYNC belongs unfortunately not because the old attributes moved back to the original places that I will not.
View 9 Replies View RelatedI wan't to append a new attribute to a new block. But I get an error that there is no database. The loaded file has no attributes
Dim mDialog As New frmPaalDefinitie()
For Each item In lvPalen.Items
mDialog.tsPaal.Items(item.imageindex).enabled = False
Next
mDialog.ShowDialog()
If mDialog.DialogResult <> Windows.Forms.DialogResult.OK Then Exit Sub
[Code] ........
I know how to get/set attribute within loop at block's AttributeCollection.But I'm wonder if I can set value for specified attribute without loop. Or I always have to iterate on each attribute in block's AttributeCollection?
View 9 Replies View RelatedHow to access the BTR, read and write BRef, attDef, AttRef etc. But this has me stumped. There are a few different examples but can’t find anything that works and don't know why.
I have inserted a block in modelspace, I have the BlockRefID and now want to change its attribute values. This finds the attributes tags but doesn’t write the sValue. Why it isn’t writing the value to the block.
Public Sub ChangeAttributeValue(ByVal BlockRefID As ObjectId, ByVal sTagName As String, ByVal sValue As String)
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim tr As Transaction = db.TransactionManager.StartTransaction()
Dim br As BlockReference = DirectCast(tr.GetObject(BlockRefID, OpenMode.ForWrite), BlockReference)
[code]........
Im running AC LT 2012 version #F.51.M.310 on a Mac Pro 3,1 and a MacBook Pro 6,2. The Mac Pro 3,1 is not a supported machine. I have no issues on the MBP 6,2.
It seems to run fine on the MP 3,1 except one very important issue. When I open a block attribute editor Dialogue then cancel or save, it crashes AutoCAD. If I use the Property Inspector instead it is fine. Double clicking a block to edit its text attributes is a VERY hard habit to break.
Mac tends to fix things through updates in the App Store.
Is this the most up to date AC LT 2012? I have yet to find that version # listed anywhere. Is this an issue of just being an unsupported machine? I have been searching for weeks to resolve/identify this problem to no avail.
I'm drawing a block library for myself. I would like to create block with one attribute value who will be repeated few time in the block (in mtext or attribute). As example, here is the original block (I wrote only the text of the block):
Ix.0
Ix.1
Ix.2
where x is a variable e.g. attribute
Then when I insert the block, attribute ask for value. Then if I type 2 I want to have
I2.0
I2.1
I2.2
If I type 3:
I3.0
I3.1
I3.2
It is possible to convert a block like below straight into an attribute without actually creating the attribute manually?
View 7 Replies View RelatedI have a requirement to create a block with a few attributes, but the attributes require a bit of composition behind the scenes. Here's an abstract example.
I need a block that represents a computer's identity. Each computer has 2 references that need to result in attributes that I can extract. One attribute is a unique reference across the project, and the other attribute is a room reference, and many computers can be in the same room.
Here are some example references.
Computer A
Unique Reference: DF.SALES.01
Room Reference: DG.SALES.07
Computer B
Unique Reference: DF.SALES.02
Room Reference: DG.SALES.07
Computer C
Unique Reference: DF.SALES.03
Room Reference: DG.SALES.07
Computer D
Unique Reference: DF.ADMINISTRATION.01
Room Reference: DG.ADMINISTRATION.02
Computer E
Unique Reference: DF.ADMINISTRATION.02
Room Reference: DG.ADMINISTRATION.02
As you can see from the above, the 'common' part for a computer is the middle 'SALES' or 'ADMINISTRATION' part, which 'technically' only needs to be put in/typed in by the user once for each computer. I need to automate this process to reduce user input error, such that they only enter 'SALES' or 'ADMINISTRATION' once and don't end up creating the below, which would be invalid.
Computer F
Unique Reference: DF.RECEPTION.09
Room Reference: DG.SALES.07
Thus I imagine I need a third property/field/attribute to specify 'room', and then formulate the Unique Reference and Room References, using this 'room' part in the middle.
The end goal here is that I need to be able to extract the above two references for each 'computer/block' and get them into Excel, and I need to be able to modify the 3 properties (room, unique reference and room reference) quickly, ideally using something like EATTEDIT, which is how we have edited attributes in the past.
The use case above is abstracted, it's actually not for computers at all but I figured it would make more sense than complicating it with the actual application!
Is there a possibility to use "Dynamic Blocks" as an "External Reference" having the ability to use their features at the same time?
The thing is I have dwg1 and dwg2 files and in them I use "Dynamic Block1". Whenever I update "Dynamic Block1" in one of the dwg files I have to go to "design center" and update the "Dynamic Block1" in other dwg file.
I have a drawing with many block references on it and they have some attributes.
I know how to find the block reference witch the attribute value, and even change it but I don't know how to select it once I have the object ID of the block.
How can I do the selection without asking the user to select it?
I need to create blocks in which the same text appears twice. I've created an invisible attribute to hold the text and created two mtext object containing fields that point to the attribute value.
The text fields show the default value of my attribute but will not change when the attribute is set on an placed instance. After setting the attribute on an instance I've tried UPDATEFIELD and REGEN but still I see the default value.
whenever I make a block with attributed text the block works just fine when I insert it into a drawing like normal. However if I try and open the block drawing by itself the attributed text just turns into normal text after I get this message "Orphan Attdef Objects found & Converted to Text". This problem seems to happen on two of our machines but a third co-workers machine still works fine.
View 9 Replies View RelatedI am looking to go through a whole drawing and change the text color of any block attribute to say 0 as the drawings I am receiving have all the text at a weird color. I was unable to find anything on the forum. I already have a routine that changes text of certain blocks based on layer, but I want this to change the color. Below is code I used for the layer change I talked about earlier.
publicstaticvoid strFind(string sFind, stringsReplace)
{
string str = "";
Document document = Application.DocumentManager.MdiActiveDocument;
Editoreditor = document.Editor;
Transactiontransaction = document.Database.TransactionManager.StartTransaction();
[code].......
I am trying to insert a text field into a block attribute and setting that field to display the information of an attribute in another block. What happens is that when I close the file and re-open it the text field loses its connection to the attribute that it is referencing.
Now, I have been able to make this work in the passed, however the difference now is that I am asking the text field to reference an attribute of an annotative block. That appears to be the reason it does not work.
How to make this work with annotative blocks? Is it a system variable I can change?
I have a problem with using .Net to insert a dynamic block and set the size property. The attribute text does not move correctly on insert, but will if manually stretched after the fact. From my research the recommendation is to make sure the attribute definition is marked as "Locked".
I have an attribute definition inside a circle (classic door/window number), both the circle and attribute are included in the Action Selection Set, however only the circle moves correctly. It all works correctly if manually inserted/stretched.