AutoCAD .NET :: How To Get All Block Reference In A Drawing
Mar 29, 2013I need to get list of all block reference in a drawing without iterating through all entities in the drawing.
View 7 RepliesI need to get list of all block reference in a drawing without iterating through all entities in the drawing.
View 7 Replies I'm using Architecture 2011, but the problem is pretty generic.
I am working with a very complex vendor drawing and using it as an xref to my working drawing. I need to be able to freeze parts of the xref and change colors (for plotting purposes) of other parts. Under ideal circumstance this would require simple layer manipulation.
My problem is that a large percentage of the vendor drawing is made up of blocks. There are nearly 1000 different blocks. Most of these blocks were created using layers other than 0 - quite often more than one layer is used. Sometimes the block is inserted on a layer that was used in it's creation, sometimes not. The only way I can omit one of these blocks from my drawing is to figure out what layer was used in it's creation and freeze that layer. You can see how this could be a pretty tedious process.
My limited CAD knowledge only gives me: edit all 1000 blocks, changing them to layer 0
I am trying to write a function to insert a block reference of a block definition which is already stored in the same drawing.
All threads are leads me to the way of inserting another drawing to current drawing with use of database.readdwgfile & database.insert.
How to use those methods for a block definition stored in the same drawing.
I am getting this error in my production drawings.
My setup is as follows:
- EG.dwg has my existing surface in it. I create a data reference to use it in other drawings.
- Level One.dwg has the EG surface data referenced in, and I use this to create alignments, profiles, and finish surface. All of these are turned in to data references.
- Storm Sanitary.dwg has my pipe designs. I data reference in the two surfaces, profiles, and alignments, and create pipe networks. I create references for these networks.
- Plan Profile.dwg is the production sheet I'm getting this error from. Every one of my civil objects is data referenced in to this drawing. Everything is inserted correctly, the pipes show correct FG surface elevations for their rims, etc.
BUT when I open this drawing, I get this error. I assume it's because my FG surface is not directly in the storm sanitary.dwg.
How do I get rid of this error, without combining drawings, or promoting the surface to one or more drawings? Isn't this exactly what data references is made for?
I'm trying to change block the definition of an block reference.
I did something like this:
blockreference.BlockTableRecord = newBlock.ObjectId;
In most cases this works well. However I found a case that it not work as well. When I try to change the definition from a new block that I have created in my test DWG, it disappears from the model.
I have a block: “Block_A”. I am trying to determine if a block reference of the block exist.
Currently I would iterate every block Reference in the Block Table, and then dig deep into each block ref . . . . .
I was wondering if I could just take “Block_A” and see if it has reference and where the references are. Perhaps this is just wishful thinking but I was hoping for a faster way to obtain the references then to iterate thousands of blocks in each table record.
Drawing contains a block with "BlkName". I want to insert blockreferences of this existing block using .Net. All shows how to insert a new block and then use the BlockID returned by the insert function. In my case I only have the block name and there is no Block id. How to get it or how to create a block reference of an existing block?
View 3 Replies View RelatedI have a weird problem with exploding block reference with vb.net as follows.
When I use BR.explode(DBObjectCollection), and append the entities in the object collection to model space,
the 3d Polylines inside the block reference do not get appended and I do not get any kind of error. The reason for this eludes me as of yet. (remember, simple polylines and lines and other objects do get appended to model space)
When I use BR.explodetoOwnerSpace(), the block reference explodes as it normally is expected to, but then I have no way to collect the objects from the exploded BR.
I'm working with two different drawings to import Layers for Lot Grading and when I'm importing the Block Reference from the origin file, it's setup as Linescale 0.5, but when I import into my regular basemap, which is setup for Linescale 1, the text size is double what it should be.
View 1 Replies View RelatedI'm trying to write a vb script to extract information from the CAD drawing. While testing, i found that for some drawing blocks, the corresponding AcadBlockReference Rotation returns 1.57, but when i look at the actual drawing, block properties, the rotation is 0.
View 3 Replies View Relatedi need to use something with similar effect to Editor's method SelectCrossingWindow, but i need it to select object in Block Reference. How can i do that?
View 5 Replies View RelatedI have a block reference in a dwg that is a like a form, for example:
Written By: Diogo
Author: Diogo
Date: 13-07-2012
State: Check-in
In autocad this is a block, and on the attributes of the block reference I only can edit State and Author, and i would like to get all values. Because i want to fill those values of Written By, Author, Date and State by code. I can reach the attribute collection of the block but i only can see the State and Author.
is ter any way to explode a reference block
View 4 Replies View RelatedI 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 wonder if this can be done. i have a number of blocks which have labels to them i.e. JW1, JW2, JW3 etc. which corresponds to the block name. Is it possible to have the label automatically referenced to the block name so if i change the block name to JW10 the label within the block changes to JW10 as well.
View 4 Replies View RelatedI get a block reference (has attribute) from other drawing as code follow:
Public Sub GetBlock_Info() Dim blockName As String = "test" Try Dim doc As Document = Application.DocumentManager.MdiActiveDocument Dim doclock As DocumentLock = doc.LockDocument() Dim ed As Editor = doc.Editor Dim ofd As New OpenFileDialog("Select Drawing", Nothing, "dwg; dwt", "ATS detai drawing", Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.DoNotTransferRemoteFiles) Dim dr As
[code]..........
i have a .dwg fille with some block reference.
I want to fill color for block reference, but when I debug to hatch.appendloop function, I get message eInvalidInput, and block don’t fill color.
This is my
[CommandMethod("FillColor")]
public void FillColor()
{
Document doc =
Application.DocumentManager.MdiActiveDocument;
Editor ed =
doc.Editor;
Database db =
HostApplicationServices.WorkingDatabase;
Transaction tr =
db.TransactionManager.StartTransaction();
[Code]....
I have an issue regarding nested entity.
I have a nested entity block reference. In this entity I have three blocks. if I change any of the block reference attribute definition in the nested block reference then it is changing the original block itself.
Actually I am getting the handle of the selected block reference in the nested Entity. and change the attribute reference later. but it is making change in the block itself and other block reference too.
Here is my
static public void CONTACTS()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
string contactName = string.Empty;//to hold contact name, from xdata
[code].......
I have tried to use intersectwith to locate text (MText or DBText) near a block reference. Some times it works and some times it does not. The hard part for me is understanding why it occasionally works when most examples are just duplicates with modified text and attributes.
My block reference has 4 attributes to the left (Right Justified) of a circle and 2 attributes inside the circle. The text objects are used by some CAD operators instead of the upper 2 lines of attributtes. (Guess they dont know how to modify attributes) I want to locate these texts and insert text into the corresponding attribute.
Block Reference:
Att 1 |'''''''| <-- CAD User will insert a txt over Att 1 and Att 2,
Att 2 | | <-- both attributes are usally left blank or contain a space
Att 3 | |
Att 4 |.....|
I have text in my title block that references part properties. If I have several different part and assembly base views on a sheet, how do I control which one the title block references? It defaults to the first one that was placed. I am using 2011 Pro.
View 1 Replies View RelatedIs is possible to get the block handle from an attribute reference? I get the attribute reference from a previously stored attribute collection. I did try attref.BlockId.Handle.Value.ToString(), but it gives a different value, not the block's id.
View 2 Replies View RelatedI need to select a block in AutoCAD, and move it up or down vertically. I can get to the point where I have the user select a particular block, but after that, how do I get a reference to the block selected so I can move it up or down?
View 1 Replies View RelatedI have a block that I use as hatch (using superhatch), so the block appears several times. At the border of the hatch I want to fix some of the lines.
If I try to ungroup & explode the hatch, then the block appears outside of the hatch boundry.
So my question is if I can fix the lines so the hatch remains whole.
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.
AutoDesk 2014 . I am currently trying to design in iphone case. So I downloaded a replica iPhone from grab cad:
[URL]
I imported it and formed a solid around it, now I am trying to subtract the phone from the solid so it perfectly fits within the case. It will not let me subtract it though because the phone is a reference block and the square around it is a solid.
I create a set of points in a drawing and create each point as a block reference containing the point, text and probably something else. Also I would like to use different symbols for points and each of the symbols is defined as a block definition, and for each point I create a block reference according to the symbol type. The question is if is there any way to "combine" block definitions/references? I mean, I have common block definition for all points, whis defines somethin common for all of them. Also I have different symbols for each type of points and each symbol is defined separately as a block. But when a final point is created (containing common definitions and type-dependent symbol) I want to have it as a single block.
View 5 Replies View RelatedI'm a newbie in dotnet and want to now if is possible to iterate through items of a block reference.
My problem is the following : I explode a block reference in dotnet (it works well) and I want to change the items layer that compose the bloc reference. It's the reason why i need to browse items of this block.
I'm trying to use a Selection Filter on Block Reference XData value. But I get no hits, it works fine with Lines and Polylines that has the same kind of XData.
Is it a bug or do I have to define my Selection Filter differently when working with Block Reference?
Here is a part of the code :
TypedValue[] flt = new TypedValue[]
{
new TypedValue(-4, " new TypedValue(-4, " new TypedValue(8, "POLYLINE_LAYER"),
new TypedValue(1001, "Object_Id"),
new TypedValue(1000, "166448"),
new TypedValue(-4, "AND>"),
[code].......
I have a small vba sub wich changes the color and layer of all entities inside a block. It seems to work pretty well for the majority of blocks, but then if I try that on a dynamic block, the definition is correctly altered, but the references aren't updated...
I know for a fact that the definition has been correctly modified because if I type bedit, I can see the definition is modified. Then, in the block editor, if I save the block, the references are correctly updated.
How to force references to update after I made the modifications inside the definition ?
I searched for methods within the VBA Reference and I tried blockRef.Update but it doesn't seem to have any effect.
I inserted a block from a dwg drawing with the following method:
public static ObjectId InsertBlock(string fileName, Point3d insPoint) { var acadDoc = Application.DocumentManager.MdiActiveDocument; var blockId = default(ObjectId); using (var acadLockDoc = acadDoc.LockDocument()) { var dbTemp = new Database(false, true); dbTemp.ReadDwgFile(fileName, FileShare.Read, false, ""); var blockName = Path.GetFileNameWithoutExtension(fileName);
[code]........
how to turn off the Block Reference Dialogue Box that appears when you put your cursor over and object or text?
View 2 Replies View Related