I'm working with some "dirty" blocks that contain several attributes. I've cleaned the blocks up by wblocking, cleaning, & purging the newly created block. I also removed any attributes within the file, including those within blocks within the file. I then renamed the file and inserted it into the drawing, and did a replace block with another through express tools. The problem that I have is the blocks are replaced with the clean version, yet the attributes remain. Is there a solution to this. I do not want any attributes to remain and the only way I know how to fix it is to replace them one at a time.
I've got a block with multiple attributes. This is not a problem to redefine the blocks attributes.
Some of the attributes contains dynamic fields (blockplace holder x y z parameters) When i insert a block with such atributes that includes the blockplaceholder dynamic fields i get
X: InsertionPoint => It is recognized as an Dynamic field but displays InsertionPoint. and does not update the value.
How can i update the fielddata from vb.net?
Part of the code I use (where i think the problem is)
For Each attid As ObjectId In refbtr attent = tr.GetObject(attid, OpenMode.ForRead) If TypeOf attent Is AttributeDefinition Then Dim attdef As AttributeDefinition = attent Dim attref As New AttributeReference() attref.SetAttributeFromBlock(attdef, myBlockRef.BlockTransform) Dim attrefid As ObjectId = myBlockRef.AttributeCollection.AppendAttribute(attref) tr.AddNewlyCreatedDBObject(attref, True) End IfNext
I've just been sent some layouts by our planning team and they have attributes stating the size and name of all the furniture.
How can I quickly hide or delete the attributes as for my purposes the text is irrelevant and gets in the way?
I have tried the BATTMAN command but it doesn't seem to let me delete all of the attributes I have to leave one on each block. Currently all of the attributes are on the same layer as the lines (layer 0.)
Drawing A has a grid system Xref-ed into it. It also has a block reference in it, repeated in various places throughout the drawing.
I Xref-ed the grid into the block to check something, and now I can't get it out. This means that the grid now repeats all over Drawing A as well and is generally being a nuisance.
If I try to unload the Xref within the block, it unloads it in Drawing A too. If I try to detach it from the block, it returns this message: Xref [Xref name] has multiple references. Not detached. If I try to detach the Xred from Drawing A, it returns the same message.
How do I unload the same Xref that occurs in a block in a drawing, and in the drawing itself, independently of each other?
how I can get VBA to insert/redefine a block reference from another file into a block (of the same name) that already exists in the target drawing?
I've tried using the insertblock method but it produces a 'filer error' - As a bonus point, it'd would also be good to be able to retrieve the contents of the blocks collection in the source drawing in some clever way other than opening it (a bit like browsing using the design centre) ?
ACad, MEP, 3DS Max Windows 7x64 X5482 @3.2Ghz 8Gb Ram Quadro FX1700
I have a drawing with multiple instances of a dynamic block. I have a second drawing with said block modified.
I want the first drawing's block to be updated to the modified block without reinserting each block separately.
I don't have the block as a separate file to "insert", only available to copy. With it being dynamic, I don't trust using the block editor and just copy/paste from the modified into the original.
I'm trying to insert a block, wich contains 2 nested blocks:
1 dynamic block 1 annotive block which has a scale 1:200 with an attribute.
when i'm inserting it trough the toolpalette, and my annoscale is 1:100, the annotive block is converted to the annotive scale 1:100, instead of the 1:200 wich it originally is.
I can't set the annotationscale in the toolpallete, exept when i use macro's. but this also has a drawback.
when i'm inserting the block with a macro, i have to insert a complete drawing wich contains only this one block.This block contains dynamic parameters (i can't add dynamic parameters outside of the blockeditor)
When this block (dwg) is inserted, i explode the block so it becomes the dynamic block again. but the block cannot be redefined, because the actual inserted block is a dwg file.
Is it a drawback of the use of the toolpalette and dynamic / annotive blocks?
I am trying to redefine Block A to Block B, Block C & Block D based off the value of an Attribute in Block A.
If the Attribute in Block A is "1" then redefine to Block B If the Attribute in Block A is "2" then redefine to Block C If the Attribute in Block A is "3" then redefine to Block D
I know it should be able to be done using If and Cond functions within a lisp routine, but I am in a hurry with it and don't have the time to research it anymore.
I have the following code to redefine a block after a command has ended:
(vl-load-com);*********************************************************(defun Redefine() (command "_.INSERT" "reactortest=reactortest" nil)(princ "Block redefined."));****************************************(vlr-command-reactor nil '((:vlr-commandEnded . endCommand)));******************************************************(defun endCommand (calling-reactor endcommandInfo / thecommandend) ; Get the name of the command.(setq thecommandend (nth 0 endcommandInfo)); Check name of the command.(cond ((= thecommandend "PLINE") (Redefine)));cond(princ));defun(princ)
It doesn't work because INSERT is an interactive function and can't be called while a reactor is active. Is there another way to redefine a block that can be used in a reactor? The block is in one of the default search path's.
I have blocks with several attribute tags and layers. The problem I am having is somehow when I go to replace the block with a different one the attribute tags stay in the right spot but the symbol acts like it looses its coordinates and comes in a different spot. I cant seem to fix it. When I zoom all it block editor it zooms like I have a symbol way off the mark, but I don't.
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 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'm making a site layout that brings together a bunch of large file assemblies and it's bogging my computer down,
so what I'm trying to do is remove the attributes from the assemblies and make it a block with no moving parts(hope this makes sense). I just need it to look like the parts.
I have a “PART” block with attributes tags “PARTMARK” and “SHEAREDFROM” inserted 5 to 10 times in 10 to 50 drawings.
The “PARTMARK” value is always a unique number entered in autocad.The “SHEAREDFROM” value is calculated in Excel and exported to a “SHEARED.txt” file.
In each “PART” block I need to replace the “SHEAREDFROM” value based on the unique “PARTMARK” value, using a script that uses (or incorporates) the values from the “SHEARED.txt” file.
So far the only solution I’ve come up with is having a unique value for the “SHEAREDFROM” and –attedit to change the values in a script. However if the script doesn’t encounter a "K20-1S" in the first drawing it errors out and doesn’t proceed to the next. Below is an example of my rudimentary script.
(command "-attedit" "n" "n" "PART" "SHEAREDFROM" "K20-1S" "K20-1S" "8-60x192") (command "-attedit" "n" "n" "PART" "SHEAREDFROM" "K20-2S" "K20-2S" "2-60x144") (command "-attedit" "n" "n" "PART" "SHEAREDFROM" "K20-3S" "K20-3S" "2-60x132") (command "-attedit" "n" "n" "PART" "SHEAREDFROM" "K20-4S" "K20-4S" "4-60x120") (command "-attedit" "n" "n" "PART" "SHEAREDFROM" "K20-5S" "K20-5S" "0.7-60x120")
I’m assuming I need LISP to do this, but my LISP skills are limited. I think I would need a setq for each unique shearedfrom value (setq K20-1S (“8-60x192”))? Then somehow search each drawing for the unique shearedfrom value to replace.?
I get an AutoCAD drawing from my conveyor manufacturer who have buried a block (tagname) in all of their conveyor blocks.
The only way to remove them is to manually use BEDIT and erase the tagname block.
Is there a way through Autolisp to search all blocks in a drawings and if the tagname block is part of the definition of the conveyor block, erase the tagname block or redefine the conveyor block without the tagname block.
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?
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
I'm having trouble using the blockreplace' command. Every time I try it tells me the block name has invalid characters. The attached files is an example of the issue. I'm trying to replace the old block with the new block.
I'm working in ACAD 2008 and have a drawing with multiple blocks (block 'a') that need to be replaced with block 'b'. Is there a command similar to edit/find that I can use to replace the block? I don't want to redefine my block and want to only select certain block 'a' to be replaced, not all block 'a'...
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?
I remember on a pc i was using once upon a time, AutoCAD had a command called replace block. the shortcut was 'RB' and you could replace a block with another one very easily.
I am trying to replace the title block of the first sheet of the active drawing via C#. I currently am receiving the following error on the last line of The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)).
Why the code below is throwing this error? I have tried multiple variations of the code below to no avail and I'm sure this is something minor that I am overlooking. The title block definition under Drawing Resources is replaced with no errors, the title block on Sheet 1 is deleted just fine, but I can't seem to add a Title Block back in!