I'm trying to add an attribute to an entity, however it seems that the AttributeDefinition requires a Point3d and as such appear in my modelspace. I don't want this, i just wanted it to appear as an attribute with a value when i click on my entity, is there any way of making it so that i does not add into modelspace?
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);for (int i = 0; i < prSelectionResult.Value.Count; i++){ // Get the entity the user had selectedEntity ent = (Entity)trans.GetObject(prSelectionResult.Value[i].ObjectId, OpenMode.ForWrite);if (ent.GetType() == typeof(BlockReference)) { // Add attribute to layerBlockReference blockRef = (BlockReference)ent;.
[code]...
Can you add an attribute to a non-blocked entity? Basically, I want to "name" plines.
In case I'm going about this wrong, let me ask the question another way. I'm just getting used to the wonders of attributes & data extraction (I love it!). Right now I have blocks with attributes that I use data extraction to count. I also need some way to calculate length. These blocks represent electrical devices - then I need to calculate the amount of wire used to connect the devices.
So now I use a pline to join the devices, get the length of that polyline, and then manually enter that length into the spreadsheet from the data extraction. But...I'm thinking if I can link an attribute to a pline, then I can include that in the data extraction and automate it. But I don't see how I can use a block for this, since the pline will be completely variable and needs to be "custom-fit" for each circuit.
I am trying to add an entity on a new drawing (document) with a new layer.
Following is the code snippet I have right now.
[CommandMethod("TEST")] public void Test() { Document newDoc = Application.DocumentManager.Add("acad"); Database db = newDoc.Database; DocumentLock docLock = newDoc.LockDocument(); try { using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as [code]..........
PTPUtils.CreateLayer() method creates a new layer in the given DB. However, the code gives me an "eKeyNotFound" exception in the line p.Layer = newLayer.
If I remove the p.Layer line, the code works very well. But the entity only goes to the default layer "0".
My code add xdata to any object properly except for a dynamic block with attribute. After code excutes it disappears from screen . Even undo make strange thing. I guess I screw the database somehow. But even audit doesn't show any fix applied.
Attach is a sample drawing. And below is my code.
<CommandMethod("pppp")> _ Shared Sub test1() Dim Mydwg As Document = Application.DocumentManager.MdiActiveDocument Dim Mydb As Database = Mydwg.Database Dim Myed As Editor = Mydwg.Editor Dim MyRegisterApplication As String = "My_R_Cad" [code].....
I am adding a center aligned attribute to a drawing that is not open in the autocad editor. the alignment works if i call the function from the main thread like this.
But if the method is executed on another thread (which it is when handling a msmq message) then the attribute is added but the alignment doesn't display even though the property is set (and can be verified in the attribute editor).
How can i get the attribute alignment to work in another thread?
code is below:
public class Do { public static void AddAttribute() { var path = @"c:WAM444B4-002.dwg"; using (var database = new Database(false, true)) { database.ReadDwgFile(path, FileShare.ReadWrite, false, password: ""); Transaction transaction = null; try {
Is there a way to edit the an attribute data if it is defined as number to add a value of .3 to the number being displayed in this attribute box. The feature is a point and i'm looing to add the .3 value to elevation attribute value that weren't pulled from a surface or created using object data.
Any routine where I could keep picking on my exit arrow blocks (showing how many persons exiting from each space) one-by-one and the program would add up the numbers. For example I pick on blocks with numbers of 2, 4 & 3 and I would get 9.
I am using ACAD Civil3d 2014. I have the map utility loaded
I created a drawing for a client and created blocks to represent handholes. They now need to go back to the blocks and add the HH number and fiber size. How can I add to blank att fields to the blocks so that I can send them the drawing and have them enter the information manually?
I searched around and only see solutions for adding attribute labels to the block.
In VBA, how can I batch convert field attributes in blocks to text attributes while retaining the blocks? Is there a simple way to univerally convert them all at onceusing VBA? The plotted values for the fields must be retained, too.
Explode will not retain the value of the field.
Burst will not work as it explodes the blocks as well.
You can right-click on the field and slelct "Convert to text" from the RCM. So I know that the process exists within CAD, just need to batch the process for a quantity of DWGs at a time - in VBA.
Background: Someone exploded an attribute block and copied it hundreds of times throughout a project, each time changing the Attribute Tag to match the Value they expected to appear in their drawing. The drawing must be xrefed, so the attribute definitions do not appear.
(There is only 1 attribute in the block.)
Proposed Solutions:
1:AutoLISP routine which copies Tag data from Attribute Definition into Value of Attribute Block:
Prompt-Select Attribute Definition
Copy Tag data
Prompt-Select Attribute Block
Paste data into Value
(Allow repeat to speed workflow)(*PREFERRED*)
2:AutoLISP routine which copies Tag data from Attribute Definition into Default Value and creates a new Block:
Prompt-Select Attribute Definition
Copy Tag data
Paste data into Default Value
Create New Block
(Select Multiple Objects)(Creates tons of new blocks which are messy)
I am using M Text Attributes to store imperial lengths in the drawing, feet inches and fractions (stacked). When I read back the Text String property which, is the M text Attribute.Contents parsed, I am having problems because the parser does not add a space between the inch and the fraction. So, is there any setting that could be used to tell the parser to add the space between the inch and the fraction?
creating a block with attributes. I did manage to get my block set up and inserted in a dwg, but I am unable to change the "value" of any attribute. Unless I click on the "..." button next to the value field.
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.
I want to copy attribute values. I'm making a catalogue of all the reinforcements in my drawing so I need to name those reinforcements. So what I want is to make a string of text that I don't need to totally modify everytime. Something like this:
Amount of reinforcement bars - 5 Diameter of the reinforcement - 12 Division of reinforcing bars - 100 Reinforcement bars: 5-T12-k100
So the only attributes I'd edit would be the first three not the last one. So how can this be accomplished?
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")
I need to export points from 3D map as a .shp file so I can bring them into Maya and have them line up exactly where they need to be based on their coordinates. The points line up pretty close to right in map 3d, and they have a style assigned to them. When I go to the Map --> Tools --> Export, I choose .shp as the file output, and go through and select the layer I need to export. When I've got everything set up, I get an error message saying "no entity to export." I have searched on the internet for this error but not a lot comes up. I'm not sure what I'm missing in order to make the points export.
Simple example, when overrule Line entity to draw three entities Line, Text, Circle when selecting overruled Line is it possible to identify what object have been selected (in this example it could be Line, Text, Circle).
I have a method DrawMLeaderLine(Database db, Transaction tr, Point3d point, string text) that draws me a MLeader line to the given point with the given text as annotation. The MLeader line points to the midpoint of a Line entity. What I need is a binding between the Line midpoint and the MLeader line, so when I move or resize the Line, the MLeader line should follow! I already tried to solve that, using constraints, but it doesn't work for Leaders.
This is my code...
public static MLeader DrawMLeaderLine(Database db, Transaction tr, Point3d point, string text) { Point3d mTextLocation = point + new Vector3d(5, 5, 0); BlockTableRecord btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord; MText mText = new MText(); mText.SetDatabaseDefaults(); mText.SetContentsRtf(text); [code]........
will be called from a different class...
Line line = DrawingUtil.DrawLine(doc.Database, tr, closestPoints.Item1, closestPoints.Item2); //Get midpoint of line double midPointX = (line.EndPoint.X + line.StartPoint.X) / 2.0d; double midPointY = (line.EndPoint.Y + line.StartPoint.Y) / 2.0d; Point3d midPointOfLine = new Point3d(midPointX, midPointY, 0); //Draw the leaderline MLeader leaderLine = DrawingUtil.DrawMLeaderLine(doc.Database, tr, midPointOfLine, "Connection");
is there any way to check the entity selected by NonInteractivePickPoint? iwant to get the ownerid if the item selected is a 3d or 2d vertex. How is it written in vb.net?
I have a client that just started using C3D 2010. When I sent him a topographic survey with contour lines (I am also using C3D 2010) he called me and asked if there was a way to select an individual contour line and have it display the elevation in the 'properties' dialog box. I have not been able to find an answer for him.
For AutoCAD 2006, I have an entity that I am changing properties of, but I cannot figure out how to set the colormethod to "By Layer." I am sure that I am missing something, but I am at my wit's end.